기술 가이드

AlmaLinux 9에서 NFS 서버와 클라이언트 설치 및 구성 가이드

6 min read Linux 업데이트됨 29 Sep 2025
AlmaLinux 9에서 NFS 설치 및 구성
AlmaLinux 9에서 NFS 설치 및 구성

AlmaLinux 9에서 NFS(Network File System)를 설치하고 서버에 공유 디렉터리를 구성한 다음 클라이언트에서 이를 마운트하고 부팅 시 자동 마운트를 설정하는 단계별 안내입니다. idmapd 설정, /etc/exports 구성, firewalld 규칙, /etc/fstab 옵션, SELinux·권한·문제 해결 체크리스트와 보안 권장사항까지 포함합니다.

NFS 다이어그램

개요

NFS는 네트워크를 통해 원격 파일 시스템을 로컬처럼 접근할 수 있게 하는 표준 프로토콜입니다. Sun Microsystems에서 개발되었고, 중앙 집중형 파일 공유 환경에서 널리 사용됩니다. 이 문서는 AlmaLinux 9 환경을 기준으로 NFS Server를 설치하고 클라이언트에서 마운트하여 자동 마운트를 설정하는 전체 워크플로우를 다룹니다.

중요 용어 한 줄 정의

  • NFS: 네트워크 파일 시스템. 원격 디렉터리를 로컬처럼 마운트해 파일을 읽고 쓸 수 있게 하는 프로토콜.
  • RPC: 원격 프로시저 호출, NFS의 제어 통신에 사용되는 메커니즘.

필요 조건

  • AlmaLinux 9 서버(예: hostname: almalinux9-server, IP: 192.168.10.15)
  • sudo 권한이 있는 비루트 사용자
  • 하나 이상의 클라이언트(RHEL 계열 배포판이면 충분)

중요

  • 내부 네트워크 예시 IP는 192.168.10.0/24입니다. 환경에 맞게 주소를 조정하세요.

1. NFS 서버와 클라이언트에 nfs-utils 설치

AlmaLinux 포함 대부분의 RHEL 기반 배포판은 AppStream 저장소에서 nfs-utils 패키지를 제공합니다. 서버와 클라이언트 양쪽에 설치해야 합니다.

서버와 클라이언트에서 다음을 실행하세요.

sudo dnf install nfs-utils

nfs 설치 화면

설치가 완료되면 idmapd 구성 및 NFS 서비스 시작으로 넘어갑니다.

2. idmapd 설정

NFSv4에서는 사용자/그룹 매핑을 위해 idmapd가 필요합니다. /etc/idmapd.conf에서 Domain 값을 설정하세요.

sudo nano /etc/idmapd.conf

Domain 항목의 주석을 해제하고 서버의 FQDN이나 호스트명을 입력합니다.

Domain = almalinux9-server

파일을 저장하고 종료합니다.

3. NFS 서비스 시작 및 활성화

서비스를 시작하고 부팅 시 자동 시작하도록 활성화합니다.

sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo systemctl status nfs-server

정상적으로 실행 중이면 상태 출력에 active (running) 이 보입니다.

nfs 서비스 상태

4. 공유 디렉터리 생성 및 권한 설정

서버에서 공유할 디렉터리를 생성하고 권한을 설정합니다. 예시는 /mnt/shared와 /mnt/backup입니다.

sudo mkdir -p /mnt/shared /mnt/backup
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup

설명

  • 소유자를 nobody:nobody으로 설정한 이유는 기본적인 비특권 공유 계정으로 매핑을 쉽게 하기 위해서입니다. 실제 환경에서는 필요에 따라 사용자·그룹을 맞춤 설정하세요.

5. /etc/exports 구성

NFS 서버에 어떤 디렉터리를 누구에게 어떤 옵션으로 제공할지 /etc/exports에 정의합니다.

sudo nano /etc/exports

예시 구성:

/mnt/backup 192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)

주요 옵션 설명

  • rw: 읽기/쓰기 허용
  • sync: 서버가 디스크에 데이터를 동기 기록한 후에 클라이언트 요청을 처리합니다. 데이터 안정성↑, 성능↓
  • no_subtree_check: 하위 트리 검사 비활성화. 성능 향상
  • no_root_squash: 클라이언트의 root를 서버 상에서 root로 취급(권한 상승 가능). 보안상 주의 필요

파일을 저장하고 /etc/exports 변경을 적용하려면 NFS를 재시작합니다.

sudo systemctl restart nfs-server
sudo exportfs -v

exportfs -v 출력으로 현재 공유 상태를 확인하세요.

6. firewalld로 포트 및 서비스 허용

NFS는 여러 RPC 기반 서비스를 사용합니다. firewalld를 사용 중이면 아래 서비스를 허용합니다.

sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

서비스가 잘 추가됐는지 확인하세요.

firewalld 상태

중요

  • 방화벽 규칙은 환경(퍼블릭 인터넷 vs 내부망)에 따라 더 엄격히 적용해야 합니다. 외부에 직접 노출해서는 안 됩니다.

