Linux/centos에서 NFS 서버를 구성하고 관리하는 방법은 무엇입니까?

1 NFS에 대한 기본 이해

  • NFS(Network File System)즉, 파일 운영 체제입니다.
  • NFS네트워크의 여러 컴퓨터가 서로 리소스를 공유할 수 있도록 합니다.

1.1 NFS 개요

  • 1980년에 SUN개발된 UNIX&Linux시스템 간 파일 공유 방법 .
  • 클라이언트 측 애플리케이션이 네트워크를 통해 서버 디스크에 있는 데이터에 액세스하도록 지원하는 파일 시스템 프로토콜입니다.
  • NFS네트워크 파일 공유만 제공하고 데이터 전송 기능은 제공하지 않습니다.
  • NFS클라이언트와 서버는 RPC(Remote Procedure Calls)데이터 전송을 구현해야 합니다.
  • NFS서버 디렉터리에 접근하는 것을 내보내기( export)라고 하고, 클라이언트가 내보내기 디렉터리에 접근하는 과정을 마운트( mount) 또는 가져오기( import)라고 합니다.

1.2 NFS 워크플로

1단계: NFS 공유 리소스에 액세스하기 위해 NFS 클라이언트는 쿼리 요청을 보냅니다. 즉, 클라이언트 RPC 서비스는 네트워크를 통해 서버 RPC 서비스의 포트 111에 쿼리 요청을 보냅니다.

2단계: NFS 서버 RPC는 해당 등록된 NFSdaemon 포트를 찾아 클라이언트 RPC에 알립니다.

3단계: NFS 클라이언트는 포트를 획득하고 NFSNFSdaemon을 사용하여 온라인으로 데이터를 직접 저장합니다.

4단계: NFS 클라이언트가 데이터를 성공적으로 저장한 후 사용자에게 결과를 알립니다.

2 NFS 서비스 설치 및 시작

2.1 NFS 서버 설치

  • 일반적으로 NFS는 시스템에 설치되어 있습니다.
  • 먼저 NFS가 설치되어 있는지 확인하세요. 관련 종속성 패키지는 다음 두 가지입니다.
rpm -qa | grep nfs-utils
rpm -qa | grep rpcbind
  • 확인 후 이미 설치되어 있습니다.
    여기에 이미지 설명을 삽입하세요.
  • 시스템에 NFS 종속성 패키지가 설치되어 있지 않은 경우 해당 패키지를 설치해야 합니다.
yum clean all
yum -y install nfs-utils rpcbind

2.2 NFS 서비스 시작

  • NFS 상태를 확인하세요.
systemctl status rpcbind.service
systemctl status nfs.service 

여기에 이미지 설명을 삽입하세요.

  • NFS 서비스를 시작합니다.
systemctl start rpcbind.service
systemctl start nfs.service 
  • 상태를 다시 확인하면 모두 시작되었습니다.
    여기에 이미지 설명을 삽입하세요.
  • NFS 서비스를 중지합니다.
systemctl stop nfs.service
  • NFS 서비스를 다시 시작합니다.
systemctl restart nfs.service
  • 부팅 시 자동으로 시작되도록 NFS 서비스를 설정합니다.
systemctl enable rpcbind.service 
systemctl enable nfs.service

3 NFS 서버 및 클라이언트 구성

3.1 NFS 서버 구성

  • 구성 파일은 /etc/exports;
  • 형식은 다음과 같습니다.
共享目录 [客户端1(参数)] [客户端2(参数)] 

공유 디렉터리: 공유할 NFS 서버가 필요로 하는 실제 경로(절대 경로),
클라이언트: 공유 디렉터리에 접근할 수 있는 컴퓨터.

  • 일반적인 클라이언트 형태:
