NFS?
- NFS(Network File System)은 네트워크를 통해 로컬 파일 시스템을 다른 사용자와 디렉토리 및 파일을 공유하고 상호 작용 할 수 있도록 해주는 교차 플랫폼 및 분산 파일 시스템 프로토콜 입니다.
구성환경
- VMware Workstation 12 Pro
- CentOS-Stream-8-x86_64
- nfs-utils-2.3.3-46.el8.x86_64
1. NFS 서버 기본 사양
새로운 가상서버 생성 하여 설치를 진행합니다. 저는 RHV 스토리지 도메인에 사용할 목적으로 CPU와 Memory보다는 디스크 사이즈에 중점을 두어 설정하였습니다.
2. NFS 서버 구성
OS 설치 완료 후 IP, hostname 설정 후 계속 진행 하였습니다.
기본 서버 repolist를 확인합니다.
# yum repolist
# dnf install nfs-utils
* dnf(Dandified YUM)은 yum의 단점인 '느린속도', '높은 메모리 사용', '의존성 결정 속도 느림' 등과 같은 단점을 개선한 새로운 패키지 관리자로 RHEL/CentOS 8에 정식 도입 되었습니다. yum 또는 dnf를 선택하여 사용하면 되지만 저는 dnf를 선택하였습니다.
설치가 완료되면 nfs-server 서비스를 시작하고 시스템 부팅시 자동으로 시작하도록 활성화 후 상태를 확인합니다.
# systemctl start nfs-server.service
# systemctl enable nfs-server.service
# systemctl status nfs-server.service
3. NFS 설정
nfs 설정은 /etc/exports 파일에서 설정 가능합니다. 기본적으로 '공유폴더 접근노드(옵션)'으로 설정합니다.
저는 data domain과 iso 이미지 파일 보관 목적으로 설정하였습니다.
설정할 수 있는 옵션으로는 대략 아래와 같고 자세한 내용과 다른 옵션은 man exports로 확인하면 됩니다.
- ro : 읽기 전용, 디폴트 값
- rw : 읽기쓰기
- root_squash : 클라이언트가 root 권한 획득을 막습니다. uid/gid가 0의 요청을 익명의 uid/gid(일반적으로 nobody)로 매핑한다.
그외 uid/gid(일반 계정)에 대해서는 해당되지 않습니다. 디폴트 값입니다.
- no_root_squash : 클라이언트가 root 권한 획득가능, 파일 생성시 클라이언트의 권한으로 생성됨
- all_squash : 모든 uid, gid를 익명사용자에게 매핑합니다. 디폴트 값입니다.
- no_all_squash : no_root_squash 와 동일, 디폴트 값입니다.
- sync : 변경 사항이 커밋된 후에만 요청에 응답(안정적인 저장), 디폴트 값입니다.
제가 설정한 anonuid, anongid는 rhv nfs 스토리지 도메인 용으로 이용하기 위해 구성하였으며 일반적으로는 rw, sync 옵션을 사용합니다.
그리고 명령어를 통해 설정한 nfs 정보를 확인 할 수 있습니다.
# exportfs -s
/etc/exports 파일을 수정한 경우에는 nfs 서버를 재시작 하거나 명령어를 수행하여 반영시키면 됩니다.
# exportfs -ra
그리고 저는 테스트환경 구축을 위해 selinux와 firewalld 서비스를 모두 중지 시켜놨습니다. 혹시 firewalld 서비스를 실행 중일 경우에는 nfs서비스(mountd, nfs, rpc-bind)에 대한 규칙을 적용 해주어야 합니다.
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
마지막으로 일반 클라이언트 시스템에 nfs 공유를 하기 위해서는 패키지 설치를 합니다.
# dnf install nfs-utils or yum install nfs-utils (CentOS, RHEL)
# sudo apt install nfs-common nfs4-acl-tools (Debian, Ubuntu)
설치 완료 후 nfs 공유폴더를 마운트 합니다. (mount -t nfs NFS서버IP(hostname):/NFS공유폴더
# mount -f nfs 192.168.***.***:/sharefolder /mountpoint
마지막으로 /etc/fstab 파일을 수정하여 부팅시 자동 마운트 되도록 설정합니다.
192.168.***.***:/sharefolder /local_mountpoint nfs hard 0 0
* NFS 마운트 디렉토리를 구성할 때 사용자가 선택할 수 있는 사항 중 하나는 하드(-o hard) 또는 소프트(-o soft) 마운트를 수행할지 여부입니다. 디렉토리를 소프트 마운트하면 오류는 더 빨리 발견할 수 있지만, 데이터 손상이라는 심각한 위험이 뒤따릅니다. 일반적으로 읽기/쓰기 디렉토리는 하드 마운트해야 합니다.
마운트 옵션 'hard'가 설정되면 NFS 서버가 충돌하거나 응답이 없으면 NFS 요청이 무기한 재 시도됩니다. 프로세스가 중단 될 수 있도록 마운트 옵션 'intr'을 설정할 수 있습니다. NFS 서버가 다시 온라인 상태가되면 서버가 응답하지 않은 상태에서 프로세스를 계속 진행할 수 있습니다.
'soft'옵션을 설정하면 일정 시간 ( 'timeo'옵션으로 정의)을 기다린 후 NFS 서버가 응답하지 않으면 프로세스에 오류가보고됩니다. 경우에 따라 '소프트'옵션으로 인해 데이터가 손상되거나 데이터가 손실 될 수 있습니다. 따라서 hard 및 intr 옵션을 사용하는 것이 좋습니다.
감사합니다.
'공부 > Linux' 카테고리의 다른 글
Linux bonding 구성 종류 (0) | 2023.02.13 |
---|---|
linux network bonding test(네트워크 이중화 테스트) (0) | 2023.02.13 |
Linux Lvm create, extend and reduce (0) | 2023.02.07 |
chrony를 이용한 시간 동기화 (0) | 2023.02.03 |
쉘스크립트 - 날짜 비교하여 로그파일 생성 (0) | 2020.03.29 |
댓글