본문 바로가기
IT 학습 공간 ::)

리눅스 nfs 마운트 (centos 7)

by 에스타롯사 2019. 5. 10.

안녕하세요 롯사입니다.

 

이번 시간엔 리눅스 nfs 마운트에 대해서 다루어 보겠습니다.

 

본론으로 들어가기 전에 먼저 nfs 가 무엇이지부터 알아봐야겠죠??

 

 

what is NFS??


Network File System의 약자로 쉽게 말해서 네트워크 공유기술의 프로토컬이라고 생각하면 됩니다.

네트워크로 연결된 다른 컴퓨터의 하드디스크를 내 하드디스크의 특정 마운트 포인트와 마운트 하여

마치 내 하드디스크를 사용하는 것처럼 논리적으로 구성할 수 있는 프로토컬을 말합니다.

 

 

 

자 이제 본론으로 들어가서 서버와 클라이언트의 디스크를 마운트 해보겠습니다.

 

 

 

1. NFS 서버 설정


* rpm -qa | grep nfs-utils ( 설치 package 확인 )

  rpm install nfs-utils ( nfs-utils 설치 )

 

   nfs 서버를 구성할 수 있는 package가 설치되어있는지 먼저 확인합니다.

  

 전 이미 설치가 최신 버전으로 되어있네요.

 

 

* systemctl start nfs-server ( nfs 서비스 실행 )

  systemctl enable nfs-server ( 재부팅 시 자동 활성화 )

  systemctl start rpcbind ( CentOS 7에서는 NFSv4를 사용하므로 NFSv3을 사용하는

  하위 버전인 경우는 같이 실행해줍니다.)

  systemctl enable rpcbind ( 재부팅 시 자동 활성화 )

 

 package 설치가 완료되었으면 서비스를 실행과 동시에 재부팅 시 자동으로 활성화될 수 있도록 설정해줍니다.

 

 

 

 

* /test  mkdir test 1 test2 test 3 ( 마운트 할 임의의 디렉터리 생성 )

 

클라이언트 쪽에 공유할 디렉터리를 생성합니다. ( 기존에 디렉터리가 존재하면 필수 사항은 아닙니다.)

 

저는 임의로 test 1 , test2, test 3을 생성했습니다.

 

 

 

* vi /etc/export ( 공유할 디렉터리 정의 )

 

공유할 디렉터리와 기본적인 접근권한 설정을 정의해줍니다.

 

test 1, test2, test 3을 192.168.159.* 대역에서 접근할 수 있게 허용한 설정입니다.

여기서 권한 설정 옵션은 아래와 같습니다.

 

rw : 읽기, 쓰기 가능

ro : 읽기만 가능

secure : 클라이언트 마운트 요청 시 포트를 1024 이하로 설정

noaccess : 액세스 거부

root_squach : 클라이언트의 root가 서버의 root 권한을 획득하는 것을 차단합니다

no_root_squash : 클라이언트의 root와 root를 동일하게 한다.

sync : 파일 시스템이 변경되면 즉시 동기화합니다

all_squach : root를 제외하고 서버와 클라이언트의 사용자를 동일한 권한으로 설정합니다.

no_all_squach : root를 제외하고 서버와 클라이언트의 사용자들을 하나의 권한을 가지도록 설정합니다.

 

 

 

 

* exportfs -r ( 수정한 export 내용 적용 )

  exportfs -v ( export에 설정한 공유 확인 )

  showmount -e [nfs 서버 ip] (서버의 공유 가능한 디렉터리 정보 확인 )

 

설정한 내용과 공유 가능 디렉터리를 확인합니다.

 

 

 

firewall-cmd --permanent --zone public --add-service mountd ( 방화벽 허용)

  firewall-cmd --permanent --zone public --add-service rpc-bind (방화벽 허용 )

  firewall-cmd --permanent --zone public --add-service nfs (방화벽 허용)

  firewall-cmd --reload 

  

centos7 이상부터는 iptables 위에 방화벽 (firewalld)가 존재하기 때문에 방화벽을 운영 중이시라면

필수적으로 서비스 허용을 설정해줍니다.

 

 

 

2. Client 서버 설정


* rpm -qa | grep nfs-utils ( 설치 package 확인 )

  rpm install nfs-utils ( nfs-utils 설치 )

 

  nfs 서버 설정과 마찬가지로 package 확인 후 설치해줍니다.

 

 

 

systemctl enable rpcbind (centos 7 이하 버전에 적용합니다.)

  systemctl start rpcbind (centos 7 이하 버전에 적용합니다.)

 

 

* /tmp  mkdir testclient ( 마운트 할 디렉터리 생성 )

기존에 마운트할 디렉터리가 존재하면 필수 항목은 아닙니다.

저는 testclient라는 디렉터리를 생성했습니다.

 

 

* showmount -e [nfs 서버 ip] ( 공유 가능한 nfs 서버 디렉터리 확인 )

nfs 서버에서 공유 설정한 디렉터리가 잘 조회가 되었습니다.

 

 

* mount -t nfs 192.168.159.128:/test/test 3 /tmp/testclient (nfs 서버에 마운트)

                      [nfs서버 ip] [서버 디렉터리] [client 마운트 포인트]

  df -h ( 파티션 정보로 마운트 확인 )

nfs 서버의 /test/test 3 디렉토리에 client 서버 /tmp/testclient 에 잘 마운트가 되었습니다.

해당 디렉토리에 접근해서 확인해 보시면 nfs 서버의 /test/test 3 경로의 파일들이 동일하게

client 서버 /tmp/testclient 에도 공유되는 것을 확인할 수 있습니다.

 

 

* /etc/fstab ( 부팅 시 자동으로 마운트 되게 설정 )

  192.168.159.128:/test/test 3 /tmp/testclient     nfs     default         0 0

fstab 등록해줌으로써 재부팅 후에도 자동으로 마운트 하게 됩니다.

 


 

이상 리눅스 nfs 마운트 설정에 대한 포스팅을 마치겠습니다.

 

모두 열공하시길 바랍니다 ^^