고객 설명하다
192.168.1.111 지정된 IP 주소를 가진 호스트
192.168.1.0/24 지정된 서브넷의 모든 호스트
192.168.1.* 지정된 서브넷의 모든 호스트
www.xxx.com 지정된 도메인 이름의 호스트
*.xxx.com 지정된 도메인의 모든 호스트
* 모든 호스트

접근 권한 매개변수: 접근 권한 설정.

  • 공통 액세스 권한:
접근 권한 설명하다
ro 읽기 전용
rw 읽고 쓰기

사용자 매핑 매개변수

  • 사용자 매핑 매개변수 테이블:
사용자 매핑 설명하다
all_squash 모든 원격 액세스 사용자를 익명 사용자 또는 사용자 그룹에 매핑( nfsnobody)
no_all_squash 위의 반대(기본 설정)
root_squash 루트 사용자를 다음으로 설정합니다...(기본 설정)
no_root_squash 위와는 반대로
anonuid=xxx 익명 계정을 로컬 계정으로 전환( UID=xxx)
anongid=xxx 익명 사용자 그룹을 로컬 사용자 그룹(GID=xxx)

기타 매개변수: 출력 디렉토리를 제어합니다.

  • 기타 일반적으로 사용되는 매개변수:
기타 매개변수 설명하다
secure 클라이언트가 1024 미만의 TCP/IP 포트에서 NFS에 연결하도록 제한
insecure 단어 순서 클라이언트는 1024보다 큰 TCP/IP 포트를 사용하여 NFS에 연결됩니다.
sync 메모리 버퍼와 디스크에 동기적으로 데이터 쓰기
async 먼저 버퍼에 데이터를 저장한 후 필요할 때 디스크에 씁니다.
wdelay 관련된 쓰기 작업이 있는지 확인하세요.
no_wdelay 쓰기 작업은 즉시 실행되며 다음과 sync함께 사용됩니다.
subtree_check 출력 디렉터리가 하위 디렉터리인 경우 NFS 서버는 상위 디렉터리의 권한을 확인합니다.
no_subtree_check 출력 디렉터리가 하위 디렉터리인 경우 NFS 서버는 상위 디렉터리의 권한을 확인하지 않습니다.
  • 예를 들어 , IP 주소가 있는 컴퓨터에 /mnt/temp디렉터리에 읽기 및 쓰기 권한만 부여합니다 .172.16.1.33
/mnt/temp 172.16.1.33 (rw, sync)
  • 예를 들어 디렉터리 /mnt/temp01에 서브넷의 컴퓨터에만 172.16.1.0/24읽기 및 쓰기 권한을 부여하고 다른 컴퓨터 메커니즘에는 읽기 권한만 부여합니다.
/mnt/temp0 172.16.1.0/24 (rw, async) * (ro)

3.2 NFS 클라이언트 구성

  • NFS 서버 정보 보기:
showmount [选项] (参数)

-d: NFS 클라이언트에 의해 로드된 공유 디렉터리만 표시합니다.
-e: NFS 서버의 모든 공유 디렉터리를 표시합니다.

showmount -e 192.168.0.190

showmount 사용 시 방화벽을 끄고 SELinux를 허용하도록 설정하는 것이 좋습니다.

systemctl stop firewalld.service
setenforce 0
getenforce
  • NFS 서버에 공유 디렉터리를 마운트합니다.

NFS 공유 디렉터리를 로컬로 마운트합니다.
mount -t NFS 서버 IP: 출력 디렉터리가 로컬로 마운트됩니다.

  • 예를 들어:
mkdir /mnt/mytemp
mount -t nfs 192.168.0.190:/mnt/mytemp /mnt/mytemp
  • NFS 서버를 제거합니다.
umount 挂载点
  • 시작 시 NFS 공유 디렉터리를 자동으로 마운트합니다.
192.168.0.190/mnt/temp /mnt/mytemp nfs defaults 0 0

4 실제 사례

