본문 바로가기
리눅스

[리눅스] NFS 서버

by 깅민 2022. 11. 4.

NFS 서버 설정 /etc/exports

Network File System

1984년 Sun Microsystems 사에서 개발한 프로토콜

TCP/IP 네트워크상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유한다.

상대방의 파일 시스템 일부를 마치 자기 자신의 디렉토리인 것처럼 사용할 수 있게 해줌

NIS와 더불어 RPC(Remote Procedure Call)기반으로 작동한다

해당 서비스를 해주는 rpcbind(구 portmap)데몬을 먼저 실행시켜야 한다.

사용이 편리한 대신 보안에 상당히 미약하기 때문에 주의해서 사용해야 한다.

 

NFS 관련 주요 RPM 패키지

NFS 서버를 구축하려면 다음과 같이 2개의 패키지를 설치해야 한다.

rpcbind

RPC 기반 연결을 위해 필요한 패키지

rpcbind, rpcinfo 등 포함

nfs-utils

NFS 서버 관련 패키지

관련 데몬 및 명령어 포함

 

NFS 서버의 설정의 개요

NFS 서버의 접근 제어

/etc/exports 파일에서 설정

특정 디렉토리에 rw옵션을 지정하는 경우, 리눅스의 디렉토리 퍼미션에도 rw 권한이 있는지 반드시 확인해야 한다.

데몬 스크립트인 rpcbind, nfs-server를 실행하면 사용이 가능하다.

 

NFS 서버 설정 순서

접근 관련 설정

vi /etc/exports

 

관련 데몬 실행

기본적으로 관련 데몬 스크립트는 nfs-server.service 이지만, nfs-server 라는 스크립트도 제공한다.

변동 사항이 있는 경우

systemctl start nfs-server 스크립트 전에 systemctl daemon-reload 명령의 실행을 요구하기도 한다.

관련 메시지가 발생하면 먼저 실행하도록 한다.

systemctl start rpcbind
systemctl start nfs-server

 

서버 동작과 관련 메시지 확인

NFS 서버 동작 오류 시에 매우 유용하다.

성공적으로 시작했을 경우에도 관련 정보를 자세하게 확인할 수 있다.

systemctl -l status nfs-server

 

관련 서버 동작의 확인

 ps 명령으로 관련 데몬이 정상적으로 동작하는지 확인한다.

ps aux | egrep 'rpcinfo | nfs-server'

 

NFS 서버의 재시작

NFS 서버 관련 설정을 변경했을 경우에는 관련 데몬을 재시작해야 한다.

systemctl restart nfs-server

 

부팅 시 NFS 관련 서버 활성화

systemctl enable rpcinfo nfs-server

 

환경 설정 파일 /etc/exports

/etc/exports 파일 설정

 

줄 단위로 외부에 공유할 디렉토리를 입력

공백([TAB])으로 구분하여 허가 할 호스트 지정 및 옵션 기입

 

허가 할 호스트 

-IP 주소

-도메인

-/etc/hosts에 설정한 호스트명

-NIS에서 설정한 그룹명

 

와일드 카드로 '모두'라는 의미의 * 사용 가능

 

공유할 디렉토리    허가할 호스트(옵션)    [허가할 호스트(옵션) ...]

 

옵션 설명
ro 읽기 전용으로 지정하는 옵션 (기본값)
rw 읽기 및 쓰기가 가능하도록 지정하는 옵션
root_squash NFS 클라이언트에서 접근하는 root 사용자를 무시하고, 서버상의 nobody(또는 nfsnobody)로 매핑시키는 옵션(기본값)
일반 사용자의 권한은 그대로 인정된다.
no_root_squash NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고 root로 인정
all_squash root를 포함하여 모든 사용자의 권한을 nobody(또는 nfsnobody)로 매핑시킨다.
no_subtree_check 하위 디렉토리를 검사하지 못하도록 할 때 설정
secure 포트 번호가 1024 이하인 요청만 허가할 때 사용한다.
기본값으로 설정되어 있다
반대 설정 insecure
sync 변경 사항이 안정적으로 저장된 경우에만 관련 요청에 응답하도록 한다.
기본값으로 설정되어 있다
async 쓰기가 설정된 디스크 스토리지에 사용하면 유용한 옵션
데이터 변경 (Data Corruption)에 대비해 비동기적 처리를 할 때 사용
anonuid 접근하는 사용자 권한을 지정하는 uid로 매핑시킬 때 사용
anongid 접근하는 그룹 권한을 지정하는 gid 로 매핑시킬 때 사용

 