7. 클라이언트 설정 및 공유 확인

클라이언트에서 nfs-utils를 설치한 뒤 NFS 서버가 제공하는 공유 목록을 확인합니다.

sudo dnf install nfs-utils
sudo showmount -e 192.168.10.15

서버가 제공한 경로(/mnt/backup, /mnt/shared, /home)가 출력되는지 확인합니다.

서버에서 공유 목록 확인

클라이언트에서 마운트할 디렉터리를 생성합니다.

sudo mkdir -p /data /backup /shared

마운트 명령:

sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data

마운트가 정상인지 확인:

sudo df -h

마운트된 파일시스템 체크

8. 클라이언트에서 쓰기 확인

클라이언트에서 파일을 생성하고 서버에서 확인하여 읽기/쓰기 권한을 검증합니다.

echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt

서버로 돌아가 다음을 확인하세요.

cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt

파일이 서버에서 보이면 쓰기 동작이 성공한 것입니다.

쓰기 테스트 결과

서버에서 파일 확인

9. /etc/fstab으로 자동 마운트 설정

클라이언트 재부팅 시 자동으로 마운트하려면 /etc/fstab에 항목을 추가하세요.

먼저 현재 마운트를 해제합니다.

sudo umount /data /backup /shared
sudo df -h

umount 예시

/etc/fstab 편집:

sudo nano /etc/fstab

예시 항목:

192.168.10.15:/mnt/backup    /backup   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared    /shared   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home          /data     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

옵션 설명 요약

  • auto: 부팅 시 자동 마운트
  • nofail: 마운트 실패 시 부팅을 중단하지 않음
  • noatime: 접근 시간 기록 비활성화로 읽기 성능 향상
  • nolock: 파일 잠금 비활성화
  • intr: 인터럽트 허용(커널이 I/O를 중단 가능)
  • tcp: TCP 프로토콜 사용
  • actimeo=1800: 캐시 일치 시간(초)

저장 후 다음으로 즉시 마운트를 적용합니다.

sudo mount -a
sudo df -h

자동 마운트가 정상 동작하는지 확인하세요.

fstab 자동 마운트 화면

자동 마운트 결과

10. SELinux 고려사항

AlmaLinux에서 SELinux가 활성화되어 있다면 NFS를 위해 적절한 컨텍스트와 boolean을 설정해야 할 수 있습니다.

  • NFS 마운트에 대해 SELinux가 문제를 일으키면 audit 로그(/var/log/audit/audit.log)를 확인하세요.
  • 필요한 경우 다음 boolean을 활용할 수 있습니다.
sudo setsebool -P use_nfs_home_dirs 1

설정 변경 전에는 정책 영향과 보안 리스크를 검토하세요.

11. 문제 해결 체크리스트

  • showmount -e 서버에서 공유가 보이는가?
  • exportfs -v로 서버가 해당 경로를 내보내는가?
  • 방화벽에서 nfs, mountd, rpc-bind가 허용되었는가?
  • 클라이언트에서 DNS 또는 /etc/hosts로 서버 이름을 해석 가능한가?
  • SELinux가 거부 로그를 생성하는가? (/var/log/audit/audit.log)
  • 네트워크 경로에 패킷 손실이나 MTU 이슈는 없는가?
  • no_root_squash 사용 시 권한 오남용 위험을 확인했는가?

일반적인 증상과 해결법

  • 마운트 시 시간이 오래 걸림 또는 타임아웃: 네트워크 연결 및 방화벽 확인
  • 파일이 보이나 쓰기가 불가: 권한·소유자·export 옵션 확인
  • 파일 권한이 클라이언트별로 달라 보임: UID/GID 일치 여부 확인 및 idmapd 구성

12. 보안 강화 권장사항

  • 공개 네트워크에서 직접 NFS 포트를 열지 마세요. 내부 네트워크 또는 VPN을 사용하세요.
  • no_root_squash는 최소화하여 민감한 디렉터리에 적용하지 마세요.
  • export 대상은 CIDR로 최소 권한 네트워크만 허용하세요.
  • 정기적으로 /etc/exports와 방화벽 규칙을 검토하세요.
  • 감사 로깅(auditd)으로 중요한 디렉터리 접근을 모니터링하세요.
  • 가능하면 Kerberos를 사용한 인증(NFSv4 + sec=krb5) 도입을 검토하세요.

13. 대안과 비교

  • SMB/CIFS: Windows 환경과의 파일 공유가 주요 목표라면 Samba가 더 적합합니다.
  • GlusterFS: 분산 파일 시스템, 다중 서버에 걸친 확장성과 복제 필요 시 사용
  • CephFS: 대규모 분산 스토리지가 필요할 때 선택
  • SSHFS: 관리가 간단한 원격 마운트가 필요할 때(퍼포먼스는 NFS보다 낮음)

