엔지니어 은성의 성장록

[NFS] Virtual Box CentOS 운영체제에서 Network File System NFS 설정하는 방법 본문

카테고리 없음

[NFS] Virtual Box CentOS 운영체제에서 Network File System NFS 설정하는 방법

엔지니어 은성 2021. 9. 10. 16:15

1. NFS의 개념

network file system은 리눅스, 유닉스 시스템 사이에서 파일과 폴더를 공유하기 위해 사용하는 분산된 파일 시스템 프로토콜입니다. 

 

 

2. NFS를 왜 사용할까요?

파일을 공유하기 위해서 파일 시스템에 마운팅 하는 것이 가능해지면 NFS-Client는 NFS-Server의 파일에 로컬 파일인 것처럼 접근할 수 있습니다.

 

3. NFS 설정하는 방법

client - server 모델처럼 server client 각각 설정해야 합니다.  

virtual Box에서 실행하기 위해서 client와 server를 각각 만들어줍니다.

 

4. NFS-server 설정 

//nfs-utils 설치
# sudo su -
# yum install nfs-utils


//공유할 디렉토리 선택, 없다면 생성
# mkdir /var/nfs_share_dir


//공유되는 디렉토리에 대한 권한과 소유권 ADD
# chmod -R 755 /var/nfs_share_dir
# chown nfsnobody:nfsnobody /var/nfs_share_dir

#nfs 서비스 시작
# 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

// 파일공유를 위해 export file 설정
# vi /etc/exports

//파일 공유 경로와 client 정보를 /etc/exports에 채워줍니다.
// client IP 172.30.1.15
//vi 파일 수정 내용
/var/nfs_share_dir 172.30.1.15(rw,sync,no_root_squash)


// nfs-server 재시작
# systemctl restart nfs-server


// CentOS7에서는 NFS 서비스 재정의
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload

 

5. NFS-Client 설정

// nfs-utils 설치 
# sudo su -
# yum install nfs-utils

// 마운트 포인트 생성
# mkdir -p /mnt/nfs/var/nfs_share_dir

// 파일시스템에 마운팅
# mount -t nfs 172.30.1.13:/var/nfs_share_dir /mnt/nfs/var/nfs_share_dir

-t type of filesystem
172.30.1.13 server's IP


//마운트 되었는지 확인
# df -kh

//영구적인 마운팅을 하려면 /etc/fstab 파일을 수정
//vi /etc/fstab 
//172.30.1.13:/var/nfs_share_dir /mnt/nfs/var/nfs_share_dir nfs defaults 0 0 


//Client - Side에서 echo 
# echo "Client Hello" >> /mnt/nfs/var/nfs_share_dir/testing.txt

 

nfs  /etc/exports의 옵션 정리

ro,rw 읽기 전용,읽고쓰기
root_squash 클라이언트의 관리자가 서버쪽으로 요청시 익명계정으로 매핑

* 클라리언트가 root권한 획득을 막는다.
uid/gid가 0의 요청을 익명의 uid/gid(nobody)로 매핑한다. 
그외 uid/gid(일반 계정)에 대해서는 해당되지않는다. 디폴트 값이다.
all_squash 클라이언트의 관리자를 포함하여 모든 사용자가 서버쪽으로 여청시 익명 계정으로 매핑 
모든 uid,gid를 익명사용자에게 매핑합니다. 디폴트 값입니다.
sync 쓰기 실행후 디스크 동기화 시행 
no_root_squash 클라이언트의 관리자가 서버쪽으로 요청시 서버 쪽 관리자 계정으로 매핑
클라이언트가 root 권한 획득가능, 파일 생성시 클라이언트 권한으로 생성된다.
no_all_squash root를 제외한 일반 사용자 계정에 대해  모든사용자로 서버쪽으로 요청시 동일한 사용자 계정으로 매핑 

 

Comments