/nfsdata          192.168.5.13
/nfdsdata1      192.168.5.0/255.255.255.0(rw, root_squash)
/nfdsdata2       192.168.12.0/24(rw, no_root_squash)
/nfdsdata1       *.hankuk.ac.kr(rw, all_squash)
/                      master(rw) trusty(rw, no_root_squash)
/home/user1   linux120(rw, all_squash, anonuid=500, anongid=500)

 

NFS 클라이언트에서 사용법

NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버의 파일 시스템을 이용할 수 있다.

부팅할 때 마운트하여 사용하여면 /etc/fstab 파일에 등록하면 된다.

 

mount 및 mount.nfs 명령 이용하기

192.168.5.13의 /nfsdata 를 /mnt 디렉토리로 마운트

mount -t nfs 192.168.5.13:/nfsdata /mnt

192.168.5.13의 /nfsdata 를 /mnt 디렉토리로 마운트

mount.nfs 192.168.5.13:/nfsdata /mnt

 

/etc/fstab 등록하기

 

vi /etc/fstab

192.168.5.13:/nfsdata     /mnt    nfs    timeo=15,soft,retrans=3    0    0

 

옵션 설명
timeo RPC 타임아웃이 발생된 후에 첫 번째 재전송 요구를 보낼 때의 시간
단위 : 1/10초
retrans 타임아웃이 발생된 후에 재전송 요구의 횟수를 지정한다.
soft NFS 서버 요청에 실패하면 retrans에 설정한 횟수만큼 재요청을 시도한다.
hard NFS 서버 요청에 실패하면 무한정 재시도한다
특별히 옵션을 명시하지 않으면 기본적으로 적용된다.
rsize NFS 서버로부터 읽어 들이는 바이트 값 지정
wsize NFS 서버에 쓸 때 적용되는 바이트 값 지정
fg Foreground 형태로 마운트를 시도하고, 실패하면 마운트를 중단한다
bg 첫 번째 마운트에 실패하면 백그라운드 형태로 다시 시도한다.

 

exportfs

nfs 서버에 익스포트 (export)된 디렉터리 정보를 관리해주는 명령

 

exportfs [option] [호스트명]

 

옵션 설명
-v 설정된 내용을 자세히 출력
-r /etc/exports에 설정된 내용을 다시 읽어들임
-a 모두 라는 의미로 한번에 익스포트된 디렉터리를 호출할 때 사용
-u 익스포트된 하나 이상의 디렉터리를 해제할 때 사용

 

/etc/exports에 설정된 내용을 간략히 출력

exportfs

 

익스포트된 내용을 옵션 정보를 포함하여 자세히 출력

exportfs -v

 

/etc/exportfs 에 설정된 내용을 다시 읽어들여서 출력

exportfs -r

 

익스포트된 디렉터리를 모두 해제

exportfs -au

 

rpcinfo

rpc 관련 정보를 출력해주는 명령

 

rpcinfo [option] [호스트명]

 

옵션 설명
-p 등록된 rpc프로그램의 정보 출력
-s 관련 정보를 간결하게 출력

 

로컬 호스트의 rpc 관련 정보 출력

rpcinfo

 

192.168.12.12 호스트의 rpc 관련 정보를 간결하게 출력

rpcinfo -s 192.168.12.22

 

showmount

NFS 서버의 마운트 관련 정보를 출력

NFS 클라이언트에서 NFS 서버에 익스포트된 정보를 확인할 때도 사용

 

showmount [option] [호스트명]

 

옵션 설명
-a 호스트명:디렉터리 형태로 출력 (--all)
-e [호스트명] 익스포트된 리스트를 보여줌 (--exports)
-d NFS 클라이언트에 의해 마운트된 디렉터리 목록 정보 출력 (--directories)

 

익스포트된 디렉터리를 마운트한 클라이언트의 목록 출력

showmount

 

익스포트된 정보 출력

showmount -e

 

192.168.5.13호스트의 익스포트된 정보 출력

showmount -e 192.168.5.13

 

nfsstat

NFS 관련 상태 정보를 출력

NFS서버와 클라이언트에서 모두 사용할 수 있다.

 

nfsstat [option]

 

옵션 설명
-c NFS 클라이언트 관련 정보만 출력 (--client)
-s NFS 서버 관련 정보만 출력 (--server)

 

NFS서버 및 클라이언트 관련 정보를 모두 출력

nfsstat

 


2101

1. /etc/exports

2. 192.168.5.0/24

3. no_root_squash

4. all_squash

 

 

1901

1. exportfs -v

2. showmount -e

3. rpcinfo

4. nfsstat

 

 

1702

1. 192.168.5.0/24

2. no_root_squash

 


 

참고

https://starrykss.tistory.com/1752

https://starrykss.tistory.com/1818