CentOS7에서 NFS 서버 구축하기: 호스트 간 파일 공유 완전 정복

1. 준비물과 NFS 기본 개념

안녕하세요, 오늘은 Linux 환경에서 가장 많이 활용되는 네트워크 파일 시스템인 NFS를 CentOS 7에서 구축하는 방법을 다루겠습니다. 여러 台의 CentOS 7 서버나 가상머신이 있을 때, 로컬 폴더처럼 파일을 공유해야 하는 경우가 많습니다. 팀 협업용 코드 저장소, 중요 데이터 백업, 또는 Docker 컨테이너 간 공유 볼륨 등 NFS는 이러한 요구사항을 충족하는 최적의 솔루션입니다. NFS(Network File System)는 네트워크를 통해 원격지의 디렉토리를 로컬처럼 마운트할 수 있게 해주는 프로토콜입니다. 서버(서버측)에서 특정 디렉토리를 네트워크에 노출하면, 클라이언트측에서 해당 디렉토리를 자신의 파일 시스템의 빈 디렉토리에 마운트할 수 있습니다. 클라이언트에서 파일을 생성, 수정, 삭제하는 작업은 모두 서버측의 실제 디렉토리에 반영됩니다. Windows의 SMB/CIFS와 유사한 역할을 수행하지만, Linux/Unix 환경에서는 NFS가.native으로 지원되어 더优异的 성능을 발휘합니다. 구축 환경은 다음과 같이 가정합니다. CentOS 7이 설치된 서버가 최소 2대 이상 필요하며, 서로 네트워크 통신이 가능해야 합니다. 서버 IP를 10.0.0.10, 클라이언트 IP를 10.0.0.20으로 설정하며, 두 머신 간 ping 통신이 원활해야 합니다. 하나의 물리 머신에서 가상머신으로 테스트하는 것도 가능합니다.

2. 서버측 구축: 공유 저장소 설정

2.1 필수 패키지 설치

서버에서 NFS를 구동하려면 nfs-utils 패키지를 설치해야 합니다. CentOS 7의 기본 저장소에 포함되어 있어 yum 명령어로 간단히 설치할 수 있습니다:
yum install -y nfs-utils
이 명령 하나로 NFS 서버와 클라이언트에 필요한 모든 도구가 설치됩니다. -y 옵션은 설치 과정에서의 확인 프롬프트를 자동으로 통과시키기 위한 것입니다. 참고로, CentOS 6 이하 버전에서는 rpcbind를 먼저 설치해야 했지만, CentOS 7에서는 nfs-utils 설치 시 의존성으로 자동 설치되므로 별도 작업이 필요 없습니다. rpcbind는 NFS의 RPC(Remote Procedure Call) 포트 매핑을 담당하는 중요한 서비스입니다.

2.2 /etc/exports 설정 파일 이해하기

NFS 서버의 핵심 설정은 /etc/exports 파일에 있습니다. 이 파일은 어떤 디렉토리를 어떤 클라이언트에게 어떤 권한으로 공유할지를 정의합니다. 파일이 비어있거나 존재하지 않으면 새로 생성하면 됩니다:
vim /etc/exports
다음은 일반적인 설정 예시입니다:
/mnt/nfsdata 10.0.0.0/24(rw,sync,no_root_squash)
설정 형식은 세 가지 요소로 구성됩니다: 첫 번째 요소: 공유 디렉토리 경로 서버에서 네트워크에 노출할 디렉토리의 절대 경로입니다. 예를 들어 /mnt/nfsdata 같은 전용 디렉토리를 생성하여 사용하는 것이 좋습니다. 해당 디렉토리가 존재하지 않으면 mkdir 명령어로 미리 생성해야 합니다:
mkdir -p /mnt/nfsdata
두 번째 요소: 허용 클라이언트 지정 어떤 클라이언트가 이 공유 디렉토리에 접근할 수 있는지 지정합니다. 10.0.0.0/24는 CIDR 표기법으로 10.0.0.1부터 10.0.0.254까지의 서브넷에 속한 모든 클라이언트를 허용합니다. 특정 단일 클라이언트만 허용하려면 10.0.0.20으로 명시하면 됩니다. 모든 클라이언트를 허용하려면 *를 사용하지만, 이는 테스트 환경에서만 권장됩니다. 세 번째 요소: 권한 옵션 괄호 안에 다양한 옵션을 지정할 수 있습니다:
  • rw: 읽기/쓰기 권한 허용
  • ro: 읽기 전용 권한
  • sync: 동기식 쓰기 모드 (데이터를 즉시 디스크에 기록)
  • async: 비동기식 쓰기 모드 (성능 향상 but 데이터 손실 위험)
  • no_root_squash: 클라이언트의 root 사용자를 서버의 root로 인식 (보안 주의)
  • root_squash: 클라이언트의 root 사용자를 nobody로 매핑 (기본값, 보안 강화)
  • all_squash: 모든 사용자를 nobody로 매핑
권한 옵션은 쉼표로 구분하여 조합할 수 있습니다. 개발 환경에서는 (rw,sync,no_root_squash) 조합이 자주 사용되지만, 실제 운영 환경에서는 (rw,sync,root_squash) 또는 (ro,sync)를 권장합니다.

태그: CentOS7 nfs network-file-system linux server-configuration

6월 7일 18:58에 게시됨