반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

hann-blume

Linux - NFS (Network File System) 본문

Linux

Linux - NFS (Network File System)

hann-blume 2020. 3. 21. 22:04

 

 

 

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