NFS (Network File System)
네트워크로 저장 공간을 공유해서 사용하는 것
대표적인 형태
NAS(Network Area Storage) >> SAN (Storage Area Network)
구축 난이도도 높고 비용도 더 많이 들지만 요즘은 SAN 환경을 더 많이 쓰는 추세
일반적인 네트워크 환경을 이용하여 자신의 File System을 공유하는 서비스
가장 대표적인 NAS 환경을 구출할 수 있는 서비스
역할 : NFS Server (file system 공유) / NFS Client (공유 된 file system을 사용)
공유된 file system에 접근하기 위해서는 Portmapper 사용 (rpc-bind 패키지)
NFS 계정 Mapping Option
실질적인 권한 부여 옵션
모든 공유 디렉토리에는 Root Mapping 옵션과 그 외 사용자를 위한 Mapping 옵션 2가지가 반드시 설정
옵션 지정하지 않을 경우 기본값(*)으로 자동 설정
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) |
(*) - default
linux01 : server (hdd 1G 추가)
/dev/sdb1을 /nfs_server1에 마운트
linux01:/nfs_server1을 linux:02/nfs_client1에 type nfs로 마운트
#Server 설정
primary partition 250M 4개
auto mount
mount point(/nfs_server1)를 공유하는 것
client는 공유된 디렉토리에 접근하는 것
추가적인 파티션에 마운트 된 디렉토리를 공유해야하지
그냥 폴더 만들어서 공유해버리면 / 아래 디렉토리를 모두 공유해버리게 된다.
재부팅
오토마운트 확인
패키지 설치
의존성에 의해서 rpcbind도 자동으로 설치됨
방화벽 설정
vi /etc/exports
squash 옵션 보안에 취약한 옵션
no_root_squash 쓰면 안된다.
정확히 알고 사용해야한다.
/nfs_server1에 192.168.1.150 사용자만
/nfs_server2에 192.168.1.0/24 대역대 사용자만
/nfs_server3에 전체 공개
/nfs_server4에 192.168.1.150 사용자만
데몬 활성화
확인
동시에 여러 사용자가 작업을 허용해서는 안된다.(데이터 무결성 위배)
nlockmgr가 lock 담당
exportfs -ra
누군가 데이터를 전송중에 systemctl restart하면 전송이 끊기게 된다
서비스 중지없이 exports내용을 수정할 수 있는 명령어
exportfs -v
공유 정보
sync/async(동기식/비동기식 작업) <ㅡ> wdelay/no_wdelay(write delay)
동기식은 실시간 작업
비동기식은 캐시메모리에 버퍼공간을 만들게되고 저장된 데이터 단위씩 저장하는 작업
다중사용자가 작업하는 환경이면 async
hide
다중마운트 진행할때 사용
subtree_check
하위트리구조 확인
sec=sys
보안설정
어떤 방식으로 인증을 할 것인지
rw/ro
읽기,쓰기 권한
secure/insecure
포트번호의 범위
secure - 1024보다 작은 포트번호만 수락
insecure - 1024보다 큰 포트번호만 수락
루트계정을 위한 mapping 옵션(root_squash)
client:root > server:root (no_root_squash) 절대 쓰면 안됨
client:root > server:nfsnobody (root_squash)
일반계정을 위한 mapping 옵션(all_squash)
client:user > server:user (no_all_squash) 잘 안씀
client:user > server:nfsnobody (all_squash)
nfsnobody
nfsnobody 용 계정을 미리 만들어서
vi /etc/exports에 anonuid,anongid 지정
linux02 : client
#Client 설정 및 파일생성 후 server 확인
데몬 실행 및 활성화
/nfc_server를 마운트
root 계정으로 접속(root_squash, no_root_squash)
linux02 /nfs_client1/A 생성하면 linux01 /nfs_server1에 A가 생성되어있다.
nfsnobody는 nfs_client2에 쓰기권한이 없기 때문
권한을 바꾸고 생성하면 nfsnobody 소유권으로 만들어진걸 확인할 수 있다.
itbank 계정으로 접속(all_squash, no_all_squash)
nfs_server1과 2 모두 no_all_squash이기때문에
itbank계정으로 접속
server2는 위에서 권한을 바꿨기 때문에 잘 생성되지만 server1는 안되는걸 볼 수 있다.
nfs_server3(all_squash, root_squash, anonuid=1005, anongid=1005)
server PC 에 uid,gid 1005인 그룹과 계정 생성
/nfs_server3의 그룹소유권 설정
nfs_user로 생성된걸 확인할 수 있다.
vi /etc/fstab
재부팅 시 자동 연결 확인
autofs
(/etc/fstab 이전에 작업한 오토마운트 설정 삭제)
yum -y install autofs-*
자동으로nfs 연결
fstab을 사용안하려고 이용하는 서비스
하지만 보통 fstab을 씀
vi /etc/autofs.conf
8번째 줄 주석 해제
master_map_name = auto.master
auto.master들어가서 추가로 설정
15번째 줄
timeout = 30
51번째 줄
browse_mode = yes
vi /etc/auto.master(마운트되는 디렉토리 설정)
mkdir /nfs
vi /etc/auto.nfs
[마운트 포인트] -rw,hard,intr [연결 대상]
데몬 재실행 하고 재부팅 후 오토마운트 확인
연결안됨
하지만 /etc/auto.master와 /nfs/nfs_c 위치로 접근하면
마운트가 올라오고 아직 접근안한 nfs_c4는 아직 마운트가 안될걸 확인할 수 있다
cd /으로 다시 빠져나오면 .
vi /etc/autofs.conf
15번째 줄
timeout = 30 설정에 의해 30초 뒤에 다시 마운트가 해제된다.
'[Linux]' 카테고리의 다른 글
[Linux] ELK 실습 (0) | 2022.06.20 |
---|---|
[Linux] 리눅스 log (0) | 2022.06.16 |
[Linux] FTP 실습 (0) | 2022.06.14 |
[linux] 리눅스 ftp (filezilla) (0) | 2022.06.13 |
[Linux] 리눅스 ssh scp (0) | 2022.06.13 |