테스트 환경 -
리눅스 버전 : CentOS 6 (linux 2.6.32)
RPM : nfs-utils-1.2.2
리눅스에서 NFS를 설정하는 방법을 정리한다.
서버 설정
NFS 클라이언트가 연결을 할 수 있도록 디렉토리를 export 해야 한다.
/etc/exports 파일에 다음과 같이 설정한다.
/work/export 192.168.0.0/24(ro,all_squash,anonuid=500,anongid=500)
read only 권한이 주어지며 UID, GID가 500으로 접근하도록 한다.
/etc/exports 설정을 /var/lib/nfs/etab과 동기화한다.
$ exportfs -a
옵션 없이 -v 옵션을 통해서 현재 설정 목록을 확인하는 것이 가능하다.
$ exportfs -v
iptables를 사용하고 있다면 관련 설정을 방화벽에서 열어주어야 한다. 그런데 111, 2049 포트를 제외하고는 동적으로 할당이 되기 때문에 리부팅을 하면 포트가 변경이 될 수 있어서 포트 고정을 위해서 /etc/sysconfig/nfs 설정을 변경해야 한다. XXX_PORT로 되어 있는 모든 부분의 주석을 제거하고 원하는 포트로 설정을 하면 된다.
* exportfs 옵션의 기능
옵션 기능
root_squash 클라이언트에서 루트를 서버상에 nobody 사용자로 매핑한다.
no_root_squash 서버와 클라이언트 모두 같은 root를 사용한다.
ro 파일 시스템을 읽기전용으로 마운트 한다.
rw 파일시스템을 읽기/쓰기 로 마운트 한다.
insecure 인증되지 않은 액세스도 가능하다.
link_relative 서버에 있는 루트와의 링크를 포함하는 디렉토리에서 얻는 "../" 만큼 링크 앞에 두어 절대 심볼릭 링크를 상대 심볼릭 링크로 바꿀때 사용한다.
* 부연 설명
root_sqash
uid/gid 0(uid0와 gid0는 user root와 group root의 값이다)를 익명 uid/gid로 연결하기를 요청한다.
사용자 'bin'과 같이 민감한 uid에는 적용되지 않음을 유의하라.
no_root_squash
root squash를 사용하지 않음. 이 옵션은 디스크가 없는 클라이언트(MTD device)에 주로 사용됨.
all_squash
모든 uid/gid를 익명 uid/gid로 연결함. NFS 로 연결된 공개(익명?) FTP 에 유용함.
반대 옵션은 no_all_squash이며 기본값임.
기본값
root_squash / no_all_squash
root 계정을 익명(기본값으로 uid:65534/gid:65534로 연결)으로 사용하며, 모든 아이디를 익명으로 연결하지 않음
= 개별 uid/pid를 사용함.
nfs 서비스를 시작하고 rebooting 후에도 적용이 되도록 on 시킨다.
$ service nfs start
$ chkconfig nfs on
rpcinfo 명령으로 열어 불 포트를 확인한다.
$ rpcinfo -p
방화벽 설정 파일을 변경하고 적용한다.
$ vi /etc/sysconfig/iptables
$ service iptables restart
UID mapping
NFS client의 UID가 server로 그대로 전달이 되는 것이 기본 동작
Root(0)인 경우에는 nobody(기본은 65534)로 전달되는 것이 기본 동작(no_root_squash 옵션으로 해제 가능)
nsfnobody(65534) 대신에 다른 UID, GID를 사용하고 싶다면 anonuid, anongid 옵션으로 지정 가능
all_squash 옵션을 사용하면 root 뿐만이 아니라 모든 UID가 nobody로 전달
클라이언트 설정
다음과 같이 명령을 주면 된다.
$ mount -t nfs 192.168.0.179:/work/export /mnt -o ro
* 아래는 NFS 성능 향상 팁 :
http://hongiiv.tistory.com/4
* tcp wrapper 적용
# 3. Asset project Migraton NFS
portmap:192.168.0.10
rpcbind:192.168.0.10
lockd:192.168.0.10
rquotad:192.168.0.10
mountd:192.168.0.10
statd:192.168.0.10