Linux에서 NFS 설치 및 구성 방법은 무엇입니까?

PHPz
풀어 주다: 2023-05-19 19:46:10
앞으로
1864명이 탐색했습니다.

1. 서버 측 소프트웨어: nfs-utils 및 portmap(rpcbind) 설치
nfs-utils: rpc.nfsd 및 rpc.mountd, 두 개의 nfs 데몬 패키지 제공
portmap: nfs는 실제로 rpc 서버 프로그램으로 간주될 수 있습니다. , 그리고 rpc 서버 프로그램을 시작하기 위해서는 해당 포트의 작업이 이루어져야 하며, 이러한 작업은 portmap에 의해 완료됩니다. 평신도의 관점에서 보면 portmap은 포트 매핑에 사용됩니다.
nfs가 시작해야 하는 데몬

  • pc.nfsd: 복잡한 로그인 권한 감지 등에 주로 필요합니다.

  • portmap: rpc 프로그램의 클라이언트와 서버 측 간의 포트 통신을 처리해야 합니다

  • rpc.mountd: nfs 파일 시스템을 담당하며 클라이언트가 rpc.nfsd를 통해 서버에 로그인할 때 서버 파일에 대한 클라이언트 액세스에 대한 일련의 관리가 수행되어야 합니다.

  • lockd: rpc 패키지를 통해 잠금 요청을 처리합니다.

  • statd: nfs 잠금 제공 충돌 복구 기능 제공

  • rquotad: 사용자가 nfsmount

  • 를 통해 원격 서버에 마운트할 때 할당량을 처리합니다. 데몬 시작 순서: rpc.portmap, rpc.mountd, rpc.nfsd, rpc .statd, rpc.lockd(새 버전은 자동으로 nfsd로 시작됩니다), rpc.rquotad

nf 서버 측 명령:

•yum install nfs-utils portmap
•chkconfig rpcbind on #chkconfig: 업데이트 각 실행 수준에서 시스템 서비스 쿼리
•chkconfig nfs on
•service rpcbind start
•service nfs start

2, 서버측 구성 파일/etc/exports: 공유할 디렉터리 및 권한 지정 man imports

코드 복사 코드는 다음과 같습니다.


#: IP 주소가 192.168.0.* 범위에 있는 컴퓨터가 읽기 및 쓰기 권한으로 /home/work 디렉터리에 액세스하도록 허용합니다.
/home/work 192.168.0.* (rw,sync,root_squash)
/home 192.168.1.105 (rw,sync)
/public * (rw,sync)

구성 파일의 각 줄은 두 섹션으로 나뉩니다. : first 첫 번째 세그먼트는 절대 경로를 사용하는 공유 디렉터리이고, 두 번째 세그먼트는 클라이언트 주소 및 권한입니다.
주소는 10.0.0.8 또는 10.0.0.0/24, 10.0.0.0/255.255.255.0과 같은 전체 IP 또는 네트워크 세그먼트를 사용할 수 있습니다. 물론 주소는 DNS 확인 또는 로컬/ etc/hosts 해상도. , 와일드카드 지원(예: *.chengyongxu.com

권한은 다음과 같습니다.
rw: 읽기-쓰기, 읽기-쓰기; 참고로 읽기-쓰기 클라이언트로 설정하는 것만으로는 여전히 정상적으로 쓸 수 없습니다. 또한 공유 디렉터리를 올바르게 설정합니다. 권한은 질문 7을 참조하세요.
ro: 읽기 전용, 읽기 전용
sync: 파일은 하드 디스크와 메모리에 동시에 기록됩니다.
async: 파일은 임시로 메모리에 저장됩니다. 메모리에 직접 작성하는 대신
no_root_squash: nfs 클라이언트 연결 서버에서 루트를 사용하는 경우 서버가 공유하는 디렉터리에 대한 루트 권한도 갖게 됩니다. 분명히 이것을 켜는 것은 안전하지 않습니다.
root_squash: nfs 클라이언트가 서버에 연결할 때 루트를 사용하는 경우 서버가 공유하는 디렉터리에 대한 익명 사용자 권한이 있습니다. 일반적으로 그는 none 또는 nfsnobody의 ID를 사용합니다.
all_squash: 연결하는 nfs 클라이언트에 관계없이 최종적으로 사용되는 사용자는 서버에서 공유되는 모든 디렉터리에 익명 사용자 권한이 있습니다.
anonuid: 익명 사용자의 uid 값(일반적으로 none 또는 nfsnobody), 여기에서 설정할 수 있습니다. 값 gid 값.

nfs 클라이언트 사용자 매핑: 클라이언트 로그인 사용자는 루트 또는 다른 사용자이며, 서버 측 nfs 서버 구성에 따라 해당 클라이언트 연결은 루트 또는 지정된 nfs 서버 측 사용자에 매핑됩니다. 사용자(annuid 또는 anongid를 통해) 설정), nfsnobody 등 마지막으로 매핑된 사용자 및 공유 디렉터리 권한은 클라이언트 연결에 읽기 및 쓰기 권한이 있는지 여부에 공동으로 영향을 미칩니다. 클라이언트 및 서버 사용자 매핑을 수동으로 설정합니다. 매개변수: map_static=/etc/nfs.map
/etc/nfs.map 파일 매핑 내용은 다음과 같습니다.
# 원격 로컬
gid 500 1000
uid 500 2003

