반응형

1. 도입 및 배경 (Why?)
서버를 운영하다 보면 로컬 디스크 용량의 한계에 부딪히거나, 여러 서버가 동일한 데이터를 공유해야 하는 상황이 발생함. 이때 가장 대중적으로 사용되는 방식이 **NFS(Network File System)**임.
하지만 단순히 mount 명령어로 연결하면 서버 재부팅 시 연결이 끊어짐. 매번 수동으로 연결할 수 없기에, 부팅 시 자동으로 원격 저장소를 내 집처럼 드나들게 해주는 /etc/fstab 설정이 필수적임.
2. 시스템 아키텍처 (What?)
원격지의 스토리지 서버를 로컬 디스크의 특정 디렉토리(Mount Point)에 논리적으로 결합하는 구조임.
[Storage Server (NFS)] <----(Network)----> [My Linux Server]
/data/shared /mnt/nfs_storage
(Exported Dir) (Mount Point)
3. 사전 준비 및 패키지 설치
NFS 기능을 사용하기 위해 클라이언트 패키지가 필요함.
Bash
# NFS 클라이언트 패키지 설치 (Ubuntu 기준)
sudo apt update && sudo apt install nfs-common -y
# 마운트할 로컬 디렉토리 생성
sudo mkdir -p /mnt/nfs_storage
4. 핵심 작업 단계 (Step-by-Step)
■ Step 1: 수동 마운트 테스트
먼저 연결이 정상적으로 되는지 확인해야 함.
Bash
# mount -t nfs [원격지IP]:[원격경로] [로컬경로]
sudo mount -t nfs 192.168.1.100:/data/shared /mnt/nfs_storage
# 마운트 확인
df -h | grep nfs
■ Step 2: /etc/fstab 자동 마운트 설정
재부팅 시에도 유지되도록 시스템 설정 파일에 등록함. (주의: 오타 시 부팅 불가)
Bash
# fstab 파일 편집
sudo nano /etc/fstab
# 파일 맨 하단에 아래 내용 추가
# [원격경로] [로컬경로] nfs [옵션] [덤프] [체크순서]
192.168.1.100:/data/shared /mnt/nfs_storage nfs defaults,nofail 0 0
[핵심 팁] nofail 옵션은 매우 중요함. 만약 네트워크 문제로 스토리지 연결이 안 되더라도 서버 부팅 자체는 진행되게 해주는 '생명줄'임.
5. 실제 적용 및 검증 (Advanced)
설정 파일이 올바른지 재부팅 전에 반드시 검증해야 함.
Bash
# 현재 마운트된 모든 것을 해제 (테스트용)
sudo umount /mnt/nfs_storage
# fstab 내용을 기반으로 모두 마운트 시도
sudo mount -a
# 에러 메시지가 없다면 성공!
. . .
6. 트러블슈팅 및 삽질 기록 (Troubleshooting Log) ★
■ 에러: mount.nfs: Connection timed out
- 상황: 원격 서버에 접속할 수 없을 때 발생함.
- 해결: 스토리지 서버의 방화벽에서 NFS 포트(기본 2049)가 열려 있는지, 그리고 /etc/exports 설정에 내 서버 IP가 허용되어 있는지 확인해야 함.
■ 에러: 서버 재부팅 후 부팅 멈춤 (Infinite Loading)
- 상황: nofail 옵션 없이 /etc/fstab을 설정했는데 스토리지 서버가 꺼져 있을 때 발생.
- 해결: 리눅스 복구 모드(Single User Mode)로 진입하여 /etc/fstab의 해당 라인을 주석 처리(#)한 뒤 정상 부팅 후 수정해야 함.
7. 관련 기록 및 태그
- [Ubuntu Server - Logrotate로 디스크 관리하기]: 늘어난 외부 저장소도 효율적으로 관리하는 법.
- [Docker-Compose 볼륨 바인딩 가이드]: NFS 마운트 경로를 도커 컨테이너에 연결하기.
반응형
'Server Story....' 카테고리의 다른 글
| 서버 가동률 99.9% 도전: Slack 실시간 장애 알림 시스템 구축 (0) | 2026.04.02 |
|---|---|
| Windows Server 2022: MSSQL 외부 접속 설정 및 필수 보안 강화 (0) | 2026.04.02 |
| 리눅스 서버의 숨은 해결사: Logrotate로 디스크 풀(Full) 완벽 방지하기 (0) | 2026.04.01 |
| 리눅스 모니터링 심화: Prometheus & Grafana 컨테이너 구축 (0) | 2026.04.01 |
| 리눅스 보안 심화: Fail2Ban으로 무차별 대입 공격(Brute Force) 차단하기 (0) | 2026.04.01 |