관리 메뉴

IT창고

리눅스 NFS 설정 본문

서버운영/Linux

리눅스 NFS 설정

방구석여포 2017. 9. 21. 22:58

리눅스의 NFS(Network File System)은 네트워크를 통해 공유된 원격지 호스트에 자원(파일시스템)을 로컬 호스트에 마운트해서 사용하여 파일을 공유하는 프로그램입니다. NFS에서 알아둬야할것중 RPC(Remote Procedure Call)이 있는데 RPC는 원격 프로시저 절차 호출로 네트워크 상의 다른컴퓨터의 위치하고 있는 프로그램에 서비스를 요청하는데 사용되는 프로토콜입니다.


NFS서버 설정에 사용되는 파일이 3가지 있습니다.

/etc/export파일은 NFS서버 설정파일로 모든 파일과 디렉토리를 정의하기 위해서 사용하고 /etc/fstab파일은 NFS서버에서 설정한 공유 디렉토리를 NFS클라이언트에서 사용하기 위해 사용되는 파일이며 /etc/sysconfig/nfs 파일은 NFS서버에서 제공하는 NFS서비스를 위해 사용되는 모든 포트에 대한 정보를 설정하는 파일입니다.


NFS서버를 만들어보겠습니다.

실험을 위해 A리눅스와 B리눅스 두개가 필요합니다. A리눅스에 yum -y install nfs-utils 패키지를 설치합니다.

mkdir /var/server_share 디렉토리를 만들어줍니다 이 디렉토리는 공유를 허용할 디렉토리로 /var안에 디렉토리를 꼭 만들필요는 없습니다. chmod -R 777 /var/server_share 를 입력하여 클라이언트가 이 디렉토리에 접속해서 파일을 읽고 쓰는 권한을 주기위한 설정을 해줍니다. vim /etc/exports 파일에 NFS서버설정을 해줍니다. 아래의 글을 vim 편집기로 입력해줍니다. 

/var/server_share/ 100.100.100.0/24(rw,sync,no_root_squash,no_all_squash) 를 입력해줍니다.

위의 글을 해석해보면 /var/server_share 는 디렉토리이름이고 100.100.100.0/24는 ip범위 및 도메인이고 rw는 공유 디렉토리에 대한 읽기 및 쓰기 권한을 허용하는 옵션으로 ro는 읽기만 가능한 옵션입니다. sync는 파일시스템 변경시 즉시 이 변경사항을 동기화하는 옵션이고 no_root_squash는 클라이언트에서 사용자 root로 공유디렉토리 접근시 NFS서버 시스템에서도 사용자 root로 인식하고 권한을 부여하는 옵션인데 보안을 고려해서 root_squash로 설정을 하면 클라이언트의 사용자 root는 서버에서 nfsnobody로 매핑되어 인식시킬수있습니다. no_all_squash는 각 사용자의 권한을 공유 디렉토리에서도 허용하는 옵션으로 서버와 클라이언트에 동일한 계정이 있다면 같은 계정으로 인식하여 동일한 권한을 적용합니다.


/etc/exports파일을 수정했다면 exportfs -r 명령어로 변경사항을 적용합니다. NFS서버는 nfs데몬을 재시작해서 변경사항을 적용하지 않습니다. 

exportfs 명령어는 NFS서버를 다시 시작하지 않고도 공유 목록을 수정할수있는데 옵션 몇 가지를 알아보겠습니다.

-a 는 /etc/exports 파일을 읽어 들입니다

-r 는 /etc/exports 파일을 다시 읽어 들입니다.

-u 는 [ip]:/[디렉토리] 입력한 디렉토리를 공유 목록에서 제외 합니다.

-v 는 현재의 공유목록을 확인합니다.


NFS서버의 설정을 끝냈다면 시작해보겠습니다.

service rpcbind start와 service nfs start 를 입력해서 시작합니다. rpcbind데몬을 먼저 시작해야 합니다.

rpcinfo -p 명령어를 사용해서 RPC의 일부 서비스의 포트를 동적으로 사용하여 NFS 사용시 포트를 확인할 필요가 있습니다. 

vi /etc/sysconfig/nfs 파일에서 포트에 관한 설정을 합니다. 단 iptables데몬을 stop했다면 포트설정을 하지 않아도 됩니다.

ex) STATD_PORT=4000

LOCKD_TCPPORT=4001

LOCKD_UDPPORT=4001

MOUNTD_PORT=4002

RQUOTAD_PORT=4003

위와 같이 nfs파일에 설정해주면 됩니다.


B리눅스로 넘어가서 yum -y install nfs-utils 패키지를 설치합니다.

service rpcbind start와 service nfs start 를 입력해서 데몬을 실행시키고 mkdir /mnt/client_share로 마운트가 될 디렉토리를 만들어줍니다. showmount -e NFS서버IP 를 입력해서 NFS서버가 어떤 공유디렉토리를 제공하고 있는지 알아봅니다.

마운트하는 법은 ex) mount /dev/sdb1 /DIR1 인데 NFS서버의 공유 디렉토리를 마운트하려면 아래와 같은 명령어를 입력합니다.

mount 100.100.100.110:/var/server_share/ /mnt/client_share/ 를 입력하면 마운트가 됩니다. mount | grep server 로 마운된것을 확인가능합니다.

umount /mnt/client_share 명령어로 언마운트도 가능합니다. NFS서버를 사용한다면 부팅할떄마다 설정을 해줘야하는데 

vim /etc/fstab 파일에 100.100.100.110:/var/server_share/ /mnt/client_share/ nfs defaults 0 0 를 입력해주면 앞으로 부팅할때 마다 자동으로 마운트를 해줍니다. 위의 명령어중 ip는 자신이 만든 NFS서버 ip로 해줍니다.


'서버운영 > Linux' 카테고리의 다른 글

리눅스 PXE  (0) 2017.09.25
리눅스 Samba(삼바) 서버 설정  (0) 2017.09.23
리눅스 FTP 설정  (0) 2017.09.21
리눅스 DNS 고급설정  (0) 2017.09.19
리눅스 DNS 설정  (0) 2017.09.18
Comments