이번 포스팅에서 다룰 내용은 다음과 같습니다.

(1) NFS?

(2) NFS 서버 설정

(3) NFS 클라이언트 연결

(4) NFS 주요 옵션

 

그럼 시작해볼까요???

 

(1) NFS?

리눅스 서버를 구축/운영하다 보면 NFS 설정해야 하는 경우가 발생합니다.

NFS 네트워크 상에서 다른 컴퓨터의 파일 시스템을 마운트해서 공유하는 것을 의미합니다.

다른 컴퓨터의 파일 시스템을 마치 자기 것처럼 사용할 있는 것이죠.

 

이렇게 NFS 설정하는 것은 어렵지 않습니다.

다만 가지 옵션이 존재하는데, 옵션들이 무얼 뜻하는지도 알고 넘어가야겠죠?

우선 NFS 서버 설정을 Step-by-Step으로 따라해보고, 이후에 설정한 것이 어떤 의미를 갖는지, 그리고 어떠한 다른 설정을 있는지 확인해보겠습니다.

 

실습 환경은 다음과 같습니다.

- NFS 서버

1) Hostname: localhost (호스트명을 주지 않았습니다..)

2) IP Address: 192.168.192.158

3) OS: CentOS7

- NFS 클라이언트

1) Hostname: nameserver ( 의미 없습니다. 그냥 이름입니다.)

2) IP Address: 192.168.192.150

3) OS: CentOS6.9

 

(2) NFS 서버 설정

우선 NFS 걸어 놓을 디렉터리를 하나 만들어줄까요?

저는 루트 밑에 nfsdir이라는 디렉터리를 하나 만들었습니다.

[root@localhost ~]# mkdir /nfsdir

 

NFS 서버 설정의 번째는 /etc/exports 파일에 접근 설정을 해주는 것입니다.

아래와 같이 /nfsdir 디렉터리를 NFS 클라이언트인 192.168.192.158 에게 공유를 걸어줍니다.

(뒤에 따라 붙는 옵션들은 뒤에서 설명하겠습니다.)

[root@localhost ~]# vi /etc/exports

/nfsdir 192.168.192.150(rw)

 

, 그러면 NFS 서버 데몬을 시작합니다.

[root@localhost ~]# systemctl start rpcbind

[root@localhost ~]# systemctl start nfs

 

이렇게 하면 NFS 서버 설정이 끝났습니다!!

간단하죠?

 

아직 남아있는게 있는데, 방화벽 설정입니다!

CentOS6.X 까지만 하더라도 iptables 방화벽을 관리해야해서 재부팅시마다 변경되는 포트 때문에 고생했을 텐데요, CentOS7에서는 firewalld 데몬이 나오고, firewall-cmd 커맨드를 통해서 쉽게 관리할 있습니다.

그럼 간단하게 nfs 서비스에 대해서 방화벽을 오픈해볼까요?

[root@localhost ~]# firewall-cmd --permanent --add-service=nfs

success

[root@localhost ~]# firewall-cmd --reload

success

[root@localhost ~]# firewall-cmd --list-all

public (default, active)

  interfaces: eno16777736

  sources:

  services: dhcpv6-client nfs ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

 

, 이제 서버쪽 설정은 끝났습니다.

 

이제 NFS 클라이언트에 들어가서 마운트를 해볼까요?

 

(3) NFS 클라이언트 연결

여기도 NFS 걸어 놓을 디렉터리를 하나 만들어서 여기다가 마운트를 해보죠.

[root@nameserver /usr]# mkdir /usr/nfsdir

 

, 이제 다음과 같이 nfs 타입으로 마운트를 걸어 줍니다.

[root@nameserver /usr]# mount -t nfs 192.168.192.158:/nfsdir /usr/nfsdir

 

! 간단하죠 역시?!

 

이제 테스트를 해볼까요?

서버 쪽에서 파일을 하나 만들고, 클라이언트 쪽에서 파일이 보이는지 테스트해봅시다!

 

우선 서버에서~

[root@localhost ~]# touch /nfsdir/testfile

 

이번엔 클라이언트에서 확인해볼까요~

[root@nameserver /usr]# ls /usr/nfsdir/

testfile

 

, 보이죠? 이렇게 서버 쪽의 파일 시스템을 클라이언트에서도 동일하게 사용할 있는거예요.

그럼 하나 생각나는건 없으세요?

바로 권한 관리입니다.

권한 관리 때문에 rw, ro 등의 옵션들이 있는거죠.

그럼 NFS에는 어떤 주요 옵션들이 있는지 확인해봅시다!

 

(4) NFS 주요 옵션

NFS 환경설정 파일 주요 옵션 (/etc/exports)

ro: 읽기 전용 (기본값)

rw: 읽기/쓰기

no_root_squash: 클라이언트에서 접근하는 root 인정

root_squash: 클라이언트에서 접근하는 root 무시. 서버 상의 nobody 매핑 (기본값)

all_squash: root 포함하여 모든 사용자의 권한을 nobody 매핑

no_subtree_check: 하위 디렉터리를 검사하지 못하도록 설정

secure: 포트 번호가 1024 이하의 요청에만 허가

async: 데이터 변경을 비동기식으로 처리. 쓰기가능한 디스크 스토리지에 사용하면 유용

anonuid: 접근하는 사용자 권한을 지정한 uid 매핑

anongid: 접근하는 그룹 권한을 지정한 gid 매핑

 

지금까지 NFS 설정에 대해 알아보았습니다.

도움이 되시길…!!

 

참고자료:

정성재,배유미 공저(2018), "리눅스마스터 1 정복하기(1,2 시험대비) 8"

+ Recent posts