들어가기
리눅스를 운영하다 보면, 디스크 하나로는 부족해지는 순간이 옵니다.
서버가 여러 대로 늘어나거나, 사용자 홈 디렉토리를 중앙에서 관리해야 할 때가 그렇습니다.
이때 자연스럽게 등장하는 개념이 네트워크 스토리지입니다.
이번 글에서는 네트워크 스토리지의 큰 그림을 먼저 짚고,
그중에서도 NFS(Network File System) 를 중심으로 실제 설정과 동작 방식을 정리해보려 합니다.
명령어 나열보다는, 왜 이렇게 동작하는지를 이해하는 쪽에 초점을 두었습니다.
스토리지의 분류: DAS · NAS · SAN
스토리지는 접근 방식에 따라 크게 세 가지로 나뉩니다.
DAS (Direct Attached Storage)
서버에 직접 연결된 스토리지입니다.
내부 디스크, USB 외장 디스크가 여기에 해당합니다.
- 장점: 단순함, 성능 예측이 쉬움
- 단점: 다른 서버와 공유 불가
NAS (Network Attached Storage)
네트워크를 통해 파일 단위로 접근하는 스토리지입니다.
연결하면 바로 디렉토리와 파일이 보입니다.
-
대표 프로토콜
- NFS (Unix/Linux 계열)
- CIFS / SMB (Windows 계열)
SAN (Storage Area Network)
네트워크를 통해 블록 단위로 접근하는 스토리지입니다.
연결하면 디스크 하나가 새로 생긴 것처럼 보입니다.
-
대표 기술
-
FC-SAN (Fiber Channel)
-
IP-SAN
- FCoE
- iSCSI
-
NAS와 SAN의 핵심 차이
구분 기준은 단순합니다.
- NAS: 파일 단위 전송
- SAN: 블록 단위 전송
NAS는 파일 서버에 가깝고,
SAN은 원격 디스크에 가깝다고 이해하시면 됩니다.
NFS란 무엇인가
NFS는 전통적인 Unix 계열에서 사용해온 네트워크 파일 공유 방식입니다.
로컬 디렉토리를 사용하는 것처럼 원격 파일 시스템을 다룰 수 있다는 점이 핵심입니다.
NFS 버전별 특징
NFS v1 / v2
- UDP 기반 통신
- LAN 환경을 전제로 설계
- 현재는 거의 사용되지 않음
NFS v3
- TCP/IP 기반으로 전환
- 2GB 이상의 파일 지원
- 성능은 개선되었지만 보안 개념은 여전히 부족
NFS v4
- TCP 2049 포트 단일화
- 상태 기반(Stateful) 프로토콜
- 가상 파일 시스템 개념 도입
- 인증 기반 접근 제어 지원
현재 실무에서는 NFS v4가 기본 선택지입니다.
실습 환경 구성
- vm1 : NFS Client
- vm2 : NFS Server
실습은 내부 네트워크 환경을 가정합니다.
NFS 서버 설정
패키지 설치
bashdnf install -y nfs-utils rpcbind
- nfs-utils : NFS 서버/클라이언트 핵심 패키지
- rpcbind : NFS RPC 서비스 매핑
설정 파일: /etc/exports
NFS 공유 설정은 /etc/exports 파일에서 관리됩니다.
기본 상태에서는 비어 있습니다.
bashvi /etc/exports
기본 개념
구성은 다음과 같습니다.
plain공유할_디렉토리 접근대상(옵션)
주요 옵션
- ro / rw : 읽기 전용 / 읽기-쓰기
- sync / async : 동기 / 비동기 쓰기
- root_squash : root 권한을 일반 사용자로 매핑 (기본값)
- no_root_squash : root 권한 유지 (주의 필요)
예제 설정
bash/nfsdata 192.168.11.0/24(rw,sync) 10.100.1.2(ro)
/tmp *(ro)
디렉토리 준비 및 서비스 기동
bashmkdir /nfsdata
cp /etc/fstab /nfsdata/1.txt
mkdir /nfsdata/movie
chmod -R 1777 /nfsdata
systemctl start rpcbind
systemctl start nfs-server
실습 환경에서는 방화벽을 비활성화했지만,
실제 환경에서는 NFS 포트만 허용하는 방식이 권장됩니다.
공유 확인
bashshowmount -e localhost
설정 변경 후 즉시 반영하려면 다음 명령을 사용합니다.
bashexportfs -var
NFS 클라이언트 설정
공유 목록 확인
bashshowmount -e 192.168.11.33
마운트
bashmkdir /mnt/6day
mount -t nfs 192.168.11.33:/nfsdata /mnt/6day
이제 /mnt/6day는 로컬 디렉토리처럼 동작합니다.
재부팅 시 자동 마운트에 대한 생각
/etc/fstab에 등록하면 자동 마운트가 가능합니다.
bashserver:/exports/netinstall /srv/netinstall nfs intr 0 0
다만 이 방식은 항상 좋은 선택은 아닙니다.
- NFS 서버가 내려가 있으면 클라이언트 부팅이 지연되거나 실패할 수 있음
- 네트워크 의존성이 커짐
실무에서는 상황에 따라 수동 마운트나 automount를 선택합니다.
마무리
NFS는 단순하지만 강력한 기술입니다.
특히 홈 디렉토리 공유, 중앙 스토리지 구성, 레거시 시스템 연동에서 여전히 중요한 역할을 합니다.