안녕하세요! 여러 대의 리눅스 서버를 운영하다 보면, "이 서버의 파일을 저 서버에서도 바로 사용하고 싶다"는 생각을 한 번쯤 해보셨을 겁니다. 파일을 매번 scp로 복사하기는 번거롭고, rsync로 동기화하는 것도 한계가 있죠.
이럴 때 사용하는 것이 바로 NFS(Network File System) 입니다! NFS를 이용하면, 네트워크로 연결된 다른 서버의 디렉터리를 마치 내 컴퓨터의 로컬 디렉터리처럼 마운트해서 사용할 수 있습니다. 마치 네트워크를 통해 USB 드라이브를 연결하는 것과 같다고 생각하면 쉬워요. 😉
오늘은 NFS 서버를 설정하여 특정 폴더를 다른 컴퓨터와 공유하는 가장 기본적인 3단계를 알아보겠습니다.

1단계: 공유 규칙 정의하기 (/etc/exports 파일) ✍️
NFS 서버 설정의 심장은 바로 /etc/exports 파일입니다. 이 파일은 "어떤 디렉터리를(What), 누구에게(Whom), 어떤 권한으로(How) 공유할 것인가"를 정의하는 규칙들의 목록입니다.
기본적인 규칙의 형식은 다음과 같습니다.
[공유할 디렉터리 경로] [허용할 클라이언트]([옵션])
각 항목을 자세히 살펴볼까요?
- ① 공유할 디렉터리 경로
- 네트워크를 통해 공유하고 싶은 폴더의 절대 경로를 적습니다. (예: /srv/data)
- ② 허용할 클라이언트
- 누가 이 디렉터리에 접근할 수 있는지 지정합니다. 다양한 형식으로 지정할 수 있어요.
- 단일 IP: 192.168.1.100 (특정 컴퓨터 한 대만 허용)
- IP 대역: 10.0.0.0/24 (특정 네트워크 대역 전체를 허용)
- 호스트 이름: client-pc.example.com
- 전체 허용: * (모든 클라이언트에게 허용, 보안상 주의가 필요합니다!)
- 누가 이 디렉터리에 접근할 수 있는지 지정합니다. 다양한 형식으로 지정할 수 있어요.
- ③ 옵션
- 공유 방식에 대한 세부적인 설정을 합니다. 가장 중요한 옵션 몇 가지를 알아볼게요.
- ro: **읽기 전용(Read-Only)**으로 공유합니다. 클라이언트가 파일을 보거나 복사할 수는 있지만, 수정하거나 삭제할 수는 없습니다. (기본값)
- rw: **읽고 쓰기(Read-Write)**를 모두 허용합니다. 클라이언트가 파일을 자유롭게 수정하고 생성할 수 있습니다.
- sync: 파일 변경 시 데이터가 디스크에 완전히 저장된 후에 클라이언트에게 응답합니다. 안정성이 높지만 약간의 성능 저하가 있을 수 있습니다. (기본값이며 권장)
- no_root_squash: 보안상 매우 중요한 옵션입니다. 기본적으로 NFS는 클라이언트의 root 사용자가 서버에 파일을 쓸 때, 권한이 없는 nfsnobody 사용자로 강제 매핑합니다(이를 root_squash라고 합니다). 이 옵션은 이 기능을 꺼서, 클라이언트의 root 사용자가 서버에서도 root 권한을 갖도록 허용합니다. 강력한 권한이므로 꼭 필요한 경우에만 사용해야 합니다.
- 공유 방식에 대한 세부적인 설정을 합니다. 가장 중요한 옵션 몇 가지를 알아볼게요.
예시 종합: /srv/data 디렉터리를 10.0.0.0/24 대역의 클라이언트들에게는 읽고 쓰기 권한으로, server-B 라는 호스트에게는 읽기 전용으로 공유하고 싶다면 /etc/exports 파일에 아래와 같이 추가하면 됩니다.
/srv/data 10.0.0.0/24(rw,sync) server-B(ro,sync)
2단계: 설정 적용하기 (exportfs 명령어) 🔄
/etc/exports 파일을 수정하고 저장했다고 해서 설정이 바로 적용되지는 않습니다. NFS 서비스가 변경된 규칙을 다시 읽어오도록 알려줘야 합니다. 이때 사용하는 명령어가 exportfs 입니다.
sudo exportfs -r
- -r 옵션은 /etc/exports 파일을 다시 읽어서(re-read) 현재 공유 목록을 최신 상태로 갱신하는 역할을 합니다. NFS 서비스를 재시작할 필요 없이 바로 설정을 적용할 수 있어 매우 유용합니다.
3단계: 공유 상태 확인하기 (showmount 명령어) ✅
설정이 올바르게 적용되었는지 확인하는 것은 필수입니다. showmount 명령어는 NFS 서버가 현재 어떤 디렉터리를 누구와 공유하고 있는지 보여주는 역할을 합니다.
# 내 서버(localhost)의 공유 목록을 확인합니다.
showmount -e localhost
이 명령어를 실행했을 때, 1단계에서 /etc/exports에 추가했던 내용이 그대로 보인다면 성공적으로 설정이 완료된 것입니다!
Export list for localhost:
/srv/data 10.0.0.0/24,server-B
마무리하며
어떤가요? 생각보다 간단하죠?
- /etc/exports 파일에 공유 규칙을 작성하고,
- exportfs -r 명령어로 설정을 적용한 뒤,
- showmount -e 명령어로 확인한다!
이 세 단계만 기억하면 리눅스에서 NFS를 이용한 파일 공유를 자유자재로 설정할 수 있습니다. 이제 남은 것은 클라이언트 서버에서 이 공유된 디렉터리를 mount 명령어로 연결하여 사용하는 것뿐입니다. 그 이야기는 다음 기회에 더 자세히 다뤄보도록 하겠습니다.
태그: NFS, Linux, 리눅스, 서버, 네트워크, 파일공유, DevOps, 시스템엔지니어링, IT인프라
'일반IT > 리눅스' 카테고리의 다른 글
| 리눅스 네트워크 3대장 정복하기 🛠️ (IP, Gateway, DNS 설정 기초) (0) | 2025.10.11 |
|---|---|
| 리눅스 서버 탐정 되기 🕵️♂️ 포트 번호로 프로세스 추적하고 마스터 프로세스 찾는 법 (0) | 2025.10.11 |
| Docker 초보를 위한 핵심 가이드: 컨테이너 관리부터 이미지 빌드, 실행까지! 🐳 (0) | 2025.10.11 |
| Git 초보 탈출! 🚀 로컬 폴더를 GitHub 원격 저장소에 연결하는 완벽 가이드 (0) | 2025.10.11 |
| 🐧 리눅스 스토리지 관리의 끝판왕: LVM으로 디스크 파티션 자유자재로 다루기 (1) | 2025.10.10 |