[RedHat] NFS 서버 구성 및 클라이언트 마운트 가이드
RHEL 기반 시스템에서 NFS 서버 설정부터 클라이언트 마운트까지 실습 기반으로 단계별 정리
리눅스에서 NFS 서버 구성 및 마운트 실습
NFS(Network File System)는 네트워크를 통해 디렉터리를 공유하는 시스템으로, 최근 가정용 NAS(Network Attached Storage)의 보급과 함께 일반 사용자에게도 익숙한 기술입니다. 특히 NAS의 핵심 기술로 사용되며, 여러 리눅스 서버 간 디렉터리를 공유하고 파일을 효율적으로 관리할 수 있도록 해줍니다.
상용 고성능 NAS를 사용하는 환경도 있지만, 일반적인 업무 환경에서는 Red Hat에서 기본 제공하는 NFS 기능만으로도 충분히 실무에 활용 가능합니다. 본 글에서는 RHEL 환경에서 NFS 서버를 구성하고 /test
디렉터리를 공유한 뒤, 클라이언트에서 이를 마운트하여 사용하는 과정을 단계별로 설명합니다.
환경
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 9
NFS 서버 구성 단계
NFS 서버를 설정하는 과정은 크게 세 가지 단계로 나뉩니다.
-
서비스 설치: NFS 관련 패키지를 시스템에 설치합니다.
-
설정 파일 편집: 공유할 디렉터리와 접근 권한을 설정합니다.
-
서비스 시작: 설정이 완료된 후 서비스를 활성화하여 적용합니다.
1. NFS 서버 설치
Red Hat 계열 리눅스에서는 기본 설치 이미지에 NFS 관련 패키지가 포함되어 있으며, 다음 명령어로 설치할 수 있습니다. CD를 이용한 레포 설정 부분은 LOCAL REPO에서 참조할 수 있습니다.
# yum install nfs-utils ... Complete!
2. NFS 공유 디렉터리 설정
NFS 서버에서 클라이언트에게 제공할 디렉터리를 설정하는 단계입니다. 이 설정은 디렉터리 생성과 내보내기(exports) 구성으로 나뉩니다.
- 공유할 디렉터리 생성
- /test 디렉터리를 공유하기 위해 빈 디렉터리를 하나 생성합니다.
[root@server ~]# mkdir /test
- /etc/exports 파일을 편집
- NFS를 통해 공유할 디렉터리를 이 파일에 정의합니다.
- 여러 디렉터리를 공유할 경우, 각 디렉터리를 별도의 줄에 선언할 수 있습니다.
[root@server ~]# echo "/test *(rw)" >> /etc/exports
설정 후 '/etc/exports' 파일의 내용을 확인합니다[root@server ~]# cat /etc/exports /test *(rw,no_root_squash)
이 과정을 통해 NFS 서버에서 디렉터리를 공유할 준비가 완료됩니다. 'rw' 옵션은 읽기 및 쓰기 권한을 부여하며, '*'는 모든 클라이언트에 대한 접근을 허용합니다.
<NFS 설정 팁 1> 설정 파일 위치
기본적으로 NFS 설정은 /etc/exports
파일을 사용하지만, 더 유연한 구성을 위해 /etc/exports.d/
디렉터리를 사용할 수 있습니다. 이 디렉터리 안의 .exports
확장자를 가진 모든 파일도 설정에 반영됩니다. 설정의 적용 여부는 'exportfs -v' 명령어를 통해 확인할 수 있습니다. 이 명령어를 실행하면 '/etc/exports' 파일뿐만 아니라 '/etc/exports.d' 디렉터리 내의 모든 '.exports' 파일에서 정의된 내보내기 설정이 표시됩니다.
아래 예제를 보면 data.exports 파일의 내보내기가 잘 진행되고 있는 걸 확인할 수 있습니다.
[root@server ~]# cat /etc/exports.d/data.exports /data *(rw) [root@server ~]# exportfs -v /data <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,root_squash,no_all_squash)
-
/etc/exports.d/*.exports
파일도 설정에 포함됨 exportfs -v
명령으로 모든 내보내기 정보를 확인 가능
NFS 설정 팁 2: 다양한 exports 설정 예시
아래는 실무 환경에서 자주 활용되는 /etc/exports
설정 예입니다.
예제 1: 특정 클라이언트에 공유
/test 172.20.0.104(rw)
-
/test
디렉터리를172.20.0.104
IP를 가진 클라이언트에게만 공유
예제 2: IP 대역 지정
/test 172.20.0.0/24(rw)
-
172.20.0.0/24
네트워크 전체에 공유
예제 3: 서로 다른 권한 설정
/test 192.168.155.76(rw) 192.168.155.92(ro)
-
192.168.155.76
: 읽기/쓰기 가능 -
192.168.155.92
: 읽기 전용
예제 4: root 권한 유지 허용
/test 192.168.155.76(rw,no_root_squash)
-
클라이언트의 root 권한을 제한하지 않음
참고:
no_root_squash
는 root 권한을 유지할 수 있게 하는 설정이며, 보안상 주의가 필요합니다. 기본값인root_squash
는 root를 일반 사용자(nobody)로 제한합니다.
추가 옵션은 다음 명령어로 확인할 수 있습니다
[root@server ~]# man exports
3. NFS 서버 시작 및 활성화
[root@server ~]# systemctl start nfs-server [root@server ~]# systemctl enable nfs-server ## 확인 [root@server ~]# systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled) Active: active (exited) since Tue 2024-04-30 10:27:51 KST; 2 days ago ...
4. 방화벽 설정 (선택 사항)
[root@server ~]# firewall-cmd --add-service=nfs --permanent success [root@server ~]# firewall-cmd --reload success
5. 현재 공유 상태 확인
서버에서 어떤 디렉터리가 공유되고 있는지 확인하려면 exportfs -v
명령을 사용합니다.
[root@server ~]# exportfs -v /test <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
출력 항목 설명:
-
/test
: 공유된 디렉터리 -
<world>
: 모든 클라이언트 접근 허용 -
괄호 속 옵션: 마운트 옵션
이 단계까지 진행하면 NFS 서버 측 설정이 완료됩니다. 다음은 클라이언트 측에서 NFS 마운트를 설정하는 방법입니다.일반적으로 NFS 서버에서는 특별한 요구사항이 없다면 기본 옵션을 사용합니다. 이는 대부분의 경우 충분한 기능을 제공합니다.
여기까지의 과정으로 NFS 서버 측의 설정이 완료되었습니다. '/test' 디렉터리가 성공적으로 NFS를 통해 공유되도록 구성되었습니다. 다음 단계는 클라이언트 측 설정입니다
클라이언트 설정
NFS 서버 설정이 완료되었다면, 클라이언트 측에서는 해당 공유 디렉터리를 마운트하여 사용할 수 있습니다.
1. 패키지 설치
서버와 마찬가지로, 클라이언트에서도 nfs-utils
패키지가 필요합니다. 단, 서비스를 실행할 필요는 없습니다.
- nfs-utils 패키지 설치
# yum install nfs-utils ... Complete!
2. NFS 볼륨 마운트 설정
NFS 볼륨 마운트는 두 가지 방식이 있습니다.
-
수동 마운트(mount 명령어): 테스트 또는 일시적인 연결 시 사용
-
자동 마운트(/etc/fstab 등록): 시스템 재부팅 시 자동 마운트 필요 시 사용
A. mount 명령어로 NFS 볼륨 마운트
- 마운트
[root@client ~]# mkdir /test [root@client ~]# mount -t nfs 192.168.155.88:/test /test
마운트가 성공적으로 되었는지 확인하려면 ‘df -h’ 명령어를 사용할 수 있습니다.
[root@client test]# df -h /test Filesystem Size Used Avail Use% Mounted on 192.168.155.88:/test 27G 15G 13G 53% /test
- 마운트 해제
[root@client ~]# umount /test
B. 재부팅 후에도 마운트 유지 (/etc/fstab 파일 수정)
/etc/fstab
파일에 등록하면 부팅 시 자동으로 NFS 볼륨이 마운트됩니다.
[root@client ~]# vim /etc/fstab ... 192.168.155.88:/test /test nfs defaults,_netdev 0 0
defaults
: 기본 마운트 옵션-
_netdev
: 네트워크가 활성화된 후 마운트하도록 지정
이 파일을 수정할 때는 주의가 필요합니다. 잘못된 설정이 있으면 시스템 부팅 시 문제가 발생하여, 부팅이 안 되고 emergency
모드로 빠질 수 있습니다. 이는 물리 서버의 경우, 직접 서버 앞에 가서 문제를 해결해야 하는 상황을 초래할 수 있습니다.
fstab 설정 테스트 방법
/etc/fstab
설정이 정확한지 확인하는 가장 안전한 방법은 실제 마운트를 시도해 보는 것입니다. 시스템 재부팅 없이도 오류를 미리 확인할 수 있습니다.
방법 1: 전체 마운트 시도
"mount -a" 명령어는 /etc/fstab 파일에 나열된 모든 파일 시스템을 마운트 합니다. 이미 마운트 된 항목은 무시되므로 안전하게 실행할 수 있습니다.
[root@client ~]# mount -a [root@client ~]# [root@client ~]# df -h | grep test 192.168.155.88:/test 27G 15G 13G 53% /test
mount -a
는/etc/fstab
의 모든 항목을 마운트합니다.-
이미 마운트된 항목은 무시되므로 안전하게 실행할 수 있습니다.
방법 2: 특정 디렉터리만 마운트
[root@client ~]# mount /test [root@client ~]# [root@client ~]# df -h | grep test 192.168.155.88:/test 27G 15G 13G 53% /test
/etc/fstab
에 정의된/test
항목만 마운트합니다.
참고: /test
디렉터리가 존재하지 않으면 다음과 같은 오류가 발생하고, 이는 시스템 부팅 실패로 이어질 수 있습니다.
[root@client ~]# mount -a mount.nfs: mount point /test does not exist
마운트 옵션
/etc/fstab
설정 항목 중 defaults,_netdev
는 가장 기본적이고 안전한 설정입니다.
192.168.155.88:/test /test nfs defaults,_netdev 0 0
defaults
: 일반적인 기본 마운트 옵션 적용-
_netdev
: 네트워크가 연결된 후 마운트 (NFS 사용 시 권장)
자세한 옵션 설명은 다음 명령어로 확인할 수 있습니다.
[root@client ~]# man mount ... _netdev The filesystem resides on a device that requires network access (used to prevent the system from attempting to mount these filesystems until the network has been enabled on the system).
옵션을 주지 않으면 default 값이 적용된다고 했는데 적용된 옵션 값은 mount 명령을 통해서 확인할 수 있습니다. mount 명령 뒤에 아무것도 입력하지 않으면 현재 마운트 된 모든 디렉터리의 자세한 정보가 표시됩니다.
[root@client ~]# mount | grep test 192.168.155.88:/test on /test type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.155.92,local_lock=none,addr=192.168.155.88,_netdev)
위에 /test 디렉터리의 기본값들을 확인할 수 있습니다. 별도의 권고 값이 없으면 기본값을 사용하는 게 권장입니다.
중요: NFS 버전 지정
기본 마운트 옵션은 대부분의 환경에 적합하지만, NFS 버전은 애플리케이션 호환성을 위해 명시적으로 설정해야 하는 경우가 많습니다. 현재 널리 사용되는 버전은 NFSv3와 NFSv4이며, 일부 애플리케이션은 NFSv4를 지원하지 않을 수 있습니다.
192.168.155.145:/test /test nfs defaults,vers=3 0 0
vers=3
: NFS 버전 3으로 마운트-
사용 전 애플리케이션 요구사항과 호환 여부를 반드시 확인할 것
마치며
이번 글에서는 NFS(Network File System)를 이용해 디렉터리를 공유하고, 클라이언트에서 이를 마운트하는 과정을 실습을 통해 살펴보았습니다. 기본 설정만으로도 대부분의 환경에서 충분히 활용할 수 있으며, 실제 운영 환경에서도 널리 사용되고 있는 기술입니다.
특히 /etc/fstab
설정 시 실수로 인해 시스템이 부팅되지 않을 수 있으므로, 설정 후 반드시 mount -a
등의 명령으로 사전 테스트를 권장합니다. NFS 버전 선택에 따른 호환성 이슈도 고려해야 하며, 필요 시 vers
옵션을 명시적으로 설정해야 합니다.
댓글
댓글 쓰기