참조: nfs 클라이언트에 접속하는 사용자의 신원에 대한 설명과 관련하여 다음 설명이 확인되지 않았습니다.

• 클라이언트가 접속할 때 일반 사용자를 확인합니다. 1번 일반 사용자의 신원이 명확하게 설정되어 있는 경우 압축하면 이때 클라이언트 사용자의 ID는 지정된 사용자 2번으로 변환됩니다. nfs 서버에 동일한 이름을 가진 사용자가 있는 경우 클라이언트 로그인 계정의 ID가 2번으로 변환됩니다. nfs 서버에 동일한 이름을 가진 사용자 no.3 명시적으로 지정하지 않은 경우 동일한 이름을 가진 사용자가 없으면 이때 사용자 ID는 nfsnobody로 압축됩니다. 1번 no_root_squash가 설정된 경우 루트 사용자 ID가 nfs 서버의 루트로 압축됩니다. 2 all_squash, anonuid 및 anongid가 설정된 경우 루트 ID가 지정된 사용자로 압축됩니다. 3번을 명시적으로 지정하지 않으면 루트 사용자는 nfsnobody로 압축됩니다. 4번 no_root_squash와 all_squash를 동시에 지정하면 anonuid와 anongid가 설정된 경우 루트 사용자는 nfsnobody로 압축됩니다. 지정된 사용자 및 그룹으로 압축됩니다


3, 방화벽 설정 수정

기본적으로 centos6 서버 버전이 설치된 후에는 방화벽 iptables 구성에서 포트 22만 열립니다.

nfs 구성 파일 /etc/sysconfig/nfs에서 nfs 서비스 관련 포트를 지정하고 방화벽을 수정하여 해당 포트를 해제합니다

코드 복사:


#port rpc.mountd는
#mountd_port=892

#port rquotad_port=875
를 수신해야 합니다. #tcp port rpc.lockd는 수신해야 합니다.
#lockd_tcpport=32803

#udp port rpc.lockd는 수신해야 합니다.
#lockd_udpport=32769


IP 테이블 수정 구성 파일 /etc/sysconfig/iptables, 111을 엽니다. portmap 서비스 포트), 2049(nfs 서비스 포트)


4, /etc/hosts.allow 구성 수정

/etc/hosts.allow, /etc/hosts .deny는 로컬 inet 서비스를 사용할 수 있는 호스트를 설명합니다. .

기본적으로 수정할 필요는 없을 것 같지만, 필요한 클라이언트 머신만 연결을 허용하고 다른 머신에서는 연결을 거부하도록 설정하는 것이 가장 좋습니다

