Linux,Unix,BSD

NFS Server / Client 설치 및 운영

채윤아빠 2019. 5. 15. 09:09
728x90
반응형



nfs 설치

nfs-tools 설치

nfs 관련 툴이 설치되어 있는지의 여부는 다음과 같이 확인합니다.

$ rpm -qa | grep "^nfs" 

nfs-tools 설치에 필요한 rpm 들을 다운로드 받습니다.

$ yum install nfs-utils --downloadonly --downloaddir=/root/rpms/nfs

Dependencies Resolved

==========================================================================================================================================
 Package                                Arch                        Version                               Repository                 Size
==========================================================================================================================================
Installing:
 nfs-utils                              x86_64                      1:1.3.0-0.61.el7                      base                      410 k
Installing for dependencies:
 gssproxy                               x86_64                      0.7.0-21.el7                          base                      109 k
 keyutils                               x86_64                      1.5.8-3.el7                           base                       54 k
 libbasicobjects                        x86_64                      0.1.1-32.el7                          base                       26 k
 libcollection                          x86_64                      0.7.0-32.el7                          base                       42 k
 libevent                               x86_64                      2.0.21-4.el7                          base                      214 k
 libini_config                          x86_64                      1.3.1-32.el7                          base                       64 k
 libnfsidmap                            x86_64                      0.25-19.el7                           base                       50 k
 libpath_utils                          x86_64                      0.2.1-32.el7                          base                       28 k
 libref_array                           x86_64                      0.1.5-32.el7                          base                       27 k
 libtirpc                               x86_64                      0.2.4-0.15.el7                        base                       89 k
 libverto-libevent                      x86_64                      0.2.5-4.el7                           base                      8.9 k
 quota                                  x86_64                      1:4.01-17.el7                         base                      179 k
 quota-nls                              noarch                      1:4.01-17.el7                         base                       90 k
 rpcbind                                x86_64                      0.2.0-47.el7                          base                       60 k
 tcp_wrappers                           x86_64                      7.6-77.el7                            base                       78 k

Transaction Summary
==========================================================================================================================================
Install  1 Package (+15 Dependent packages)

Total download size: 1.5 M
Installed size: 4.2 M

다운로드 받은 nfs-tools 패키지를 설치합니다.

$ cd /root/rpms/nfs
$ rpm -Uvh --replacepkgs *.rpm

준비 중...                         ################################# [100%]
Updating / installing...
   1:libtirpc-0.2.4-0.15.el7          ################################# [  6%]
   2:rpcbind-0.2.0-47.el7             ################################# [ 13%]
   3:libref_array-0.1.5-32.el7        ################################# [ 19%]
   4:libevent-2.0.21-4.el7            ################################# [ 25%]
   5:libcollection-0.7.0-32.el7       ################################# [ 31%]
   6:libbasicobjects-0.1.1-32.el7     ################################# [ 38%]
   7:libverto-libevent-0.2.5-4.el7    ################################# [ 44%]
   8:tcp_wrappers-7.6-77.el7          ################################# [ 50%]
   9:quota-nls-1:4.01-17.el7          ################################# [ 56%]
  10:quota-1:4.01-17.el7              ################################# [ 63%]
  11:libpath_utils-0.2.1-32.el7       ################################# [ 69%]
  12:libini_config-1.3.1-32.el7       ################################# [ 75%]
  13:gssproxy-0.7.0-21.el7            ################################# [ 81%]
  14:libnfsidmap-0.25-19.el7          ################################# [ 88%]
  15:keyutils-1.5.8-3.el7             ################################# [ 94%]
  16:nfs-utils-1:1.3.0-0.61.el7       ################################# [100%]

nfs 설치가 완료되면 다음과 같이 검색이 됩니다.

$ rpm -qa | grep "^nfs" 

nfs-utils-1.3.0-0.61.el7.x86_64

nfs 서버 서비스 설정 ; 공유 폴더 제공

nfs 공유 폴더 설정

nfs로 공유할 폴더를 /etc/exports 파일에 설정합니다.

$ vi /etc/exports

/home/nfs     192.168.56.*(rw,async,no_root_squash,no_all_squash)

공유 폴더에 대한 옵션 설명

  • rw : 읽고 쓰기 지원 ; ro : 읽기 전용
  • async : 파일 비동기화 처리 ; sync(동기화) 대비 빠른 속도 ; 안전성이 좀 떨어짐
  • no_root_squash : 클라언트의 UID를 그대로 따름 ; root_squash 클라이언트의 UID가 무시되고 nobody로 접근

