[Linux] 최신 Ubuntu Server (24.04) 에서 NFS 구성 가이드

2025. 6. 10. 19:07·깐돌의 클라우드 도구함
728x90

 

 

NFS(Network File System)는 네트워크를 통해 파일 시스템을 공유할 수 있게 해주는 분산 파일 시스템 프로토콜입니다. 이 가이드에서는 최신 Ubuntu Server (예: Ubuntu 24.04 LTS)에서 NFS 서버 및 클라이언트를 설정하는 방법을 상세히 설명합니다.

사전 준비:

  • Ubuntu Server가 설치된 두 대 이상의 머신 (서버 1대, 클라이언트 1대 이상).
  • sudo 권한을 가진 사용자 계정.
  • 두 머신 간의 네트워크 연결 및 IP 주소 확인 (예: 서버 IP: 192.168.1.100, 클라이언트 IP: 192.168.1.101).
  • 방화벽이 활성화되어 있다면, NFS 관련 포트(2049/tcp, 111/tcp, 111/udp, 2049/udp 등)를 허용해야 합니다. (기본적으로 ufw allow nfs 명령으로 처리 가능)

1. NFS 서버 구성

파일을 공유할 서버 역할을 하는 Ubuntu 머신에서 다음 단계를 따릅니다.

1.1 NFS 서버 패키지 설치

먼저 시스템 패키지 목록을 업데이트하고, NFS 서버 패키지인 nfs-kernel-server를 설치합니다.

sudo apt update
sudo apt install nfs-kernel-server -y

1.2 공유할 디렉토리 생성 및 권한 설정

클라이언트에게 공유할 디렉토리를 생성하고, 적절한 권한을 부여합니다. 여기서는 /mnt/nfs_share 디렉토리를 예시로 사용합니다.

sudo mkdir -p /mnt/nfs_share
sudo chown nobody:nogroup /mnt/nfs_share
sudo chmod 777 /mnt/nfs_share # 모든 사용자에게 읽기/쓰기/실행 권한 부여 (테스트용, 실제 환경에서는 더 엄격한 권한 설정 권장)

권한 설명: nobody:nogroup은 NFS 클라이언트의 루트(root) 사용자가 서버에서 파일 소유자가 nobody로 매핑되도록 하는 root_squash 옵션과 함께 사용될 때 유용합니다. 이는 보안을 강화하는 방법입니다. chmod 777은 테스트를 위한 것이며, 실제 프로덕션 환경에서는 필요한 최소한의 권한을 부여해야 합니다.

1.3 NFS Export 설정 (/etc/exports)

/etc/exports 파일을 편집하여 어떤 디렉토리를 어떤 클라이언트에게 어떤 옵션으로 공유할지 정의합니다.

sudo nano /etc/exports

파일 끝에 다음 줄을 추가합니다. (클라이언트 IP 주소에 맞춰 수정하세요.)

/mnt/nfs_share 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

옵션 설명:

  • 192.168.1.0/24: 이 서브넷 내의 모든 클라이언트에게 공유를 허용합니다. 특정 IP 주소(예: 192.168.1.101)를 지정할 수도 있습니다.
  • rw: 읽기(Read) 및 쓰기(Write) 권한을 허용합니다. (읽기 전용은 ro)
  • sync: NFS 서버가 클라이언트 요청에 응답하기 전에 변경 사항을 디스크에 동기화합니다. 데이터 무결성을 보장하지만 성능에 약간의 영향을 줄 수 있습니다. (비동기식은 async)
  • no_subtree_check: 서브디렉토리 검사를 비활성화하여 성능을 향상시킵니다. 일반적으로 공유된 디렉토리의 서브디렉토리를 마운트할 때 유용합니다.
  • no_root_squash: 클라이언트의 root 사용자가 서버에서도 root 권한을 가질 수 있도록 합니다. 보안상 위험할 수 있으므로 주의해서 사용해야 합니다. 일반적으로는 root_squash (기본값)를 사용하여 클라이언트의 root 사용자를 서버의 nobody 사용자로 매핑하는 것이 더 안전합니다. 테스트 목적으로만 no_root_squash를 사용하는 것을 권장합니다.

