본문 바로가기

리눅스-기초명령어/공유디렉토리

NFS

NFS

TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉토리인 것처럼 사용 할 수 있게 한다 즉, 네트워크로 연결된 서로 다른 컴퓨터의 디스크 공간을 하나로 묶어 하나의 디렉토리 구조로 파일을 공유하는 방식

 

 

설정파일 /etc/exports

설정할 때는 줄 단위로 외부에 공유할 디렉토리를 입력하고 공백으로 구분한 뒤에 허가할 호스트를 지정 및 옵션을 기입

 

설정법

공유할 디렉토리 허가할 호스트 허가할 호스트 옵션

      /nfs             192.168.20.74 (rw)

 

* 호스트ip에 *을 입력하면 모든 호스트에게 허용

 

호스트 옵션

 

옵션 설명
ro 읽기 전용으로 지정하는 옵션
rw 읽기 및 쓰기가 가능하도록 지정
root_squash NFS 클라이언트에서 접근하는 root를 무시하고 서버상의 nobody로 매핑시키는 옵션
no_root_squash root사용자를 무시하지않고 인정한다
no_subtree_Check 하위 디렉토리를 검사하지 못하도록 설정정
all_squash root를 포함하여 모든 사용자의 권한을 nobody로 매핑핑
secure 포트 번호가 1024이하인 요청만 허가 (기본값)
sync 변경사항이 안정적일때만 허가 (기본값)
async 데이터 변경에 비동기적 처리할때 사용
쓰기가 설정된 디스크 스토리지에 사용하면 유용하다
anonuid 접근 하는 사용자 권한을 지정하는 uid로 매핑 시키는 설정
anongid 접근 하는 그룹 권한을 지정하는 gid로 매핑시키는 설정

 

1. showmount

NFS 서버의 마운트 관련 정보를 출력하는 명령

 

사용법

showmount [option] [호스트명]

 

옵션

 

옵션 설명
-a 호스트명:디렉토리 형태로 출력
-e [호스트명] export된 리스트 출력
-d NFS 클라이언트에 의해 마운트된 디렉토리 정보 출력 

2. exportfs

nfs 서버에 export된 디렉토리 정보를 관리 해준다

 

옵션

옵션 설명
-a 모든 export된 디렉토리 출력
-v 설정된 내용을 자세히 출력
-r /etc/exports에 설정된 내용을 다시 읽음
-u export된 디렉토리 해제

 

3. NFS 서버 설정

nfs-utils 패키지 설치

[root@Linux ~]# dnf install nfs-utils
...
Complete!

 

nfs-server 데몬 실행

[root@Linux ~]# systemctl enable --now nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

 

4. 서버측에서 해야할 일

  1. 공유할 디렉토리, 설정 등을 지정
[root@Linux ~]# mkdir /nfs
#공유할 디렉토리 생성
[root@Linux ~]# vi /etc/exports
# vi 편집창
/nfs 192.168.20.49(rw)   # 클라이언트의 ip
# /nfs 디렉토리를 192.168.20.49에게 rw권한으로 공유  
[root@Linux ~]# exportfs -r
# vi 편집기에서 작성한 설정을 reload

 

  1. firewall을 종료 후 nfs 데몬 재시작
[root@Linux ~]# systemctl stop firewalld
[root@Linux ~]# systemctl restart nfs-server
[root@Linux ~]# chmod 777 /nfs #nfs 폴더에 권한을 설정



5. 클라이언트에서 접속

서버pc와 연결 설정(재부팅시에도 마운트를 유지하기 위해)

[root@rocky2 ~]# vi /etc/fstab
/192.168.20.29:/nfs     /nfs_client             nfs     _netdev               0 0

 

서버pc에서 공유한 디렉토리 확인

[root@rocky2 /]# showmount -e 192.168.20.29 #접속할 서버의 ip
Export list for 192.168.20.29:
/nfs 192.168.20.49   # 서버pc에서 공유한 디렉토리와 공유한 대상의 ip가 se출력

 

서버에서 지정한 디렉토리를 자신의 디렉토리로 마운트

[root@rocky2 ~]# mount -t nfs 192.168.20.29:/nfs /nfs_client
# 192.168.20.29의 /nfs디렉토리를 자신의 /nfs_client디렉토리에 마운트

 

6. 연결 확인

클라이언트 디렉토리에 파일 생성

[root@rocky2 ~]# cd /nfs_client
[root@rocky2 nfs_client]# touch Hi.txt

 

서버pc에서 확인

[root@Linux ~]# exportfs # 현재 연결되어있는 pc 확인
/nfs          192.168.20.49
[root@Linux ~]# cd /nfs
[root@Linux nfs]# ls
Hi.txt
# 클라이언트에서 만든 Hi.txt파일이 서버에서도 적용되어있음

 

서버pc에서 연결 종료

[root@Linux nfs]# exportfs -au # 연결된 디렉토리를 모두 종료
[root@Linux nfs]# exportfs # 확인해도 표시되지 않음. 재연결시 -r옵션 사용

 

클라이언트에서 확인

[root@rocky2 nfs_client]# ls
ls: cannot open directory '.': Permission denied
# 서버에서 연결을 종료해 접근할 수 없음
[root@rocky2 nfs_client]# cd ..
[root@rocky2 /]# umount /nfs_client # 클라이언트에서 마운트 해제

 

'리눅스-기초명령어 > 공유디렉토리' 카테고리의 다른 글

SAMBA  (0) 2023.09.01
iSCIS  (0) 2023.09.01