4.1 기본 요구사항

  • NFS 서버 192.168.0.190;
  • 요구 사항 1: 공유 디렉터리 /mnt/temp는 192.168.0.0/24 네트워크 세그먼트의 컴퓨터에서 액세스할 수 있습니다.
  • 요구 사항 2: 공유 디렉터리 /mnt/share는 사용자 zhang이 액세스할 수 있으며 IP는 192.168.0.10입니다.
  • 요구 사항 3: 공유 디렉터리 /mnt/upload를 사용하면 192.168.0.0/24 네트워크 세그먼트를 업로드 디렉터리로 사용할 수 있으며, 해당 세그먼트가 속한 그룹은 nfsupload이고 UID와 GID는 모두 666입니다.
  • 요구 사항 4: 192.168.0.0/24 네트워크 세그먼트의 사용자 액세스를 제외하고 공유 디렉터리 /mnt/nfs는 읽기 전용이며 인터넷에 데이터 콘텐츠를 제공할 수 있습니다.

4.2 사례 구현

  • NFS 서비스를 설치합니다.
yum -y install rpcbind
yum -y install nfs-utils
  • 디렉터리 및 테스트 파일을 만듭니다.
# 创建目录:
mkdir -p /mnt/temp
mkdir -p /mnt/share
mkdir -p /mnt/upload
mkdir -p /mnt/nfs

# 创建测试文件
touch /mnt/temp/temp1.txt /mnt/temp/temp2.txt 
touch /mnt/share/data1.txt /mnt/share/data2.txt
touch /mnt/upload/upload.txt
touch /mnt/nfs/nfs1.txt /mnt/nfs/nfs2.txt

여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

  • 공유 디렉터리 권한 속성을 설정합니다.
# 要求1:
chmod 1777 /mnt/temp/
ll -d /mnt/temp/

여기에 이미지 설명을 삽입하세요.

# 要求2:
useradd zhang
passwd zhang
cat /etc/passwd | grep zhang
chmod 700 /mnt/share/
chown -R zhang:zhang /mnt/share/
ll -d /mnt/share/

여기에 이미지 설명을 삽입하세요.

# 要求3:
groupadd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload
cat /etc/passwd | grep nfs
chown -R nfsupload:nfsupload /mnt/upload
ll -d /mnt/upload/

여기에 이미지 설명을 삽입하세요.

# 要求4:
ll -d /mnt/nfs/

여기에 이미지 설명을 삽입하세요.

  • 편집하다 /etc/exports:
/mnt/temp 192.168.0.0/24 (rw,no_root_squash)
/mnt/share 192.168.0.10 (rw)
/mnt/upload 192.168.0.0/24 (rw,all_squash,anonuid = 666,anongid = 666)
/mnt/nfs 192.168.0.0/24 (ro) * (rw,all_squash)
  • 방화벽을 닫고 Selinux를 허용하도록 설정한 후 NFS 서비스를 다시 시작합니다.
systemctl stop firewalld.service
setenforce 0
getenforce
systemctl restart nfs
  • NFS 클라이언트는 클라이언트 소프트웨어를 설치합니다.
yum -y install nfs-utils
  • NFS 서버의 공유 디렉터리를 확인합니다.
showmount -e 192.168.0.190

여기에 이미지 설명을 삽입하세요.

  • 클라이언트 시스템에 디렉터리를 생성하고 NFS 디렉터리를 해당 디렉터리에 마운트합니다.
mkdir /mnt/ClientNFS
mount -t nfs 192.168.0.190:/mnt/nfs/ /mnt/ClientNFS/
  • 다른 NFS 디렉터리를 마운트하려면 동일한 방법을 사용하세요.
  • 그리고 클라이언트 컴퓨터에 그룹 666을 만듭니다.
groupaddd -g 666 nfsupload
useradd -g 666 -u 666 -M nfsupload

다음 내용은 무시해주세요~

var code = "0f151890-7560-4e5d-85f0-4fde9477c52b"

추천

출처blog.csdn.net/NoamaNelson/article/details/132293548