1.4 Export 설정 적용 및 NFS 서비스 재시작

/etc/exports 파일 변경 사항을 적용하고 NFS 서비스를 재시작합니다.

sudo exportfs -a
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server

1.5 방화벽 설정 (UFW 사용 시)

Ubuntu의 기본 방화벽인 UFW(Uncomplicated Firewall)를 사용하고 있다면, NFS 트래픽을 허용해야 합니다.

sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw enable # UFW가 비활성화되어 있다면 활성화
sudo ufw status

ufw allow nfs 명령은 NFS의 기본 포트(2049)와 RPC bind(111)를 자동으로 허용합니다. 특정 서브넷만 허용하려면 위와 같이 from 옵션을 사용합니다.


2. NFS 클라이언트 구성

공유된 NFS 디렉토리에 접근할 클라이언트 역할을 하는 Ubuntu 머신에서 다음 단계를 따릅니다.

2.1 NFS 클라이언트 패키지 설치

클라이언트 머신에서 NFS 공유에 접근하기 위한 패키지인 nfs-common을 설치합니다.

sudo apt update
sudo apt install nfs-common -y

2.2 마운트 포인트 생성

NFS 서버의 공유 디렉토리를 마운트할 로컬 디렉토리를 생성합니다. 여기서는 /mnt/nfs_client를 예시로 사용합니다.

sudo mkdir -p /mnt/nfs_client

2.3 NFS 공유 마운트

NFS 서버의 공유 디렉토리를 클라이언트의 마운트 포인트에 마운트합니다. <NFS_SERVER_IP>는 실제 NFS 서버의 IP 주소로 대체하세요.

sudo mount <NFS_SERVER_IP>:/mnt/nfs_share /mnt/nfs_client

예시:

sudo mount 192.168.1.100:/mnt/nfs_share /mnt/nfs_client

2.4 마운트 확인

df -hT 명령을 사용하여 NFS 공유가 성공적으로 마운트되었는지 확인합니다.

df -hT

출력 결과에 nfs 타입으로 마운트된 /mnt/nfs_client가 보이면 성공입니다.

Filesystem                  Type  Size  Used Avail Use% Mounted on
...
192.168.1.100:/mnt/nfs_share nfs4   98G  8.0G   85G   9% /mnt/nfs_client

2.5 자동 마운트 설정 (/etc/fstab)

재부팅 시에도 NFS 공유가 자동으로 마운트되도록 /etc/fstab 파일에 항목을 추가합니다.

sudo nano /etc/fstab

파일 끝에 다음 줄을 추가합니다. (<NFS_SERVER_IP>는 실제 NFS 서버 IP로 대체)

<NFS_SERVER_IP>:/mnt/nfs_share /mnt/nfs_client nfs defaults 0 0

예시:

192.168.1.100:/mnt/nfs_share /mnt/nfs_client nfs defaults 0 0

/etc/fstab 파일 변경 후, 설정이 올바른지 확인하기 위해 다음 명령어를 실행하여 모든 fstab 항목을 마운트해 볼 수 있습니다.

sudo mount -a

오류가 없다면 설정이 올바른 것입니다.


3. NFS 구성 테스트

NFS 공유가 제대로 작동하는지 테스트합니다.

3.1 서버에서 파일 생성

NFS 서버에서 공유 디렉토리에 파일을 생성합니다.

sudo touch /mnt/nfs_share/test_file_from_server.txt
sudo echo "Hello from NFS Server!" | sudo tee /mnt/nfs_share/server_message.txt
ls -l /mnt/nfs_share/

3.2 클라이언트에서 파일 확인 및 생성

NFS 클라이언트에서 마운트된 디렉토리로 이동하여 서버에서 생성한 파일을 확인하고, 클라이언트에서 새로운 파일을 생성하여 서버에서 보이는지 확인합니다.