다음과 같이 nfs-server를 실행합니다.

$ systemctl enable rpcbind \
&& systemctl enable nfs-server \
&& systemctl enable nfs-lock \
&& systemctl enable nfs-idmap \
&& systemctl start rpcbind \
&& systemctl start nfs-server \
&& systemctl start nfs-lock \
&& systemctl start nfs-idmap

nfs를 위한 방화벽 설정

nfs 서비스를 위하여 다음 방화벽 설정을 열어 줍니다.

$ firewall-cmd --permanent --add-service=nfs \
&& firewall-cmd --permanent --add-service=mountd \
&& firewall-cmd --permanent --add-service=rpc-bind \
&& firewall-cmd --reload

방화벽 설정을 확인합니다.

$ firewall-cmd --permanent --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client nfs mountd rpc-bind
  ports: 2377/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

nfs 클라이언트 설정 ; 공유 폴더 연결

nfs 클라이언트에서도 앞서 설명한 것처럼 nfs-tools를 설치합니다.

mount를 이용한 NFS 서버의 공유 폴더 연결

nfs 서버에 공유된 폴더를 마운트할 폴더를 생성하고, nfs 서버에 공유된 폴더를 다음과 같이 마운트 합니다.

$ mkdir -p /home/nfs
$ mount -t nfs -o rsize=65536,wsize=65536,timeo=600,intr,hard 192.168.56.70:/home/nfs /home/nfs/
$ df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/centos-root    25G  3.2G   22G  13% /
devtmpfs                  907M     0  907M   0% /dev
tmpfs                     920M     0  920M   0% /dev/shm
tmpfs                     920M   89M  831M  10% /run
tmpfs                     920M     0  920M   0% /sys/fs/cgroup
/dev/sda1                1014M  154M  861M  16% /boot
tmpfs                     184M     0  184M   0% /run/user/0
192.168.56.70:/home/nfs   25G  3.8G   22G  16% /home/nfs

"mount" 명령을 이용하여 공유 폴더를 연결할 때, "-o" 파라미터와 함께 부가적인 정보를 설정할 수 있습니다.
특히 성능 향상을 위하여 읽기 및 쓰기 버퍼 크기(rsize / wsize)를 최대로 지정하면 더 나은 성능을 기대할 수 있습니다.

nfs 연결 영구 설정

nfs 서버에서 공유된 폴더를 영구적으로 사용하기 위해서는 "/etc/fstab" 파일에 마운트 내용을 다음과 같이 설정합니다.

$ vi /etc/fstab
......

192.168.56.70:/home/nfs    /home/nfs   nfs defaults 0 0

영구 설정시 위 예에서는 "defaults"로 기본 설정을 지정하였습니다.
"defaults" 대신 "rsize=65536,wsize=65536,timeo=600,intr,hard"과 같이 직접 필요한 옵션을 지정할 수도 있습니다.

각 옵션은 다음과 같은 의미가 있습니다.

옵션설명
suid, nosuid보안상 원격파일 시스템에서 suid모드보다는 nosuid모드가 권장됩니다.
bgnfs 마운트가 처음에 실패할 경우 백그라운드 상태에서 계속 시도하게 되는 것으로 원격파일시스템이 허용되지 않을 경우 부트 시간을 단축시킵니다.
retry=n포기할 때가지의 마운트 시도횟수로 기본은 100,000입니다.
timeo=n타임아웃 시간을 설정합니다.
retrans=nn번 요구를 재전송하는 것으로 기본은 3번입니다.
soft,hard재시도 횟수가 끝이 났을 때 연결을 계속할지 말지를 결정합니다. 읽기전용으로 마운트될 경우엔 soft가, 읽기/쓰기가 가능하도록 마운트될 경우엔 hard가 적합합니다. soft로 마운트된 파일시스템은 프로세스가 멈추어지는 문제를 피할 수도 있습니다.
intr정지 프로세서를 죽이기 위한 인터럽트를 허용합니다. 터미널에 대해 CTRL-C를 누르고 백그라운드 프로세스인 경우 INT 혹은 QUIT 신호를 보내면 다시 동작됩니다.
rsize=nnfs서버에 있는 읽기 버퍼의 크기(바이트단위)
wsize=nnfs서버에 있는 쓰기 버퍼의 크기(바이트단위)

참고자료