#서비스 프로세스 이름: 호스트 목록: 선택적 명령 동작 규칙이 일치하는 경우server_name :hosts-list[:command]
/etc/hosts.allow
all:127.0.0.1에 클라이언트 액세스를 허용하는 규칙을 추가합니다. #이 머신이 이 머신의 모든 서비스 프로세스에 액세스하도록 허용합니다
all:192.168 .0.135 #192.168.0.135客户端机器访问本机所有服务进程
smbd:192.168.0.0/255.255.255.0    #允许网段的ip访问smbd服务
sshd:192.168.100.0/255.255.255.0        #允许192.168.100 .网段的ip访问SSHD process on the server
SSSHD: 60.28.160.244 #Allowing 60.28.160.244 to access the SSHD process on this server
/etc/hosts.deny에서 금지된 로그인에 대한 시험 연결 정보를 다음과 같이 설정할 수도 있습니다. 사용자 사서함
sshd:all #Ban all


5을 기록하고 공유 디렉터리 권한을 760으로 수정하고 모든 그룹 디렉터리를 nfsnobody

로 수정합니다. 참조: 질문 7

6, 클라이언트 마운트
: 다음을 실행합니다. 명령은 nfs 서버(IP 주소 192.168.1.45)가 공유하는 /home을 로컬 /mnt/nfs/home 디렉토리에 마운트할 수 있습니다.
showmount -e nfs-serverip: nfs 서버가 공유하는 리소스 보기

mount -t nfs 192.168.1.45:/home /mnt/nfs/home

7, nfs 성능 테스트:

• 명령에 따라 time dd if =/dev/zero of=/mnt/home bs=16k count=16384 합리적인 wsize 및 rsize 값을 설정하려면

•nfs 클라이언트 수에 따라 /에서 nfs 서버 측 프로세스의 적절한 수를 설정하세요. etc/sysconfig/nfs 구성 파일 rpcnfsdcount, 기본값은 8exportfs 명령: nfs를 시작한 후 /etc/exports를 수정하면 nfs를 다시 시작해야 합니까? 이때, 내보내기fs 명령을 사용하여 변경 사항을 즉시 적용할 수 있습니다. 명령 형식은 다음과 같습니다:

exportfs [-aruv] -a: /etc/exports의 내용을 모두 마운트하거나 마운트 해제 -r: 다시 마운트 /etc/exports에서 공유 보내는 디렉터리 -u: 디렉터리 마운트 해제 -v: 내보낼 때 자세한 정보를 화면에 출력합니다.

showmount 명령: nfs 서버의 마운트 정보를 표시합니다.
showmount -e [nfs-server]: 지정된 nfs 서버에 내보낸 디렉터리를 표시합니다. 다음 IP를 지정하지 않으면 머신을 nfs 서버로 사용할 때 외부에 공유되는 디렉터리가 표시됩니다. .

rpcinfo -p 명령: rpc 정보 표시 -p 매개변수: rpc 프로토콜을 사용하여 호스트에서 사용되는 rpcbind를 감지하고 등록된 모든 rpc 프로그램을 표시합니다.

nfsstat 명령: nfs의 작동을 조정하는 데 매우 도움이 되는 nfs의 실행 상태를 확인합니다.


프로세스 중 문제 해결:

1 yum 또는 rpm을 통해 portmap을 설치한 후 명령 서비스를 발견했습니다. portmap 시작 시간이 초과되었습니다. portmap: 인식할 수 없는 서비스입니다.

centos6(리눅스 커널 2.6.32)에서는 portmap이 rpcbind로 대체되었습니다. 설치 정보를 잘 확인해보면 yum install portmap 명령을 실행하면 rpcbind가 설치되어 있는 것을 알 수 있습니다. 설치가 완료된 후 yum whatprovides portmap 명령을 통해 자세한 정보를 볼 수도 있습니다. 2. 클라이언트가 마운트되면 mount clntudp_create: rpc: port mapper failure - rpc: Could not receive 오류가 보고됩니다.

