웹사이트 검색

Ubuntu 14.04에서 NFS 마운트를 설정하는 방법


소개

NFS(네트워크 파일 시스템)는 서버에 원격 디렉토리를 마운트할 수 있는 분산 파일 시스템 프로토콜입니다. 이를 통해 다른 위치의 저장 공간을 활용하고 여러 서버에서 동일한 공간에 쉽게 쓸 수 있습니다. NFS는 정기적으로 액세스해야 하는 디렉토리에 적합합니다.

이 가이드에서는 Ubuntu 14.04 서버에서 NFS 마운트를 구성하는 방법을 다룹니다.

전제 조건

이 가이드에서는 두 개의 Ubuntu 14.04 서버 간에 디렉터리 공유를 구성합니다. 이들은 어떤 크기도 될 수 있습니다. 이러한 각 서버에 대해 sudo 권한으로 설정된 계정이 있어야 합니다. Ubuntu 14.04 서버에 대한 초기 설정 가이드의 1-4단계에 따라 이러한 계정을 구성하는 방법을 배울 수 있습니다.

이 안내서의 목적을 위해 우리는 디렉토리를 공유할 서버, 즉 호스트와 이러한 디렉토리를 클라이언트로 마운트할 서버를 참조할 것입니다.

가이드 전체에서 이를 바로잡기 위해 다음 IP 주소를 호스트 및 서버 값의 대용으로 사용합니다.

  • 호스트: 1.2.3.4
  • 클라이언트: 111.111.111.111

위의 값을 자신의 호스트 및 클라이언트 값으로 대체해야 합니다.

구성 요소 다운로드 및 설치

시작하기 전에 호스트 및 클라이언트 서버 모두에 필요한 구성 요소를 설치해야 합니다.

호스트 서버에서 nfs-kernel-server 패키지를 설치해야 디렉터리를 공유할 수 있습니다. 이 세션에서 apt로 수행하는 첫 번째 작업이므로 설치 전에 로컬 패키지 인덱스를 새로 고칩니다.

sudo apt-get update
sudo apt-get install nfs-kernel-server

이러한 패키지가 설치되면 클라이언트 컴퓨터로 전환할 수 있습니다.

클라이언트 컴퓨터에 서버 구성 요소를 포함하지 않고도 NFS 기능을 제공하는 nfs-common이라는 패키지를 설치해야 합니다. 다시 한 번 최신 정보를 확보하기 위해 설치 전에 로컬 패키지 인덱스를 새로 고칩니다.

sudo apt-get update
sudo apt-get install nfs-common

호스트 서버에서 공유 디렉토리 생성

이 가이드를 진행하는 동안 두 개의 별도 디렉토리를 공유하는 실험을 할 것입니다. 공유할 첫 번째 디렉터리는 사용자 데이터가 포함된 /home 디렉터리입니다.

두 번째는 적절한 절차와 설정을 시연할 수 있도록 NFS용으로 특별히 생성할 범용 디렉토리입니다. 이것은 /var/nfs에 있습니다.

/home 디렉토리가 이미 존재하므로 /var/nfs 디렉토리를 생성하여 시작하십시오.

sudo mkdir /var/nfs

이제 원격 호스트와 공유하기 위해 특별히 지정된 새 디렉터리가 있습니다. 그러나 디렉토리 소유권은 이상적이지 않습니다. nobody라는 시스템의 사용자에게 사용자 소유권을 부여해야 합니다. nogroup이라는 시스템의 그룹에도 그룹 소유권을 부여해야 합니다.

다음 명령을 입력하면 됩니다.

sudo chown nobody:nogroup /var/nfs

공유를 위해 특별히 사용되는 디렉토리의 소유권만 변경하면 됩니다. 예를 들어 /home 디렉토리의 소유권을 변경하고 싶지 않을 것입니다. 호스트 서버에 있는 모든 사용자에게 많은 문제를 일으킬 수 있기 때문입니다.

호스트 서버에서 NFS 내보내기 구성

이제 디렉터리를 생성하고 할당했으므로 NFS 구성 파일을 살펴보고 이러한 리소스의 공유를 설정할 수 있습니다.

루트 권한으로 텍스트 편집기에서 /etc/exports 파일을 엽니다.

sudo nano /etc/exports

표시되는 파일에는 각 구성 행의 일반 구조를 보여주는 몇 가지 주석이 있습니다. 기본적으로 구문은 다음과 같습니다.

<예비>

그래서 우리는 공유하고자 하는 각 디렉토리에 대한 라인을 만들고 싶습니다. 이 예에서 또는 클라이언트가 111.111.111.111의 IP를 가지고 있으므로 행은 다음과 같이 표시됩니다.

<예비>

여기서는 활성화한 특정 옵션을 제외하고 모든 것을 설명했습니다. 이제 그것들을 살펴보겠습니다.

  • rw: 이 옵션은 클라이언트 컴퓨터에 볼륨에 대한 읽기 및 쓰기 액세스를 모두 제공합니다.
  • 동기화: 이 옵션은 NFS가 회신하기 전에 변경 사항을 디스크에 기록하도록 합니다. 응답이 원격 볼륨의 실제 상태를 반영하므로 결과적으로 보다 안정적이고 일관된 환경이 됩니다.
  • no_subtree_check: 이 옵션은 모든 요청에 대해 내보낸 트리에서 파일이 실제로 여전히 사용 가능한지 여부를 호스트가 확인해야 하는 프로세스인 하위 트리 검사를 방지합니다. 이로 인해 클라이언트가 파일을 연 상태에서 파일 이름을 바꾸면 많은 문제가 발생할 수 있습니다. 거의 모든 경우 하위 트리 검사를 비활성화하는 것이 좋습니다.
  • no_root_squash: 기본적으로 NFS는 루트 사용자의 요청을 원격으로 서버의 권한이 없는 사용자로 변환합니다. 이것은 클라이언트의 루트 계정이 호스트의 파일 시스템을 루트로 사용하는 것을 허용하지 않음으로써 보안 기능으로 간주되었습니다. 이 지시문은 특정 공유에 대해 이를 비활성화합니다.

