====== NFS(NFS는 Network File System) ====== ===== NFS ? ===== - 썬마이크로 시스템즈에서 개발한 네트웍상에서 파일시스템을 공유하도록 설계된 파일시스템의 한종류이다. - 다른 호스트에 있는 파일시스템의 일부를 자신의 디렉토리인것처럼 사용할수 있도록 해주는 것이 NFS(Network File System)이다. - 즉 네트웍상에 디스크를 한서버에 집중관리하고 나머지 시스템들은 그것을 공유하여 사용할 수 있게 해주는 것이다. - 하지만 보안상의 문제로 인해 NFS서버의 사용을 점점 제한해 가는 추세이다. - NFS설정은 파일시스템을 share하는 서버의 설정과 서버의 파일시스템을 마운트해가는 클라이언트 설정으로 나누어 볼수 있다. ===== NFS Server 설정 ===== ==== NFS Service Daemon Process ==== ^ rpc.mountd | NFS 클라이언트가 마운트를 요청하면 이 데몬프로세스가 /etc/export 파일설정에 따라 마운트 요청을 처리한다. | ^ rpc.nfsd | rpc.mountd 에 의해 마운트된 디렉토리에 대해 읽고,쓰는 작업들을 처리해주는 데몬프로세스이다. | ^ rpc.rquotad | NFS 파일시스템을 마운트한 로컬 사용자에 대해 quota를 처리한다. | ^ rpc.lockd | 파일 잠금을 통해 여러 사용자가 한 파일을 수정하는것을 방지한다. | ^ rpc.statd | rpc.lockd와 함께 사용되며 파일 잠금의 해제와 복구를 담당한다. | ==== /etc/exports ==== - 라인에 설정은 아래와 같이 한줄로 표현해야 한다. share-directory client1(options,,,) client2(options,,,) - 각 정보는 아래와 같다. | share-directory | 공유할 디렉토리명 | | client1 | 공유 디렉토리에 접근할수 있도록 허용된 호스트들 | | options | 접근 권한설정 옵션 \\ ro : 클라이언트는 공유 디렉토리에 대해 읽기만 가능하다. \\ rw : 클라이언트는 공유 디렉토리에 대해 읽기/쓰기가 가능하다. \\ no_root_squash : 클라이언트의 root는 서버의 root와 같은 권한을 가진다. \\ No_subtree_check : 공유된 디렉토리내에 있는 서브 디렉토리들을 공유에서 제외 시키는 경우 설정한다. | - 다음은 /etc/exports 설정 예이다. # cat /etc/exports /home/group01 *.adminschool.net(ro) /export/pub 192.168.1.1/255.255.255.0(ro) / banana(rw),kiwi(rw,no_root_squash) ==== Information ==== - 현재 커널에서 알고 있는 익스포트 리스트를 출력한다 # exportfs -v - /etc/export 파일이 커널에 적용되도록 한다. # exportfs -ar - NFS 상태 정보를 출력한다. # nfsstat ==== Debian Linux에서 NFS Server 시작/종료 ==== - NFS 서버를 **시작**하기 위해서는 다음 스크립트를 실행해야 한다. # /etc/init.d/portmap start # /etc/init.d/nfs-common start # /etc/init.d/nfs-kernel-server start - NFS 서버를 **종료**하기 위해서는 다음 스크립트를 실행해야 한다. # /etc/init.d/nfs-kernel-server stop # /etc/init.d/nfs-common stop # /etc/init.d/portmap stop - NFS 서버의 상태를 확인한다. # ps -ef | grep portmap | grep -v grep daemon 2127 1 0 Sep20 ? 00:00:00 /sbin/portmap # /etc/init.d/nfs-common status rpc.statd running # /etc/init.d/nfs-kernel-server status nfsd running ===== NFS Client ===== ==== NFS Clinet define ==== - 서버에서 공유하도록 설정되어 있는 디렉토리를 자신의 디렉토리에 마운트 한다. - 마운트는 root가 직접 작업할 수도 있고 시스템 부팅시 자동으로 마운트 하도록 설정할 수도 있다. ==== 수동 마운트 ==== - 수동으로 서버의 파일시스템을 마운트 하는 명령이다. # mount -t nfs nfs_server_host:/export/pub /shared/pub - 마운트 실행시 사용할수 있는 옵션들 ^ -o timeo=10 | NFS 서버와 연결이 끊어진 경우 timeo에서 지정한시간(1/10초단위) 기다렸다가 경고 메시지를 발생 | ^ -o rsize=1024 wsize=1024 | 읽고/쓰기 버퍼의 크기를 설정한다.(1024KB=1M) | ^ -o soft | remote mount를 실행할 때 성공하지 못하면 timeo 까지만 retry 후 에러 메시지를 발생하고 종료 | ^ -o hard | remote mount가 성공할 때 까지 무한시 재시도한다. (디폴트값이다) | ^ -o bg | 첫번째 마운트 시도가 실패인경우 백그라운드로 계속 마운트를 재시도한다. | ==== 부팅시 자동마운트설정 ==== - 시스템 부팅시 자동으로 서버의 파일시스템을 마운트하도록 설정한다. - /etc/fstab 파일로부터 읽어들여서 자동으로 마운트한다. # cat /etc/fstab nfs_server_host:/export/pub /shared/pub nfs defaults ==== Debian Linux에서 NFS Client 시작/종료 ==== - NFS 클라이언트를 **시작**하기 위해서는 다음 스크립트를 실행해야 한다. # /etc/init.d/portmap start # /etc/init.d/nfs-common start - NFS 클라이언트를 **종료**하기 위해서는 다음 스크립트를 실행해야 한다. # /etc/init.d/nfs-common stop # /etc/init.d/portmap stop - NFS 클라이언트 상태를 확인한다. starlits@pair:~$ ps -ef | grep portmap | grep -v grep daemon 2469 1 0 Oct05 ? 00:00:00 /sbin/portmap -i 127.0.0.1 starlits@pair:~$ /etc/init.d/nfs-common status rpc.statd running