Linux에서 NFS 공유를 호스팅하는 방법

리눅스 환경에서 파일 접근의 주된 방법 중 하나는 삼바(Samba)를 사용하는 것입니다. 많은 사용자들이 NFS(Network File System) 설정이 복잡하다고 느끼기 때문에 삼바를 선호합니다. 삼바나 FTP와 비교했을 때, NFS는 설정 단계가 다소 복잡하게 느껴질 수 있습니다. 하지만 많은 리눅스 사용자들이 NFS의 뛰어난 기능과 활용성을 간과하는 것은 안타까운 일입니다. 이 글에서는 NFS 서버 설정의 어려움을 해소하고, 리눅스에서 NFS 공유를 호스팅하는 방법에 대해 자세히 알아보겠습니다.

설치

일반적으로, 각 리눅스 배포판은 약간의 차이는 있지만 유사한 NFS 도구를 제공합니다. NFS 설정을 위해 터미널을 열고 시스템에 필요한 패키지를 설치해야 합니다. 이 패키지들은 서버 운영에 필요한 기본 기술을 설치하고, 기본 설정 파일을 생성하며, 때로는 다른 요소들도 구성합니다.

주요 리눅스 배포판별 설치 명령어

우분투 (Ubuntu)
sudo apt install nfs-kernel-server
페도라 (Fedora)
sudo dnf install nfs-utils system-config-nfs
아치 리눅스 (Arch Linux)
sudo pacman -S nfs-utils
데비안 (Debian)
sudo apt-get install nfs-kernel-server
오픈수세 (openSUSE)
sudo zypper install nfs-kernel-server

만약 사용하고 있는 운영체제가 위에 언급되지 않았다면, 패키지 관리자를 통해 “nfs utils”를 검색하거나 해당 운영체제의 위키 문서를 참조하면 쉽게 필요한 패키지를 찾을 수 있습니다.

시스템 서비스 활성화

NFS 서버 설정은 사용 중인 리눅스 배포판에 따라 다를 수 있습니다. 우분투나 데비안의 경우, NFS 패키지 설치 시 systemd 서비스가 자동으로 설정 및 구성되지만, 아치 리눅스, 수세, 페도라 등 일부 배포판에서는 사용자가 직접 서비스를 활성화해야 합니다. 아래는 서비스를 활성화하는 방법입니다.

아치 리눅스, 수세, 페도라 또는 NFS용 systemd 서비스를 자동으로 설정하지 않는 배포판에서는 터미널을 열고 다음 명령어를 입력하여 서비스를 활성화할 수 있습니다.

sudo systemctl enable rpcbind
sudo systemctl enable nfs-server
sudo service rpcbind start
sudo service nfs-server start

NFS 서버 구성

NFS 패키지를 설치하면 서버가 “설정”되지만, 바로 사용할 수 있는 상태는 아닙니다. 사용자는 공유할 파일 경로, 내보내기 설정 등을 구성해야 합니다. 우선 터미널에서 루트 권한을 얻어야 합니다. 다음 명령어를 사용하세요: sudo -s

내보내기 파일은 다양한 디렉토리를 처리할 수 있습니다. 공유하고자 하는 폴더의 경로를 직접 지정할 수 있지만, 이는 보안상 위험할 수 있습니다. 따라서, 한 디렉토리의 내용을 다른 디렉토리에 바인딩하는 방식이 더 안전합니다. 이 방법은 `/srv/` 폴더 내의 폴더 및 디렉토리의 권한을 수정할 필요 없이 모든 것을 안전하게 관리할 수 있도록 도와줍니다.

예를 들어, 사용자의 사진 폴더를 NFS 공유로 설정하려면 다음과 같이 진행합니다.

mkdir -p /srv/nfs/pictures /home/username/Pictures/
mount --bind /home/username/Pictures/ /srv/nfs/pictures/

위의 예시를 바탕으로 원하는 만큼의 바인드 마운트를 생성할 수 있습니다. 홈 폴더 외에도 다양한 경로를 마운트할 수 있습니다. 필요에 따라 자유롭게 응용해보세요.

모든 설정이 완료되었다면, 다음 명령어를 사용하여 마운트를 영구적으로 설정합니다.

echo '#NFS Pictures Bind Mount' >> /etc/fstab
echo '/home/username/Pictures/ /srv/nfs/pictures/ none bind 0 0' >> /etc/fstab

참고: `echo` 명령은 실제 사용자의 설정에 맞게 변경해야 합니다.

마운트 설정이 완료되었다면, 이제 내보내기 구성 파일을 설정할 차례입니다. 내보내기 파일은 NFS가 공유할 각 파일 공유를 지정하는 중요한 파일입니다.

nano /etc/exports

내보내기 파일 내에서 맨 아래에 다음과 같은 내용을 추가합니다.

/srv/nfs/pictures/ 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

필요에 따라 여러 줄을 추가할 수 있습니다. 각 공유에는 고유한 마운트, `/etc/fstab` 항목, 그리고 `/etc/exports` 항목이 필요합니다.

참고: 변경 사항을 저장하려면 `CTRL + O` 키를 누르세요.

변경 사항 적용

NFS 서버가 실행 중이고 파일이 올바른 위치에 있으며, 모든 것이 준비되었다면, 이제 내보내기 파일의 변경 사항을 업데이트해야 합니다. NFS 서버가 실행 중인 동안에는 변경 사항이 자동으로 반영되지 않으므로 이 과정은 매우 중요합니다. 다음 명령어를 사용하여 변경 사항을 적용합니다: `exportfs -rav`

필요에 따라, `systemctl restart` 명령을 사용하여 systemd 내에서 서버 프로세스를 다시 시작할 수도 있습니다.

sudo systemctl restart nfs-server

결론

네트워크 파일 시스템(NFS)은 매우 유용한 도구입니다. 원격 파일 및 디렉토리를 마치 로컬 하드 드라이브처럼 편리하게 사용할 수 있도록 해줍니다. NFS는 경쟁하는 네트워크 파일 시스템 도구에 비해 뛰어난 편재성과 유연성을 제공합니다.

이러한 유용성에도 불구하고, 많은 사용자들이 삼바를 더 선호합니다. 이는 NFS 설정이 다소 복잡하고 번거로울 수 있기 때문입니다. 그러나 이 복잡한 설정 과정을 극복하면, NFS는 매우 강력하고 유용한 도구가 될 것입니다.