OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] NFS 설치 및 설정(서버, 클라이언트)

주누다 2015. 5. 10. 22:52
반응형

NFS
- NFS는 'network file system' 의 약자

- 네트워크를 통해 다른 시스템의 디스크를 연결하여 사용하는 것을 뜻함

- 윈도에서 폴더를 공유하는 것과 같다고 생각하면 됨

- NFS 서버가 설치되어 있어야 하고, NFS 서버 측에서 디스크를 공유해야함.

- 다른 시스템에서 공유한 디스크를 디렉터리 계층 구조에 마운트하면 되는 것.



NFS 패키지 설치 확인하기  - 서버 설치 및 설정

- NFS 서버에는 NFS 커널서버와 rpcbind를 설치해야함

============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo apt-get install nfs-common nfs-kernel-server rpcbind
[sudo] password for sjw:
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
  libgssglue1 libnfsidmap2 libtirpc1
제안하는 패키지:
  open-iscsi watchdog
다음 새 패키지를 설치할 것입니다:
  libgssglue1 libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server rpcbind
0개 업그레이드, 6개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
427 k바이트 아카이브를 받아야 합니다.
이 작업 후 1,900 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/main libgssglue1 amd64 0.4-2ubuntu1 [19.7 kB]
받기:2 http://kr.archive.ubuntu.com/ubuntu/ trusty/main libnfsidmap2 amd64 0.25-5 [32.2 kB]
받기:3 http://kr.archive.ubuntu.com/ubuntu/ trusty/main libtirpc1 amd64 0.2.2-5ubuntu2 [71.3 kB]
받기:4 http://kr.archive.ubuntu.com/ubuntu/ trusty-updates/main rpcbind amd64 0.2.1-2ubuntu2.1 [37.0 kB]
받기:5 http://kr.archive.ubuntu.com/ubuntu/ trusty-updates/main nfs-common amd64 1:1.2.8-6ubuntu1.1 [182 kB]
받기:6 http://kr.archive.ubuntu.com/ubuntu/ trusty-updates/main nfs-kernel-server amd64 1:1.2.8-6ubuntu1.1 [85.6 kB]
내려받기 427 k바이트, 소요시간 0초 (610 k바이트/초)
Selecting previously unselected package libgssglue1:amd64.
(데이터베이스 읽는중 ...현재 261882개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libgssglue1_0.4-2ubuntu1_amd64.deb ...
Unpacking libgssglue1:amd64 (0.4-2ubuntu1) ...
Selecting previously unselected package libnfsidmap2:amd64.
Preparing to unpack .../libnfsidmap2_0.25-5_amd64.deb ...
Unpacking libnfsidmap2:amd64 (0.25-5) ...
Selecting previously unselected package libtirpc1:amd64.
Preparing to unpack .../libtirpc1_0.2.2-5ubuntu2_amd64.deb ...
Unpacking libtirpc1:amd64 (0.2.2-5ubuntu2) ...
Selecting previously unselected package rpcbind.
Preparing to unpack .../rpcbind_0.2.1-2ubuntu2.1_amd64.deb ...
Unpacking rpcbind (0.2.1-2ubuntu2.1) ...
Selecting previously unselected package nfs-common.
Preparing to unpack .../nfs-common_1%3a1.2.8-6ubuntu1.1_amd64.deb ...
Unpacking nfs-common (1:1.2.8-6ubuntu1.1) ...
Selecting previously unselected package nfs-kernel-server.
Preparing to unpack .../nfs-kernel-server_1%3a1.2.8-6ubuntu1.1_amd64.deb ...
Unpacking nfs-kernel-server (1:1.2.8-6ubuntu1.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
libgssglue1:amd64 (0.4-2ubuntu1) 설정하는 중입니다 ...
libnfsidmap2:amd64 (0.25-5) 설정하는 중입니다 ...
libtirpc1:amd64 (0.2.2-5ubuntu2) 설정하는 중입니다 ...
rpcbind (0.2.1-2ubuntu2.1) 설정하는 중입니다 ...
 Removing any system startup links for /etc/init.d/rpcbind ...
rpcbind start/running, process 19068
Processing triggers for ureadahead (0.100.0-16) ...
nfs-common (1:1.2.8-6ubuntu1.1) 설정하는 중입니다 ...

Creating config file /etc/idmapd.conf with new version

Creating config file /etc/default/nfs-common with new version
시스템 사용자 `statd' (120) 추가 ...
새로운 사용자 `statd' (120) 을(를) 그룹 `nogroup'(으)로 추가 ...
홈 디렉토리 '/var/lib/nfs' 을(를) 만들지 않습니다.
statd start/running, process 19301
gssd stop/pre-start, process 19335
idmapd start/running, process 19422
Processing triggers for ureadahead (0.100.0-16) ...
nfs-kernel-server (1:1.2.8-6ubuntu1.1) 설정하는 중입니다 ...

Creating config file /etc/exports with new version

Creating config file /etc/default/nfs-kernel-server with new version
 * Not starting NFS kernel daemon: no exports.
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Processing triggers for ureadahead (0.100.0-16) ...
sjw@sjw-HP-Mini-110-3500:~$
============================================================================





NFS 서버 설정하기

- NFS 서버에서 클라이언트가 사용할 수 있도록 디렉터리를 공유하는 작업을 '익스포팅(exporting)' 이라고 함

- 설정 파일은 '/etc/exports' 


'/etc/exports' 파일 설정 내용


'익스포팅할 디렉터리' '클라이언트 주소(NFS 옵션)'

- '/etc/exports' 파일에서 클라이언트 주소는 클라이언트의 호스트 이름이나 IP주소, 와일드카드(*)를 모두 허용

- NFS를 설정하려면 먼저 공유할 디렉터리를 지정해야함

- 디렉터리의 접근 권한은 707로..


NFS 옵션

 옵션

 기능

rw

- NFS 서버 디렉터리에 읽기, 쓰기를 모두 허용

ro

- NFS 서버 디렉터리에 읽기만 허용(기본값)

sync/asynch

- sync :

 * 클라이언트가 NFS 서버에 쓰기 작업을 하면 바로 반영(기본값)

- async :

 * 클라이언트가 NFS 서버에 쓰기 작업을 하면 바로 반영하지 않음

 * 서버에 문제가 발생했을 때 데이터 불일치가 발생할 수 있음

root_squash 

no_root_squash

- root_squash :

 * 클라이언트가 uid/gid 0(root 계정)으로 접속해도 서버에서는 이를 anonymous uid/gid로 취급

- no_root_squash :

 * root_squash 를 정지

 * 클라이언트의 root가 서버에서도 root 권한을 사용할 수 있음 

anonuid

anongid

- anonymous 계정의 uid와 gid를 명시적으로 설정


============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo mkdir /home/share
[sudo] password for sjw:
sjw@sjw-HP-Mini-110-3500:~$ sudo chmod 707 /home/share
sjw@sjw-HP-Mini-110-3500:~$

============================================================================


- '/home/share' 디렉터리를 공유하려면 '/etc/exports' 파일을 수정

============================================================================

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /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)
#
/home/share 192.168.0.12(rw)      <== 허용할 IP 주소 입력

/home/share 192.168.0.20(rw)      <== 허용할 IP 주소 입력
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
"/etc/exports" 11 lines, 418 characters
============================================================================


- NFS 서버를 시작

- NFS 서비스의 이름은 'nfs-kernel-server' 와 'rpcbind' 임

============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo /etc/init.d/nfs-kernel-server restart
 * Stopping NFS kernel daemon                                            [ OK ]
 * Unexporting directories for NFS kernel daemon...                      [ OK ]
 * Exporting directories for NFS kernel daemon...                               exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.0.12:/home/share".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

                                                                         [ OK ]
 * Starting NFS kernel daemon                                            [ OK ]
sjw@sjw-HP-Mini-110-3500:~$ sudo /etc/init.d/rpcbind restart
sjw@sjw-HP-Mini-110-3500:~$ 

============================================================================



NFS와 관련된 주요 데몬

rpc.mountd

- NFS 마운트 데몬

- '/etc/exports' 의 설정에 따라 클라이언트의 마운트 요청을 처리

rpc.nfsd

- 'rpc.mountd' 데몬과 클라이언트가 접속하면

  rpc.nfsd 데몬이 클라이언트의 요청에 따라 처리

rpc.lockd

- 파일 잠금관 관련된 데몬

rpc.startd

- 파일 잠금관 해제의 역할을 담당


- NFS 서버가 공유한 내용을 확인하는 명령은 'exportfs'


exportfs 

- 기능 : NFS 서버에서 익스포팅한 내용을 관리

- 형식 : exportfs [옵션]

- 옵션 :

 * '-a' : 설정 파일에 지정한 모든 디렉터리를 익스포팅, 언익스포팅 함

 * '-v' : 상세 동작 내용을 출력함

 * '-u IP주소:경로' : 경로로 지정한 디렉터리의 익스포팅을 해제함

 * '-o NFS옵션 IP주소:경로' : 경로로 지정한 디렉터리를 익스포팅하고 IP주소로 지정한 클라이언트의 접속을 허용

- 사용예 : 'exportfs', 'exportfs -v', 'exportfs -o rw 10.10.10.1:/home/pub'


============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo exportfs
/home/share       192.168.0.12
sjw@sjw-HP-Mini-110-3500:~$
============================================================================





NFS 클라이언트 설정하기

- NFS 클라이언트는 'nfs-common' 패키지만 설치하면 됨

============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo apt-get install nfs-common
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
nfs-common 패키지는 이미 최신 버전입니다.
0개 업그레이드, 0개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
sjw@sjw-HP-Mini-110-3500:~$

============================================================================


- mount 명령을 사용하여, NFS 서버가 공유한 디렉터리를 연결

============================================================================

sjw@sjw-HP-Mini-110-3500:~$ sudo mount -t nfs 192.168.0.12:/home/share /mnt
sjw@sjw-HP-Mini-110-3500:~$ df
Filesystem               1K-blocks     Used Available Use% Mounted on
/dev/sda7                 95989516  5284236  85806160   6% /
none                             4        0         4   0% /sys/fs/cgroup
udev                       1008076        4   1008072   1% /dev
tmpfs                       203776     1108    202668   1% /run
none                          5120        0      5120   0% /run/lock
none                       1018864      992   1017872   1% /run/shm
none                        102400       80    102320   1% /run/user
/dev/sda5                   184307   122747     47941  72% /boot
/dev/sda8                140072880 15626116 117308412  12% /home
192.168.0.12:/home/share 140072960 15625984 117308416  12% /mnt
sjw@sjw-HP-Mini-110-3500:~$

============================================================================



============================================================================

서버

-----------------------------------------------------

sjw@sjw-HP-Mini-110-3500:~$ touch /home/share/linux1.txt
sjw@sjw-HP-Mini-110-3500:~$ ls /home/share
linux1.txt
sjw@sjw-HP-Mini-110-3500:~$

-----------------------------------------------------


클라이언트

-----------------------------------------------------

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls /mnt

linux1.txt

sjw-lenovo@sjwlenovo-Lenovo-U310:~$

-----------------------------------------------------

============================================================================

 




============================================================================

클라이언트

-----------------------------------------------------

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ touch /mnt/client.txt

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls /mnt

client.txt linux1.txt

sjw-lenovo@sjwlenovo-Lenovo-U310:~$

-----------------------------------------------------


서버

-----------------------------------------------------

sjw@sjw-HP-Mini-110-3500:~$ ls /home/share
client.txt  linux1.txt
sjw@sjw-HP-Mini-110-3500:~$

-----------------------------------------------------

============================================================================

 





'/etc/fstab' 파일에 NFS 파일 시스템 마운트 설정하기

- 리눅스를 부팅할 때 NFS 서버의 디렉터리를 계속 마운트하려면 '/etc/fstab' 파일에 설정해야함


 'NFS 서버 주소:익스포팅한 디렉터리' '클라이언트 마운트 포인트 NFS 옵션'



NFS 마운트 옵션

옵션

기능

fg

- 첫 번째 NFS 마운트 시도에서 타임아웃이 발생하면

  마운트 시도를 즉시 중단(기본값)

hard

- 타임아웃이 발생하면 'Server not responding' 이라는 메시지를 출력하고

  무한정 재시도(이 때문에 시스템이 부팅하지 못할 수도 있음)

soft

- 타임아웃이 발생하면 프로그램에 오류를 보고하고 부팅을 진행함


- 앞에서 지정한 '/home/share' 디렉터리를 부팅할 때도 다시 마운트하려면 클라이언트에서 '/etc/fstab' 파일에 지정

192.168.0.12:/home/share /mnt nfs fg,soft 1 2





NFS 서버의 공유 내용 확인하기

- NFS 서버의 공유 내용을 확인할 때는 'showmount' 명령을 사용

showmount

- 기능 : NFS 서버의 공유 내용을 출력

- 형식 : showmount [옵션]

- 옵션 :

 * '-e 서버 주소' : 서버에서 공유한 내용을 출력

- 사용예 : showmount -e 10.10.10.1

 

============================================================================

sjw@sjw-HP-Mini-110-3500:~$ showmount -e 192.168.0.12
Export list for 192.168.0.12:
/home/share 192.168.0.20,192.168.0.12
sjw@sjw-HP-Mini-110-3500:~$

============================================================================





반응형