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
'리눅스' 카테고리의 다른 글
| [리눅스] ssh설정, /etc/ssh/sshd_config (0) | 2022.11.04 |
|---|---|
| [리눅스] fsck 파일 시스템 검사 (e2fsck, xfs_repair) (0) | 2022.11.04 |
| [리눅스] 디스크 쿼터 Disk Quota, fstab, quotacheck... (0) | 2022.11.03 |
| [리눅스] iptables (0) | 2022.11.02 |
| [리눅스] DNS 설정 (0) | 2022.11.02 |