cd /mnt/nfs_client
ls -l
sudo touch client_test_file.txt
sudo echo "Hello from NFS Client!" | sudo tee client_message.txt
ls -l

3.3 서버에서 클라이언트가 생성한 파일 확인

다시 NFS 서버로 돌아와서 클라이언트가 생성한 파일이 공유 디렉토리에 나타나는지 확인합니다.

ls -l /mnt/nfs_share/

양쪽에서 파일이 보이고 읽기/쓰기 권한이 올바르게 작동한다면 NFS 구성이 성공적으로 완료된 것입니다.


4. NFS 공유 해제 (필요 시)

NFS 공유를 해제해야 할 경우 다음 명령어를 사용합니다.

4.1 클라이언트에서 마운트 해제

sudo umount /mnt/nfs_client

만약 "device is busy" 오류가 발생하면, 해당 디렉토리를 사용하고 있는 프로세스를 종료하거나, 디렉토리에서 나간 후 다시 시도합니다. 강제로 해제하려면 -l 옵션을 사용합니다.

sudo umount -l /mnt/nfs_client

4.2 /etc/fstab에서 자동 마운트 항목 제거

자동 마운트 설정을 제거하려면 /etc/fstab 파일에서 추가했던 줄을 삭제하거나 주석 처리합니다.

sudo nano /etc/fstab

해당 줄 앞에 #을 붙여 주석 처리합니다.


문제 해결 팁:

  • NFS 서버/클라이언트 간에 통신이 안 된다면 방화벽 설정을 다시 확인하십시오.
  • 권한 문제가 발생하면 /etc/exports 파일의 옵션(특히 no_root_squash)과 공유 디렉토리의 파일 시스템 권한(chmod, chown)을 확인하십시오.
  • NFS 서비스의 상태를 확인하려면 sudo systemctl status nfs-kernel-server (서버) 또는 sudo systemctl status nfs-common (클라이언트)를 사용하십시오.
  • 서버에서 showmount -e <NFS_SERVER_IP> 명령을 실행하여 공유 중인 디렉토리를 확인할 수 있습니다.
728x90
반응형

'깐돌의 클라우드 도구함' 카테고리의 다른 글

무료 가상화 프로그램 (VirtualBox, VMware, KVM) 비교  (0) 2025.06.25
[가상화] qcow2 사이즈 줄이는 방법  (0) 2025.06.10
[컨테이너] RHOCP 4.8 API 테스트 가이드  (0) 2025.06.10
[Linux] Ctrl+Alt+Del 재시작 기능 비활성화하기  (1) 2025.06.05
[컨테이너] RHOCP4 에서 virtctl 설치 및 사용법  (1) 2025.06.04
'깐돌의 클라우드 도구함' 카테고리의 다른 글
  • 무료 가상화 프로그램 (VirtualBox, VMware, KVM) 비교
  • [가상화] qcow2 사이즈 줄이는 방법
  • [컨테이너] RHOCP 4.8 API 테스트 가이드
  • [Linux] Ctrl+Alt+Del 재시작 기능 비활성화하기
깐돌씨
깐돌씨
하루하루를 기록하는 공간. 일상에서 얻은 영감, 좋아하는 취미, 그리고 클라우드 업무 팁까지 함께 나눕니다.
  • 깐돌씨
    조용한 깐돌이네
    깐돌씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (111) N
      • 깐돌일기 (38) N
      • 취미탐험대 (18)
      • 깐돌의 클라우드 도구함 (55)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    에스엔시스
    공모주분석
    Docker
    KVM
    공모주청약
    리눅스
    서버 관리
    rhocp
    리눅스 서버
    RHEL8
    rhel
    private registry
    신규상장주
    리눅스 가상화
    kickstart
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
깐돌씨
[Linux] 최신 Ubuntu Server (24.04) 에서 NFS 구성 가이드
상단으로

티스토리툴바