NFS(Network File System)는 썬 마이크로 시스템(SUN)에서 네트워크를 통해 파일을 공유할 수 있도록 만든 프로토콜 이며 NFS의 하드웨어, 운영체제, 네트워크 구조가 서로 달라도 파일을 공유 할수 있도록 해줍니다.
NFS는 리눅스에서 윈도우 사용자가 파티션을 마운트하여 사용하듯이 NFS서버의 특정 디렉토리를 클라이언트에서 마운트하여 자신의 영역인 것 마냥 사용하는 것을 말합니다.

NFS 는 RPC 를 이용하기 때문에 NFS, RPC 관련 패키지인 portmap 설치 되어 있는지 확인 해야 합니다.
필자는 CentOS 5.3 에서 구축했으며 기본적으로 portmap 설치와 옵션이 활성화 되어 있습니다.
만약 활성화가 되어 있지 않다면 수동으로 시작 해줍니다.

portmap 설치 확인

[root@ruo91 ~]# rpm -qa | grep portmap
portmap-4.0-65.2.2.1

portmap 시작

[root@ruo91 ~]# /etc/init.d/portmap start
portmap (을)를 시작 중: [ OK ]

NFS 시작

[root@ruo91 ~]# /etc/init.d/nfs start
NFS 서비스를 시작 중: [ OK ]
NFS 쿼터를 시작 중: [ OK ]
NFS 데몬을 시작 중: [ OK ]
NFS mountd를 시작 중: [ OK ]

portmap, nfs 가 실행 되고 있는지 확인

[root@ruo91 ~]# rpcinfo -p
프로그램 버전 원형 포트
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 625 rquotad
100011 2 udp 625 rquotad
100011 1 tcp 628 rquotad
100011 2 tcp 628 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 54868 nlockmgr
100021 3 udp 54868 nlockmgr
100021 4 udp 54868 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 tcp 36016 nlockmgr
100021 3 tcp 36016 nlockmgr
100021 4 tcp 36016 nlockmgr
100005 1 udp 654 mountd
100005 1 tcp 657 mountd
100005 2 udp 654 mountd
100005 2 tcp 657 mountd
100005 3 udp 654 mountd
100005 3 tcp 657 mountd

마운트할 디렉토리를 설정하기 위해 /etc/exports 에 아래와 같이 추가 해줍니다.
(읽기 쓰기가 가능)

[root@ruo91 ~]# echo ‘/home/ruo91/public_html *(rw)’ >> /etc/exports

NFS를 재시작을 하여 설정을 적용 해줍니다.

[root@ruo91 ~]# /etc/init.d/nfs restart
NFS mountd를 종료 중: [ OK ]
NFS 데몬을 종료 중: [ OK ]
NFS quota를 종료 중: [ OK ]
NFS 서비스를 종료 중: [ OK ]
NFS 서비스를 시작 중: [ OK ]
NFS 쿼터를 시작 중: [ OK ]
NFS 데몬을 시작 중: [ OK ]
NFS mountd를 시작 중: [ OK ]

위에서 설정한 NFS 서버의 디렉토리를 다른 서버에서 마운트를 하기 위해 아래와 같이 해줍니다.
/home/nfs 라는 디렉토리를 생성합니다.

[root@ruo91 ~]# mkdir /home/nfs
[root@ruo91 ~]# ls -al /home/nfs
total 4
drwxr-xr-x 2 root wheel 512 10 15 13:40 .
drwxr-xr-x 4 root wheel 512 10 15 13:40 ..

NFS 서버에서 설정된 디렉토리를 현재 /home/nfs 디렉토리로 마운트를 합니다.

[root@ruo91 ~]# mount -t nfs 서버아이피:NFS 설정 디렉토리 마운트 할 디렉토리
[root@ruo91 ~]# mount -t nfs 192.168.0.100:/home/ruo91/public_html /home/nfs

마운트 된 디렉토리 확인 합니다. 이후 파일들을 추가하건 삭제를 하건.. 마음대로 할수 있으며 서버에서 동일하게 적용이 됩니다.

[root@ruo91 ~]# ls -al /home/nfs
total 38
drwxrwxrwx 7 ruo91 ruo91 4096 10 15 13:40 .
drwxr-xr-x 4 root wheel 512 10 15 13:40 ..
-rw-r–r– 1 root wheel 309 10 15 13:40 backup-2009-10-16.tar.gz
-rw-r–r– 1 root wheel 81 10 15 13:39 hello.c
drwxr-xr-x 2 root wheel 4096 10 15 13:38 메롱
drwxr-xr-x 2 root wheel 4096 10 15 13:38 방가
drwxr-xr-x 2 root wheel 4096 10 15 13:38 하이
drwxr-xr-x 2 root wheel 4096 10 15 13:38 헬로우
drwxr-xr-x 2 root wheel 4096 10 15 13:38 히히

NFS 설정 디렉토리를 알고자 할때 아래 명령어를 사용하면 쉽게 알수 있습니다.

[root@ruo91 ~]# showmount -e NFS 서버 아이피
[root@ruo91 ~]# showmount -e 192.168.0.100
Exports list on 192.168.0.100:
/home/ruo91/public_html *

마운트 된 상태에서 /home/nfs 디렉토리를 삭제 해보면 바쁘다고 안된다고 하네요.. 힝..

[root@ruo91 ~]# rm -rf /home/nfs
rm: /home/nfs/: Device busy

이럴 때는 마운트를 해제 해주셔야 합니다.

[root@ruo91 ~]# umount /home/nfs