우분투에서 NFS 서버를 설정하는 방법에 대해서 간략하게 설명을 하도록 하겠습니다.


Step 1. nfs 서버 설치

시냅틱 패키지나 콘솔에서 nfs-kernel-server를 설치합니다.

$ sudo apt-get install nfs-kernel-server 


Step 2. nfs가 사용하는 포트 고정하기

nfs가 사용하는 포트중 일부가 고정이 아니므로 공유기를 사용하거나 이런경우 번거로움이 발생하므로 포트를 고정합니다.


페도라/레드햇 일 경우

$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
# Add Static ports for NFS, in order to be able to forward them with VMWare NATconfig
RQUOTAD_PORT=32764
STATD_PORT=32765
STATD_OUTGOING_PORT=32766
MOUNTD_PORT=32767

[링크 : http://www.stlinux.com/faq?q=faq/vmware]


우분투/데비안

일 경우
$ cat /etc/services | grep mountd
mountd             32767/tcp
mountd             32767/ucp

[링크 : http://manpages.ubuntu.com/manpages/intrepid/man8/mountd.8.html]
[링크 : http://mindwing.kr/141]


Step 3. nfs 로 공유할 디렉토리 설정하기

/etc/exports 에 nfs로 마운트할 아이피를 포함하여 작성합니다.

모든곳에서 접속을 허용하기 위해서는 *을 입력하면 됩니다.

아래의 예제에서는 /home/nfs를 모든 아이피에서 접속을 허용하는 예제입니다.

/home/nfs와 *(rw,root_squash) 사이는 탭이나 공백을 띄워주나 탭을 추천합니다.

  1 # /etc/exports: the access control list for filesystems which may be exported
  #               to NFS clients.  See exports(5).
  #
  # Example for NFSv2 and NFSv3:
  5 # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
  #
  # Example for NFSv4:
  # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
  # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
 10 #
 11
 12 /home/nfs  *(rw,root_squash) 

참고 : NFS 설정 /etc/exports 의 squash


Step 4. nfs 서버 재시작 

 $ sudo service nfs-kernel-server restart 

를 입력하여 에러없이 실행됨을 확인합니다.


Step 5. nfs 서비스 테스트하기

원격지에서 mount시에는 아래와 같이 입력을 하면되며 만약 tcp로 고정하고 싶으면 -o tcp를 추가하면 됩니다.
아래의 예제에서 nfs 우분투 서버의 아이피는 192.168.10.2 입니다.
# mount -t nfs -o tcp 192.168.10.2:/home/nfs /mnt/nfs



문제점 해결

Root-NFS: Server returned error -13 while mounting - 타켓보드 부팅시 오류. 대개 bootargs에 경로를 잘못입력한 경우발생

cp: `./filename'의 소유자 검출 실패: Operation not permitted - nfs 붙이고 나서 타켓에서 복사 안될 경우의 에러

umount: cannot umount [mount poiunt] "Device or resource busy" - nfs 마운트 해제가 안될 경우의 에러

Protocol not supported - 커널에서 지원하는 nfs 버전이 다를 경우의 에러

http://minimonk.net/1132 - .nfs0000 파일 생성이유


http://minimonk.net/1160 - U-BOOT 관련설정 방법

http://minimonk.net/447 - U-BOOT에서 tcp로 붙이는 설정



유틸리티 / 파일

nfsstat - 마운트 된 nfs의 프로토콜 세부사항 분석용

/proc/filesystems - 시스템에서 지원하는 파일시스템 종류(nfs 지원하는지 여부 확인용)


특수한 예외사항

NFS를 UDP로는 붙지만 TCP로는 붙지 않는 경우가 있었는데

드라이버를 교체함으로서 해결된 문제이며, 해당 드라이버는 아래링크에서 다운받으시기 바랍니다.

참고 : http://minimonk.net/1350

M/B - P5G41T-M LX

LAN - Atheros GbE AR81 family (AR8131/AR8132)

VER - AR8131_AR8132-linux-v1.0.0.10.tar.gz


특수한 조합

필요에 의해서 원격지에 있는 삼바 디렉토리를 NFS로 공유해서 다시 삼바로 공유시

원격지의 삼바가 목록은 보이지만 매우 오래 걸리거나 파일내용을 읽으려고 하는 경우 다운되다 시피 하는 문제가 있습니다.

아직까지 특별한 해결책은 찾지 못하였으며, NFS 의 file lock과 SAMBA의 lock 이 충돌되면서 발생하는 것으로 추측됩니다.

원격지의 파일을 손쉽게 공유하는 방법으로 다중 삼바/NFS 서버는 추천할만한 조합은 아닙니다.


참고용 내부문서