centos7安裝nfs服務配置
阿新 • • 發佈:2018-07-09
dex class -- bin 隨機 nfs文件系統 rpc 管理 osi nfs為什麽需要RPC?
因為NFS支持的功能很多,不同功能會使用不同程序來啟動,因此,NFS對應的功能所對應的端口無法固定。
端口不固定造成客戶端與服務端之間的通信障礙,所以需要RPC來從中幫忙。
NFS啟動時會隨機取用若幹端口,然後主動向RPC服務註冊取用相關端口和功能信息,RPC使用固定端口111來監聽來自NFS客戶端的請求,
並將正確的NFS服務端口信息返回給客戶端,這樣客戶端與服務端就可以進行數據傳輸了
因為NFS支持的功能很多,不同功能會使用不同程序來啟動,因此,NFS對應的功能所對應的端口無法固定。
端口不固定造成客戶端與服務端之間的通信障礙,所以需要RPC來從中幫忙。
NFS啟動時會隨機取用若幹端口,然後主動向RPC服務註冊取用相關端口和功能信息,RPC使用固定端口111來監聽來自NFS客戶端的請求,
並將正確的NFS服務端口信息返回給客戶端,這樣客戶端與服務端就可以進行數據傳輸了
1、由程序在NFS客戶端發起存取文件的請求,客戶端本地的RPC(rpcbind)服務會通過網絡向NFS服務端的RPC的111端口發出文件存取功能的請求。
2、NFS服務端的RPC找到對應已註冊的NFS端口,通知客戶端RPC服務。
3、客戶端獲取正確的端口,並與NFS daemon聯機存取數據。
4、存取數據成功後,返回前端訪問程序,完成一次存取操作。
所以無論客戶端,服務端,需要使用NFS,必須安裝RPC服務。
NFS的RPC服務,在Centos5下名為portmap,Centos6下名稱為rpcbind。
一、NFS服務安裝配置
# yum install nfs-utils rpcbind
二、啟動rpcbind服務
# systemctl status rpcbind.service //查看服務狀態 # which rpcbind //如果不知道rpcbind命令在哪 # systemctl restart rpcbind.service //啟動rpc服務 # lsof -i :111 //查看rpc COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbind 2375 rpc 6u IPv4 19429 0t0 UDP *:sunrpc rpcbind 2375 rpc 8u IPv4 19431 0t0 TCP *:sunrpc (LISTEN) rpcbind 2375 rpc 9u IPv6 19432 0t0 UDP *:sunrpc rpcbind 2375 rpc 11u IPv6 19434 0t0 TCP *:sunrpc (LISTEN) # netstat -lntup|grep rpcbind tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2375/rpcbind tcp6 0 0 :::111 :::* LISTEN 2375/rpcbind udp 0 0 0.0.0.0:854 0.0.0.0:* 2375/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 2375/rpcbind udp6 0 0 :::854 :::* 2375/rpcbind udp6 0 0 :::111 :::* 2375/rpcbind //如果出現-bash未找到命令可執行下面命令 #yum install net-tools lsof //查看nfs服務向rpc註冊的端口信息 #rpcinfo -p localhost //檢查rpcbind是否開機啟動 #chkconfig --list rpcbind //啟動NFS服務 #systemctl start nfs.service //查看狀態 #systemctl status nfs.service //再次查看rpc註冊的端口信息 #rpcinfo -p localhost //NFS常見進程詳解 #ps -ef|egrep "rpc|nfs" rpc 2375 1 0 13:57 ? 00:00:00 /usr/sbin/rpcbind start rpcuser 2475 1 0 14:00 ? 00:00:00 /usr/sbin/rpc.statd root 2476 2 0 14:00 ? 00:00:00 [rpciod] root 2854 1 0 14:30 ? 00:00:00 /usr/sbin/rpc.idmapd root 2855 1 0 14:30 ? 00:00:00 /usr/sbin/rpc.mountd root 2865 2 0 14:30 ? 00:00:00 [nfsd4_callbacks] root 2871 2 0 14:30 ? 00:00:00 [nfsd] root 2872 2 0 14:30 ? 00:00:00 [nfsd] root 2873 2 0 14:30 ? 00:00:00 [nfsd] root 2874 2 0 14:30 ? 00:00:00 [nfsd] root 2875 2 0 14:30 ? 00:00:00 [nfsd] root 2876 2 0 14:30 ? 00:00:00 [nfsd] root 2877 2 0 14:30 ? 00:00:00 [nfsd] root 2878 2 0 14:30 ? 00:00:00 [nfsd] root 2892 1426 0 14:54 pts/0 00:00:00 grep -E --color=auto rpc|nfs //nfsd(rpc.nfsd)主進程,主要是管理客戶端能否登入服務端,登入者ID判別。 //mountd(rpc.mountd)管理NFS文件系統,登入者的權限管理 //rpc.lockd(非必要)用來鎖定文件,用於客戶端同時寫入 //rpc.statd(非必要)檢查文件一致性 //rpc.idmapd 名字映射後臺進程
三、配置NFS開機自啟動
# systemctl enable rpcbind //這個要先啟動 # systemctl enable nfs
四、NFS服務器配置
#vi /etc/exports exports文件配置格式: NFS共享的目錄 NFS客戶端地址1(參數1,參數2,...) 客戶端地址2(參數1,參數2,...) //說明: NFS共享目錄: 要用絕對路徑,可被nfsnobody讀寫 //NFS客戶端地址: 指定IP: 192.168.0.1 指定子網所有主機: 192.168.0.0/24 指定域名的主機: test.com 指定域名所有主機: *.test.com 所有主機: * 參數: ro:目錄只讀 rw:目錄讀寫 sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性 async:將數據先保存在內存緩沖區中,必要時才寫入磁盤 all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody) no_all_squash:與all_squash取反(默認設置) root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置) no_root_squash:與rootsquash取反 anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx) anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶
|
例如:
# cat /etc/exports /data/iso 172.18.0.0/24(rw,sync,fsid=0) 172.17.1.0/24(rw,sync,fsid=0)
五、創建需要共享的目錄
# mkdir -p /data/iso # chown nfsnobody.nfsnobody /data/iso
六、重新加載nfs配置
# exportfs -rv
七、查看nfs服務器掛載情況
# showmount -e localhost
客戶端的安裝配置
一、安裝nfs 和 rpcbind
# yum install nfs-utils rpcbind
二、關閉防火墻
#systemctl stop firewalld.service
三、啟動服務並設置自動啟動 rpcbind 和 nfs :
#systemctl start rpcbind.service #systemctl start nfs.service #systemctl enable rpcbind.service #systemctl enable nfs.service
四、查看rpc ,nfs狀態
# systemctl status rpcbind.service # systemctl status nfs.service
五、在所有客戶端掛載服務器172.18.0.109的/data/iso目錄
#showmount -e 172.18.0.109
六、進行掛載:
#mkdir /data1 # mount -t nfs 172.18.0.109:/data/iso /data1
七、設置客戶端開機時自動掛載172.18.0.109:/data/iso到本地的/data1
# vi /etc/fstab 172.18.0.109:/data/iso /data1 nfs nolock 0 0
centos7安裝nfs服務配置