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
기본적으로 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.allowall: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 서버가 공유하는 리소스 보기
7, nfs 성능 테스트:
•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 서버로 사용할 때 외부에 공유되는 디렉터리가 표시됩니다. .
nfsstat 명령: nfs의 작동을 조정하는 데 매우 도움이 되는 nfs의 실행 상태를 확인합니다.
프로세스 중 문제 해결:
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 재시작
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!