변경을 마쳤으면 파일을 저장하고 닫습니다.

다음으로 다음을 입력하여 공유 내보내기를 보관하는 NFS 테이블을 생성해야 합니다.

sudo exportfs -a

그러나 NFS 서비스는 아직 실제로 실행되고 있지 않습니다. 다음을 입력하여 시작할 수 있습니다.

sudo service nfs-kernel-server start

이렇게 하면 구성한 클라이언트에서 공유를 사용할 수 있습니다.

탑재 지점 생성 및 클라이언트 서버에 원격 공유 탑재

이제 호스트 서버가 구성되고 디렉터리 공유를 사용할 수 있게 되었으므로 클라이언트를 준비해야 합니다.

원격 공유를 마운트해야 하므로 몇 가지 마운트 지점을 생성해 보겠습니다. 기존의 /mnt를 시작점으로 사용하고 그 아래에 nfs라는 디렉터리를 만들어 공유를 통합합니다.

실제 디렉토리는 호스트 서버의 위치와 일치합니다. 다음을 입력하여 각 디렉토리와 필요한 상위 디렉토리를 만들 수 있습니다.

sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs

이제 원격 공유를 배치할 수 있는 장소가 있으므로 호스트 서버의 주소를 지정하여 마운트할 수 있습니다. 이 가이드에서는 다음과 같이 1.2.3.4입니다.

<예비>

이들은 호스트 컴퓨터에서 클라이언트 컴퓨터로 공유를 마운트해야 합니다. 클라이언트 서버에서 사용 가능한 디스크 공간을 확인하여 이를 다시 확인할 수 있습니다.

<예비>

하단에서 볼 수 있듯이 우리 주식 중 하나만 표시되었습니다. 이는 우리가 내보낸 두 공유가 원격 서버의 동일한 파일 시스템에 있기 때문입니다. 즉, 동일한 스토리지 풀을 공유합니다. AvailUse% 열의 정확성을 유지하려면 하나의 공유만 계산에 추가할 수 있습니다.

마운트한 모든 NFS 공유를 보려면 다음을 입력하십시오.

<예비>

그러면 클라이언트 시스템에서 현재 액세스할 수 있는 모든 NFS 마운트가 표시됩니다.

NFS 액세스 테스트

공유에 무언가를 작성하여 공유에 대한 액세스를 테스트할 수 있습니다. 다음과 같이 공유 중 하나에 테스트 파일을 작성할 수 있습니다.

sudo touch /mnt/nfs/home/test_home

중요한 차이점을 보여주기 위해 다른 공유에도 테스트 파일을 작성해 보겠습니다.

sudo touch /mnt/nfs/var/nfs/test_var_nfs

마운트된 홈 디렉토리에서 파일의 소유권을 확인하십시오.

ls -l /mnt/nfs/home/test_home
-rw-r--r-- 1 root   root      0 Apr 30 14:43 test_home

보시다시피 파일은 루트가 소유하고 있습니다. 루트가 아닌 익명의 사용자로 파일을 작성했을 이 마운트에서 root_squash 옵션을 비활성화했기 때문입니다.

root_squash가 활성화된 상태로 마운트된 다른 테스트 파일에서는 다른 것을 볼 수 있습니다.

ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 30 14:44 test_var_nfs

보시다시피 이 파일은 "nobody\ 사용자와 "nogroup\ 그룹에 할당되었습니다. 이것은 우리의 구성을 따릅니다.

원격 NFS 디렉토리 마운트를 자동으로 설정

원격 NFS 공유를 클라이언트의 fstab 파일에 추가하여 자동으로 마운트할 수 있습니다.

텍스트 편집기에서 루트 권한으로 이 파일을 엽니다.

sudo nano /etc/fstab

파일 맨 아래에 각 공유에 대한 행을 추가할 것입니다. 다음과 같이 표시됩니다.

<예비>

여기에서 지정하는 옵션은 fstab 파일의 NFS 마운트를 설명하는 매뉴얼 페이지에서 찾을 수 있습니다.

man nfs

이렇게 하면 부팅 시 원격 파티션이 자동으로 마운트됩니다(연결되고 공유를 사용할 수 있게 되기까지 몇 분 정도 걸릴 수 있음).

NFS 원격 공유 마운트 해제

더 이상 원격 디렉토리를 시스템에 마운트하지 않으려면 다음과 같이 공유 디렉토리 구조 밖으로 이동하고 마운트 해제하여 쉽게 마운트 해제할 수 있습니다.

cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs

이렇게 하면 원격 공유가 제거되고 로컬 저장소만 액세스할 수 있습니다.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  320K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

보시다시피 NFS 공유는 더 이상 스토리지 공간으로 사용할 수 없습니다.

결론

NFS는 네트워크를 통해 원격 시스템에 액세스하는 빠르고 쉬운 방법을 제공합니다. 그러나 프로토콜 자체는 암호화되지 않습니다. 프로덕션 환경에서 이를 사용하는 경우 SSH 또는 VPN 연결을 통해 NFS를 라우팅하여 보다 안전한 환경을 만드는 것을 고려하십시오.

저스틴 엘링우드