•1. rpcinfo -p 명령을 사용하여 portmap 서비스의 정상적인 시작과 해당 포트(기본값 111)를 확인합니다.
•2 /etc/sysconfig/iptables 방화벽 설정을 확인하고 tcp, udp 포트 111 액세스를 허용합니다. , 그리고 iptables 재시작

•3, /etc/hosts.deny, /etc/hosts.allow를 확인하여 클라이언트 연결이 차단되었는지 확인하세요

3 클라이언트가 showmount -e nfs-server 명령을 실행하면 오류가 보고되었습니다: mount clntudp_create: rpc: 프로그램이 등록되지 않았습니다.

nfs 및 rpcbind 서비스가 시작되지 않았습니다. chkconfig를 사용하여 시스템 서비스에 nfs 및 rpcbind를 추가하고 서비스로 시작하세요.
또는 /etc/hosts.allow all:192.168.0.135
에 클라이언트 액세스를 허용하는 규칙을 추가하세요.

4. 클라이언트가 showmount -e nfs-server 명령을 실행하면 오류가 보고됩니다: rpc mount 내보내기: rpc: 수 없음; errno = 호스트에 대한 경로 없음
구성 파일: /etc/sysconfig/nfs
nfs 서비스 관련 포트 위치를 설정하고 주석을 제거한 후 iptables 방화벽 설정에서 해당 포트의 udp 및 tcp 흐름이 통과하도록 지정합니다.
#mountd_port=892
#statd_port=662
#lockd_tcpport=32803
#lockd_udpport=32769
iptables -a 입력 -p tcp --dport 662 -m 상태 --상태 새로운 -j accept
iptables -a 입력 -p udp --dport 661 -m state --state new -j accept

5, showmount -e nfs-server가 성공하고 공식 마운트가 다음과 같은 경우 오류가 보고됩니다. mount: mount to nfs server '192.168.1.5' failed : 시스템 오류: 호스트에 대한 경로가 없습니다. 이는 nfs 서비스의 기본 포트 2049가 방화벽에 의해 차단되었기 때문입니다. 위와 마찬가지로 포트 2049가

6을 통과할 수 있도록 iptables를 수정합니다. showmount -e nfs-server 성공하고 공식 마운트가 보고되면 오류가 발생합니다: mount: mount to nfs server '192.168.1.5' failed: timed out (retrying).
/etc/sysconfig/iptables 편집 시 해당 포트의 tcp 포트 통과는 허용되지만 UDP는 허용되지 않습니다. 다른 가능한 이유는 다음을 참조하세요. nfs 서버 실패 오류로 인해 마운트 명령이 실패합니다.
nfs 서버에서 dns 서버로의 이름 조회 요청을 비활성화합니다.
또는 nfs 클라이언트에서 사용하는 nfs 버전이 버전 3이 아닙니다.

7, 내보내기 구성 파일 디렉토리 권한 속성은 rw(기본값은 root_squash)로 설정되어 있지만 클라이언트의 마운트 디렉토리에서 touch 명령을 실행하면 다음 오류 메시지가 나타납니다. touch: can touch `a': 권한이 거부되었습니다. 해결 방법:

• 서버 측 공유 디렉터리 권한 확인 ll -d /home
• 서버 측 공유 디렉터리 권한 수정 chown 760 /home(파일 소유자 루트는 전체 권한을 가지며 파일의 모든 그룹 사용자는 읽기 및 쓰기 권한이 있고 다른 사용자에게는 권한이 없습니다. 그런 다음 디렉터리 그룹을 nfsnobody로 설정하세요.)
•서버 측 공유 디렉터리 권한 그룹 소유자를 nfsnobody로 수정하세요(cat /etc/passwd | grep nob)
•chgrp nfsnobody / home
•클라이언트에서 새 파일을 성공적으로 생성했습니다!

위 내용은 Linux에서 NFS 설치 및 구성 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!