목차
태그
#NETWORK
#NFS
NFS에 대하여
2024년 1월 18일 14:46

1. NFS란?
NFS(Network File System)는 네트워크에 파일을 저장하는 메커니즘입니다. 이 시스템은 사용자가 원격 컴퓨터에 있는 파일 및 디렉토리에 액세스할 수 있고 해당 파일 및 디렉토리가 로컬에 있는 것처럼 처리하도록 허용하는 분산 파일 시스템입니다.
예를 들어, 사용자는 운영 체제 명령을 사용하여 원격 파일 및 디렉토리에 대한 파일 속성을 작성, 제거, 읽기, 쓰기, 설정할 수 있습니다.
동작 구조
- 클라이언트-서버 구조를 이용해서 서비스를 제공합니다.
- NFS 클라이언트는 RPC(Remote Procedure Call)를 통해 접속하여 NFS 서버에 접근합니다.
2. NFS의 장단점
장점
- NFS는 파일 액세스에 필요한 네트워크 요청 수를 줄이는 캐싱 메커니즘 사용으로 파일 접근이 빠릅니다.
- 파일 잠금 지원함으로 다중 유저가 동시 수정 불가능하며 공유 및 공동작업 수행시 이점이 있습니다.
- 공통으로 사용되는 파일이 있으면 각 컴퓨터에 파일을 저장하지 않고 서버 1개에 저장하여 효율적으로 사용합니다.
단점
- 기본적으로 암호화 및 인증 미제공하기 때문에 다른 공유 프로토콜보다 보안수준 낮습니다.
- NFS는 서버와 클라이언트가 여러개인 대규모에서 구성 및 설정 어렵습니다.
- 네트워크를 이용하는 것이기 때문에 내장 하드, 혹은 DAS보다 속도가 느립니다.
3. 구축 방법
NFS Server
1️⃣ NFS 서버 패키지 설치
다운로드
apt update
apt install nfs-kernel-server
버전 확인
cat /proc/fs/nfsd/versions
서버 구성 디렉토리
# 1
/etc/default/nfs-kernel-server
# 2
/etc/default/nfs-common
2️⃣ NFS 설정 및 실행
디렉토리 설정
mkdir -p /home/nfs
chown -R nobody:nogroup /home/nfs
환경 설정
서버가 클라이언트에 노출하는 모든 디렉토리에 대한 정보를 담습니다.
vim /etc/exports
/home/nfs xxx.xxx.xxx.xxx (rw, sync, no_subtree_check)
아래는 아이피 뒤에 있는 ()
옵션으로 들어갈 수 있는 것들입니다.
rw
,ro
: 읽기/쓰기, 읽기 전용sync
: 변경사항 발생 시 동기적 저장 및 처리async
: 데이터의 변경에 대해 비동기적 처리root_squatsh
: 클라이언트의root
사용자를root
가 아닌 서버의nobody
유저의 권한으로 처리. 쓰기작업 시 클라이언트root
로 작업해도nobody
로 작업된다. 기본값.no_root_squatsh
: 클라이언트의root
사용자를root
그대로의 권한을 인정해줌. 클라이언트가 생성한 파일의 소유자가root
로 작성된다.(root
권한으로 작성된 파일은 보안에 민감할 수 있다.)all_squash
: 모든 클라이언트 사용자를nobody
유저로 매핑시킨다. 클라이언트는root
권한이 없이 작업하고 이는nobody
유저의 작업으로 된다.no_all_squash
: 공유된 디렉토리의 사용자(서버)와 클라이언트의 사용자가 일치해야한다.uid
와gid
가 일치하면 쓰기작업을 할 수 있다.no_subtree_check
: 클라이언트가 작업한 내용에 대해 무결성 검사를 하는 하위 트리 검사를 수행하지 않는다.
설정 적용
exportfs -a
systemctl restart nfs-kernel-server.service
실행 설치가 완료되면 NFS 서비스가 자동으로 시작됩니다.
NFS Client
1️⃣ 패키지 설치
apt update
apt install nfs-common
2️⃣ 마운트 설정
파일 생성
mkdir -p /home/nfs
마운트
mount -t xxx.xxx.xxx.xxx:/home/nfs /home/nfs
mount -t <NFS server IP>:/<server directory> <clinet directory>
언마운트
umount /home/nfs
umount <client direcotry>
!! 추가
df
- 파일 디렉토리 구조를 볼 수 있는 명령어 입니다.