Ubuntu에서 NFS 서버 설정하기

NFS(Network File System)는 분산 파일 시스템 환경에서 서로 다른 머신 간에 파일을 공유할 수 있도록 하는 프로토콜입니다. Sun Microsystems에서 개발되어 1984년 처음 공개되었으며, 다양한 운영체제가 상호 운용 가능한 파일 공유를 가능하게 합니다.

NFS는 RPC(Remote Procedure Call)를 기반으로 동작하며, 클라이언트와 서버 간의 포트 매핑 및 서비스 호출을 통해 원격 파일 시스템 접근을 지원합니다. 이 구조 덕분에 서로 다른 하드웨어 아키텍처나 운영체제에서도 파일을 효율적으로 공유할 수 있습니다.

구성 환경

  • 가상화 플랫폼: VMware
  • 운영체제: Ubuntu 12.04

NFS 핵심 데몬

  • nfsd: 기본 NFS 서비스 데몬으로 클라이언트 인증 및 접속 제어를 담당
  • mountd: 마운트 요청 처리 및 권한 검증을 수행하는 RPC 데몬
  • portmap/rpcbind: 서비스 포트와 RPC 프로그램 번호 간의 매핑을 관리

서버 구성 절차

1. 필수 패키지 설치

sudo apt-get update
sudo apt-get install nfs-kernel-server nfs-common

2. 공유 디렉토리 생성

sudo mkdir -p /shared/data
sudo chmod 755 /shared/data

3. 내보내기 설정 편집 (/etc/exports)

# 기본 형식: <공유경로> <클라이언트>(<옵션들>)

/shared/data *(rw,sync,no_subtree_check,no_root_squash)

설정 옵션 설명:

  • 접근 권한: ro(읽기전용), rw(읽기쓰기)
  • 사용자 매핑: root_squash/root_no_squash, all_squash
  • 동기화 방식: sync(즉시 디스크 반영), async(버퍼링 후 반영)
  • 네트워크 보안: secure(1024 미만 포트 제한), insecure(모든 포트 허용)

4. 서비스 재시작

sudo service rpcbind restart
sudo service nfs-kernel-server restart

5. 구성 확인

showmount -e localhost

관리 명령어

서비스 상태 관리

# 시작
sudo systemctl start rpcbind
sudo systemctl start nfs-server

# 중지
sudo systemctl stop nfs-server
sudo systemctl stop rpcbind

# 상태 확인
sudo systemctl status rpcbind
sudo systemctl status nfs-server

exportfs 활용

설정 변경 후 서비스 재시작 없이 즉시 적용:

# 전체 리로드
sudo exportfs -ra

# 변경사항 확인
sudo exportfs -v

디버깅 도구

  • rpcinfo: 실행중인 RPC 서비스 목록 표시
  • nfsstat: NFS 통계 정보 조회
  • showmount: 마운트 가능한 공유 경로 확인

클라이언트 연결 예제

일반 리눅스 시스템

# 마운트
sudo mount -t nfs server_ip:/shared/data /mnt/remote

# 언마운트
sudo umount /mnt/remote

임베디드 장치 연결

mount -t nfs -o nolock,sync server_ip:/shared/data /target/path

태그: ubuntu nfs file-sharing rpc server-configuration

5월 27일 19:30에 게시됨