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