hann-blume
Linux - NFS (Network File System) 본문
NFS (Network File System)
- NFS는 Unix & Linux system 간
File System을 공유하는 서비스 (즉 파티션을 공유하는 서비스)
- NFS Server(100), NFS Client(150)
- NFS Server에서 File System을 공유하고, NFS Client에서 공유된 File System을 Mount
- Portmapper가 반드시 동작해야 사용이 가능하다.(rpcbind)
NFS 패키지 설치(서버,클라이언트(Server(B) 둘다)
# yum -y install nfs*
실행
# systemctl start rpcbind
자동시작
# systemctl enable rpcbind
방화벽
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --reload
# rpcinfo -p
[NFS Server]
ex)
**1GB SCSI HDD 추가 **
# fdisk /dev/sdb
파티션 작업을 해준다.
Primary Partition : 200(M) 200(M) 200(M)
Extended Partition : 400(M)
Logical Partition : 200(M) 200(M)
# vi /etc/fstab
- Auto Mount 설정까지 전부 진행
mkdir /nfs_server1~/nfs_server5
Mount Point : /nfs_server1 /nfs_server2 /nfs_server3 /nfs_server4 /nfs_server5
NFS 서버 설정 파일
# vi /etc/exports -> 비어있다.
형식
# [share Dir] [Allow Host/Network] [Option] -> 내가 공유하고자하는 디렉터리와 접근가능한 네트워크, 옵션
↑ 형식이므로 주석처리해놓고 적어놓으면됨. 안해도 무방.
↓ Allow Host의 형식은 아래 3가지 중 한가지로 입력하면 된다.
192.168.1.150 -> 허용하고자하는 호스트 주소를 명확히 명시
192.168.1.0/24 -> 허용하고자하는 호스트 범위
* -> 모든 호스트 주소
옵션은 다음과 같다
sync는 여러 사용자가 동시에 작업을 하는 상황에서는 허용해서는 안된다.
sync는 wdelay와 함께 쓰인다.
async는 no_wdelay는 함께 쓰인다.
입력해줄것.
/nfs_server1 192.168.131.150(rw,no_root_squash,sync)
/nfs_server2 192.168.131.0/24(rw,root_squash,async,no_wdelay)
/nfs_server3 *(rw,all_squash,sync)
/nfs_server4 *(rw,all_squash,anonuid=1005,anongid=1005,sync)
/nfs_server5 192.168.131.150(rw,no_root_squash,sync)
root_squash
아무리 클라이언트에서 root계정으로 변환해서 접근하더라도 이 옵션이 있으면 nfsnobody 접근으로 바뀌고,
그렇기 때문에 other가 되며, other에 w권한이 없으면 쓰기가 불가능하다.
no_root_squash
이 옵션이 설정되면 server로 접근하고나서도 server의 root의 권한을 그대로 사용 가능하다.
보안때문에 잘 사용하지 않는다.
all_squash
클라이언트의 모든 계정 접근시 nfsnobody로 접근하는 것으로 바뀐다.
가장 보안적으로 안전하다.
no_all_squash
클라이언트에서 로그인한 계정이 server에도 있으면 해당 계정으로 접근이 되고
server에 같은 계정이 없으면 nfsnobody로 설정한다.
(nfs는 기본 포트=2049번)
# systemctl start nfs-server
# systemctl enable nfs-server
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --reload
이제 더 많은 정보가 출력된다.
# rpcinfo -p
확인
# exportfs -v
변경사항이 생겼을 때
systemctl start nfs-server과 같은 재시작이 아닌
실시간으로 변경사항을 적용시키는 명령어
# exportfs -ra
gid가 1005번인 그룹생성
# groupadd -g 1005 nfs_group
nfs_user라는 uid 1005를 가지며 nfs_group 그룹에 속해있는 유저를 만든다.
# useradd -u 1005 -g nfs_group nfs_user
nfs_user의 id 정보확인
# id nfs_user
이제
Server(B)(클라이언트)으로 와서
nfs의 오토마운트를 시켜주는 패키지 설치
# yum -y install autofs-*
autofs 설정파일
# vi /etc/autofs.conf
8 #master_map_name = auto.master
주석을 풀어준다. misc라는 최상위 디렉터리에 마운트 포인트들이 만들어지는데
이 위치를 바꾸고 싶을 때 auto.master이라는 설정파일을 사용한다.
그 파일을 사용하겠습니다라고 주석을 풀어준다.
15 timeout = 300
300초 동안 별다른 작업이 없을 시에는 연결을 끊는 옵션(연결 유지시간)
네트워크적인 소모를 줄이기 위해 설정해준다
여기서는 10초로 바꾸주자
51 browse_mode = no
클라이언트 측에서 생성되는 M.P를 탐색을 해서 연결을 할 것이냐는 옵션.
yes로 바꿔준다.
auto.master 설정
# vi /etc/auto.master
7 /misc /etc/auto.misc아래에
/NFS /etc/auto.custom 문장 추가.
여기서 /NFS는 마운트 포인트들이 만들어지는 위치이다.
그리고 이 /NFS에 대한 설정은 /etc/auto.custom 에서 관리하겠다는 의미이다.
auto.custom은 없지만 새로 만들어주는 것이다.
# mkdir /NFS
# vi /etc/auto.custom
nfs_client1 -rw,hard,intr 192.168.131.100:/nfs_server1
nfs_client2 -rw,hard,intr 192.168.131.100:/nfs_server2
nfs_client3 -rw,hard,intr 192.168.131.100:/nfs_server3
nfs_client4 -rw,hard,intr 192.168.131.100:/nfs_server4
nfs_client5 -rw,hard,intr 192.168.131.100:/nfs_server5
nfs_client1의 이름의 디렉터리를 만들고, 이것을
192.168.131.100의 /nfs_server1라는 공유디렉터리에
rw의 권한으로 연결을 해주겠다 라는 의미이다.
(만약 위처럼 오토마운트가 아닌 1회성으로 마운트해서 사용을 하고싶다면
# mount -t nfs 192.168.131.100:/nfs_server1 /nfs_client
이런 명령을 사용하면 된다.)
# systemctl start autofs
# systemctl enable autofs
# ls -l /NFS
확인해보면 마운트포인트가 자동으로 만들어진 것을 알 수 있다.
# cd /NFS/nfs_client1
# touch A
# ls -l ./
파일이 잘 만들어진것 확인
100번(서버)로 다시 넘어와서 확인
ls -l /nfs_server1
마찬가지로 만들어진 파일 확인
150(클라이언트)로 넘어온후
# cd /NFS/nfs_client2
# touch B
= 허가거부
# cd /NFS/nfs_client3
# touch C
= 허가거부
# cd /NFS/nfs_client4
# touch D
= 허가거부
# cd /NFS/nfs_client5
# touch E
잘 만들어짐.
여기서 nfs_client1과 5만 파일이 잘 만들어지는 것을 알 수 있다.
이유는 NFS 서버 설정 파일에서 작업했던 squash 옵션 때문이다.
서버로 넘어와서
# ls /nfs_server*
로 확인
예로 nfs_server2는 root_squash이기 때문에 nfsnobody로 전환되는데
# ls -ld /nfs_server2 로 확인해보면
root root 이므로 nfsnobody는 other가 된다
근데 other의 권한은 r-x로 쓰기권한이 없기 때문에 파일이 만들어지지 않는 것이다.
다시 클라이언트로 와서
아래작업을 연달아서 해보자
# cd /NFS/nfs_client1
# cd /NFS/nfs_client2
# cd /NFS/nfs_client3
# cd /NFS/nfs_client4
# cd /NFS/nfs_client5
그리고
# df -h로 확인 해보면
연결정보가 나온다.
이정보는 설정해준 30초가 지나면 연결이 끊겨서 보이지않는다.
# cd ~
나온 후에 기다려보자
30초 후....
# df -h
(만드는 작업은 클라 / 확인작업은 서버에서 하면된다)
여기까지 NFS 에 대한 설명이 끝났다.
'Linux' 카테고리의 다른 글
Linux - Backup (0) | 2020.03.22 |
---|---|
Linux - Samba (0) | 2020.03.21 |
Linux - FTP (File Transfer Protocol) (0) | 2020.03.21 |
Linux - VNC (Virtual Network Computing) (0) | 2020.03.21 |
Linux - SSH (Secure Shell) (0) | 2020.03.21 |