2025. 1. 21. 14:24ㆍNetwork 공부
네트워크를 통해 파일을 공유할 수 있도록 설계된 분산 파일 시스템 프로토콜
- 기본 포트 2049 포트 추가적으로 RPC 111번 포트
추가적으로 데이터를 송수신할 때 랜덤하게 포트번호를 부여한다.
** 주요 특징 **
1) 분산 파일 공유
네트워크 상의 서버에 저장된 파일을 마치 로컬 시스크에 있는 파일처럼 사용할 수 있다. 이를 통해 여러 사용자가 동일한 데이터를 공유하고 접근 할 수 있다.
2) 클라이언트 < - > 서버 모델
클라이언트 - 서버 모델을 기반으로 동장하며, 서버는 파일 시스템을 공유하고, 클라이언트는 이를 마운하여 사용한다
** 마운트
마운트는 서버에 있는 파일 시스템(ex: 특정 디렉토리)를 클라이언트의 파일 시스템에 부착하여, 로컬 디스크의 일부처럼 사용할 수 있게 하는 작업
3) 무상태 설계 (Stateless Design)
NFS v4 이전버전은 Stateless 프로토콜로 설계 되었으며, 클라이언트와 서버 간 연결 상태를 유지하지 않습니다.
부터는 상태 정보를 일부 유지하도록 변경됨
4) 보안
초기에는 보안이 취약했지만 , Kerberos 인증, 암호화, 접근 제어 목록(ACL) 등으로 보안을 강화함
주요 버전?
NFS v2 - UDP 프로토콜 기반
NFS v3 - TCP 및 UDP 지원
NFS v4 - TCP 프로토콜 전용
보안 및 성능 개선
상태 기반 프로토콜로 변경
** NFS 작동방식 **
1) 파일 공유
서버는 특정 디렉토리를 네트워크를 통해 공유하도록 설정한다.
이를 export 라고 한다
2) Mount
3) 파일전송
클라이언트가 요청한 파일을 서버가 네트워크를 통해 전송하며, 읽기 / 쓰기작업이 이루어진다.
장점 !!!
- 유연한 파일 공유
다수의 클라이언트와 서버가 네트워크를 통해 쉽게 파일을 공유할 수 있다.
- 중앙 집중화
데이터를 중앙에서 관리하기 때문에 유지보수가 편함
- 운영 체제 독립성
다양한 운영 체제에서 지원된다.
-
단점 !!!
- 네트워크 의존성
- 보안 취약점
적절한 보안 설정이 필요
- 속도 제한
대규모 환경에서 성능이 제한
**** NFS 동작 시 주의사항
- 방화벽 설정
NFS는 2049 포트와 RPC에 의해 동작하므로, 클라이언트와 서버 간 통신을 위해 방화벽 설정이 필요
- SELinux 설정
SELinux가 활성화된 경우, NFS를 올바르게 동작시키기 위해 설정을 추가로 변경이 필요할 수 있음
ex) 설정 예제 ( Linux 기준)
서버 설정
/etc/exports 파일에 공유 디렉토리와 접근 권한을 설정
/shared_directory 192.168.1.0/24(rw,sync,no_subtree_check)
- NFS 서비스 시작
sudo exportfs -a
# exportfs: NFS 서버에서 공유할 디렉토리를 관리하는 명령어
sudo systemctl start nfs-server
# NFS 서버 프로세스를 시작하여 클라이언트 요청을 처리할 수 있도록 활성화
클라이언트 설정
- 서버의 디렉토리를 마운트
sudo mount -t nfs 192.168.1.100:/shared_directory /mnt
sudo : 관리자 권한 (superuser privileges)으로 명령 실행
- t : 사용할 파일 유형
nfs : 시스템 프로토콜
192.168.1.100:/shared_data :
마운트하는 원격 파일 시스템의 주소
NFS 서버의 IP 주소 와 서버에서 공유하고 있는 디렉토리 경로
/mnt/server_data :
클라이언트에서 원격 파일 시스템을 마운트할 위치
자동 마운트 (예: /etc/fstab 설정)
192.168.1.100:/shared_directory /mnt nfs defaults 0 0
위와 같이 설정하면
사진과 같이 구현되며,
클라이언트가 /mnt/server_data/file1.txt를 열어 내용을 수정하거나, /mnt/server_data/docs/report.pdf를 읽으면, 이 작업은 실제로 서버의 /shared_data 디렉토리에 저장된 파일을 대상으로 이루진다.
'Network 공부' 카테고리의 다른 글
Business Logic / Data Processing / Providing APIs (0) | 2025.01.28 |
---|---|
RAID ( Redundant Array of Inexpensive (Independent) Disk ) (0) | 2025.01.24 |
FTP(File Transfer Protocol) / TFTP(Trivial File Transfer Protocol) / PXE(Perboot execution Environment) (0) | 2025.01.22 |
Microservice Architecture (Service) (0) | 2025.01.21 |
3 - tier architecture / MVC / N - tier architecture (0) | 2025.01.20 |