선택 가이드

  • 단일 중앙 서버 + 내부 네트워크 + Linux 클라이언트: NFS 권장
  • Windows 클라이언트가 많은 환경: Samba 권장
  • 고가용성·확장성 필요: GlusterFS 또는 Ceph 권장

14. 마이그레이션 및 호환성 팁

  • NFSv3 vs NFSv4: NFSv4는 방화벽 규칙이 단순하고 상태 기반(stateful)이며 idmapd를 사용합니다. 기존 NFSv3 환경을 옮길 때는 클라이언트 호환성을 확인하세요.
  • UID/GID 불일치 문제: 사용자 매핑 전략을 정의(중앙 인증 또는 계정 동기화)
  • 성능 튜닝: rsize/wsize, async 옵션(주의), 하드웨어 I/O 특성에 따른 조정

15. 운영자 역할별 체크리스트

시스템 관리자

  • nfs-utils 설치 및 서비스 활성화
  • /etc/exports 및 방화벽 검토
  • SELinux boolean 점검
  • 백업 정책 수립

보안 담당자

  • no_root_squash 사용 검토 및 제한
  • 네트워크 접근 제어 목록 검토
  • 감사와 알림 설정

개발자/사용자

  • 공유 디렉터리 사용 가이드(경로, 권한) 숙지
  • 중요한 파일은 버전 관리 및 백업 권장

16. 테스트 사례 및 수락 기준

기본 테스트

  • 클라이언트에서 showmount -e로 서버 공유가 보여야 함
  • 클라이언트에서 공유 디렉터리 마운트 후 읽기/쓰기 가능
  • 서버에서 exportfs -v에 공유가 나열되어야 함
  • 재부팅 후 /etc/fstab으로 자동 마운트되어야 함

수락 기준

  • 모든 테스트 항목 통과
  • 보안검토(방화벽, no_root_squash, SELinux) 통과

17. 빠른 참조 치트시트

자주 쓰는 명령

  • 서버 공유 목록: sudo exportfs -v
  • 클라이언트에서 서버 공유 확인: sudo showmount -e <서버_IP>
  • 서비스 관리: sudo systemctl start|restart|enable nfs-server
  • 방화벽: sudo firewall-cmd –add-service={nfs,nfs3,mountd,rpc-bind} –permanent
  • 즉시 마운트 적용: sudo mount -a

/etc/fstab 예시 옵션 설명 요약

  • nofail: 네트워크 문제 시 부팅 지연 방지
  • actimeo: 클라이언트 캐시 지속 시간
  • nolock: lockd 사용 안 함(공유 동시성 문제 주의)

18. 결정 트리

flowchart TD
  A[시작: NFS가 필요한가?]
  A -->|Windows 클라이언트 다수| B[Samba 권장]
  A -->|리눅스 클라이언트, 내부망| C[NFS 권장]
  C --> D{고가용성 필요?}
  D -->|예| E[GlusterFS/Ceph 검토]
  D -->|아니오| F[NFS 단일 서버 구성]

19. 마무리 요약

축하합니다. 이 가이드에서 AlmaLinux 9에 NFS Server를 설치하고 공유 디렉터리를 구성했으며, 클라이언트에서 마운트하고 /etc/fstab으로 자동 마운트까지 설정하는 전 과정을 다뤘습니다. 추가로 SELinux, 방화벽, 보안 권장사항, 문제 해결 체크리스트와 운영자별 체크리스트, 대안 비교와 테스트 케이스를 제공했습니다.

다음 단계 권장

  • Kerberos 기반 인증 도입(NFSv4 + sec=krb5) 검토
  • 백업·감사 정책 수립
  • 운영 환경에 맞춘 성능 튜닝과 모니터링 도구 통합

요점 정리

  • /etc/exports로 공유를 정의하고 exportfs로 확인
  • firewalld에서 관련 서비스를 허용
  • 클라이언트는 showmount로 공유를 확인 후 mount 또는 /etc/fstab로 자동 마운트
  • 보안(방화벽, SELinux, no_root_squash)에 특별히 주의

중요

운영 환경에서는 네트워크 접근 제어, 권한 최소화, 정기적인 감사가 필수입니다.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

WhatsApp에서 음성 입력(Voice Typing) 사용하는 방법
모바일 팁

WhatsApp에서 음성 입력(Voice Typing) 사용하는 방법

IMDb 공통 검색 사용법 — 두 인물·작품 교차 조회
가이드

IMDb 공통 검색 사용법 — 두 인물·작품 교차 조회

Rainmeter로 데스크톱에 인용문 고정하는 방법
가이드

Rainmeter로 데스크톱에 인용문 고정하는 방법

AlmaLinux 9에서 NFS 설치 및 구성
Linux

AlmaLinux 9에서 NFS 설치 및 구성

RAID와 LVM으로 시스템 디스크 마이그레이션 가이드
스토리지

RAID와 LVM으로 시스템 디스크 마이그레이션 가이드

위젯 없이 안드로이드 배터리 잔량 확인하기
How To

위젯 없이 안드로이드 배터리 잔량 확인하기