2022. 11. 28. 14:42ㆍ리눅스(Linux)
NFS (Network File System)
- 일반적인 네트워크 환경을 이용하여 자신의 File System을 공유하는 서비스
- 가장 대표적인 NAS 환경을 구축할 수 있는 서비스
- 역할 : NFS Server(File System 공유) / NFS Client (공유 된 File System을 사용)
- 공유 된 File System에 접근하기 위해서는 반드시 Portmapper의 도움을 받아야 한다. (rpc-bind 패키지)
NAS(Network Area Storage)
- 네트워크를 이용하여 스토리지를 연결하는 방식, NFS, 일반 스위치
SAN(Storage Area Network)
- 광케이블 연결, SAN 스위치
$ NFS 계정 Mapping Option : 실질적인 권한부여 옵션
- 모든 공유 디렉터리에는 root Mapping 옵션과 그 외 사용자를 위한 Mapping 옵션 2가지가 반드시 설정된다.
- 옵션을 지정하지 않을 경우 기본값(*)으로 자동설정 (* = default값)
root_squash(*) : Client에서 root로 접근 시 Server의 nfsnobody 계정으로 Mapping
no_root_squash : Client에서 root로 접근 시 Server의 root 계정으로 Mapping
all_squash : Client의 모든 계정 접근 시 Server의 nfsnobody 계정으로 Mapping
no_all_squash(*) : Client의 모든 계정 접근 시 Server의 동일 계정으로 Mapping(동일계정 x : nfsnobody)
- squash 옵션은 보안이랑 근접한 관계라 사용시 주의
- no_root_squash : 절대로 사용하면 안되는 옵션
- // * : 어디서든 접속할 수 있는 명령어, 사용안하는게 좋음
$ NFS 설치 및 운용
# yum -y install nfs*
# yum -y install rpc-bind
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --reload
# vi /etc/exports
[Share Dir] [Allow Host/Network][(Option)]
/nfs_server1 192.168.1.150(rw,no_root_squash,sync)
/nfs_server2 192.168.1.0/24(rw,sync,no_wdelay)
/nfs_server3 *(rw,all_squash,anonuid=1005,anongid=1005,sync)
/nfs_server4 192.168.1.150(rw,no_root_squash,sync)
#systemctl start nfs-server
#systemctl start rpcbind
#systemctl enable nfs-server
#systemctl enable rpcbind
#rpcinfo -P
Service (portmapper)
- 활성화된 상태
Service (nlockmgr)
- 락이 걸려있는 상태
- 파일 시스템을 공유한 상태로 내부로 들어있는 데이터를 동시다발적으로 사용하는 환경이 만들어졌을 때 동시다발적으로 쓰기 작업이 절대로 허용하면 안된다.(무결성이 깨져버리기 때문) EX.데이터 베이스
# exportfs -ra
- 서비스를 재시작하지 않아도 변경사항을 해당프로세스에 적용
- /etc/exports를 편집할 상황이 생겼을때 적용하면 restart해야 하지만
누군가가 데이터를 전송 사용 중일 때 데이터 손실을 막기위해 사용
# exportfs -v
/nfs_server1 192.168.1.150(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/nfs_server4 192.168.1.158(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/nfs_server2 192.168.1.0/24(sync,no_wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/nfs_server3 *(sync,wdelay,hide,no_subtree_check,anonuid=1005,anongid=1005,sec=sys,rw,secure,root_squash,all_squash)
- nfs 공유 정보 확인
- nfs_server1~4까지 모두 공유가 잘 된 상태
$ 옵션값 정의
옵션 | 설명 |
sync | 동기식 작업, 실시간 스트리밍 형식으로 데이터가 저장 실시간 데이터 작업 다중쓰기작업일 경우엔 쓰기지연이 많이 발생 |
async | 비동기식 작업, 하나의 블록단위가 만들어지고 한 덩어리씩 데이터가 저장되는 형식 캐시메모리에 버퍼 공간을 만들고 버퍼에 저장된 데이터가 단위형태로 실제 nfs서버에 저장되는 작업 다중사용자가 다중쓰기작업이 필요할 경우 사용 |
wdelay | sync와 세트 (async – no_wdelay) |
hide | 다중 클라이언트 일 때 사용(단일 호스트 일때는 no host를 사용한다고 명시), 보통 hide사용 |
no_subtree | 하위트리를 보여주지 않는다. |
sec=sys | 시스템 자체로 인증을 하겠다. 어떠한 형태로 인증을 할건지 명시(sec= ) |
rw | 읽고쓰는 권한을 주겠다. |
secure | 1024보다 낮은 port번호의 범위 (default) |
insecure | 1024보다 높은 port범위를 명시 |
anonuid=1005,anongid=1005 | 접근시 사용자 uid(1005) , gid(1005) 권한 부여 |
- squash옵션은 두개 사용해야한다, (모든 공유 디렉터리 옵션, 그외사용자를 위한 옵션)
- /nfs_server3옵션이 가장 이상적인 옵션
일반사용자를 위한 매핑
root계정으로 로그인하면 root가 되는게 아니라 nfs_nobody계정으로 접근된다.
nfs_nobody : 어떠한 권한도 없는 일반 사용자
- no_root_squash
client root, server root를 매핑하겠다.
허가되지 않은 사용자(해커)가 내 root를 만들어서 server의 root에 접근하면 안되기 때문에 사용하면 안되는 옵션
$ client 설정
# systemctl start rpcbind
# systemctl enable rpcbind
# rpcinfo -p
# mkdir /nfs_client1
# mkdir /nfs_client2
# mkdir /nfs_client3
# mkdir /nfs_client4
# mount -t nfs 192.168.1.100:/nfs_server1 /nfs_client1
# mount -t nfs 192.168.1.100:/nfs_server2 /nfs_client2
# mount -t nfs 192.168.1.100:/nfs_server3 /nfs_client3
# mount -t nfs 192.168.1.100:/nfs_server4 /nfs_client4
- 마운트해서 사용
#vi /etc/fstab
192.168.1.100:/nfs_server1 /nfs_client1 nfs defaults,_netdev 0 0
192.168.1.100:/nfs_server2 /nfs_client2 nfs defaults,_netdev 0 0
192.168.1.100:/nfs_server3 /nfs_client3 nfs defaults,_netdev 0 0
192.168.1.100:/nfs_server4 /nfs_client4 nfs defaults,_netdev 0 0
- 오토마운트 사용가능
합계 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 6월 15 13:06 B
- root 계정으로 접근해도 소유권이 nfsnobody 설정
$ autofs
- 자동 마운트 데몬의 작동을 제어하는 프로그램
- 자동 마운트 데몬은 자동으로 파일시스템을 마운트하며 파일시스템이 사용되지 않고 일정 시간이 흐르면 자동으로 언마운트 된다.
- 네트워크 파일시스템(NFS), CD-ROM 등을 자동 마운트 하는데 사용함
- auto.master(마스터맵을 정의하고있는 설정 파일명)에서 마운터 포인터를 저장하고 있을 작업 디렉토리를 정의
# yum -y install autofs-*
# vi /etc/autofs.conf
8 master_map_name = auto.master
- 주석풀기, 마스터맵을 정의하는 파일.
15 timeout = 30
- 30초 동안 아무작업 안할 시 연결이 끊김
51 browse_mode = yes
- 마스터맵을 사용하기 위해 yes로 설정
# vi /etc/auto.master
7 /misc /etc/auto.misc
8 /nfs /etc/auto.nfs
- 새로 위치 지정, 마운트 연결 정보를 설정한 디렉토리 하위에 저장
# mkdir /nfs
# vi /etc/auto.nfs
nfs_c1 -rw,hard,intr 192.168.1.100:/nfs_server1
nfs_c2 -rw,hard,intr 192.168.1.100:/nfs_server2
nfs_c3 -rw,hard,intr 192.168.1.100:/nfs_server3
nfs_c4 -rw,hard,intr 192.168.1.100:/nfs_server4
# vi /etc/fstab
- 중복이 일어나기에 fstab 정보 지우기
# systemctl restart autofs
# systemctl enable autofs
# cd /nfs
# ll
합계 0
dr-xr-xr-x 2 root root 0 6월 15 14:01 nfs_c1
dr-xr-xr-x 2 root root 0 6월 15 14:01 nfs_c2
dr-xr-xr-x 2 root root 0 6월 15 14:01 nfs_c3
dr-xr-xr-x 2 root root 0 6월 15 14:01 nfs_c4
# cat /etc/auto.nfs
nfs_c1 -rw,hard,intr 192.168.1.100:/nfs_server1
nfs_c2 -rw,hard,intr 192.168.1.100:/nfs_server2
nfs_c3 -rw,hard,intr 192.168.1.100:/nfs_server3
nfs_c4 -rw,hard,intr 192.168.1.100:/nfs_server4
# cd /nfs/nfs_c1
# cd /nfs/nfs_c2
# cd /nfs/nfs_c3
# cd /nfs/nfs_c4
- 디렉터리로 들어가야 마운트정보 표시
- 들어가는 행위가 사용하는것 자체가 됨
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.2M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 4.7G 13G 28% /
/dev/sda1 1014M 171M 844M 17% /boot
tmpfs 98M 12K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
192.168.1.100:/nfs_server4 270M 14M 256M 6% /nfs/nfs_c4
192.168.1.100:/nfs_server1 247M 13M 234M 6% /nfs/nfs_c1
192.168.1.100:/nfs_server2 247M 13M 234M 6% /nfs/nfs_c2
192.168.1.100:/nfs_server3 247M 13M 234M 6% /nfs/nfs_c3
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] Linux Backup 실습 (Tar, xfsdump, xfsrestore, dd, TimeShift, Rsync) (0) | 2022.11.29 |
---|---|
[Centos 7] Linux Backup 관리(Tar, xfsdump, xfsrestore, dd, TimeShift, Rsync) (0) | 2022.11.29 |
[Centos 7] FTP (File Transfer Protocol) (0) | 2022.11.28 |
[Centos 7] SSH-Keygen & SSH 공개키 생성 (1) | 2022.11.25 |
[Centos 7] sshd_config (SSH 설정 파일) (0) | 2022.11.25 |