1、NFS介紹
NFS(Network File System)即網絡文件系統,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。
NFS支持的功能特別多,不同功能通過不同的程序來實現,不同的程序使用不同的端口,爲此需要RPC(遠程調用服務)協議來實現客戶端的協調。
當NFS服務啓動時會隨機取用數個端口,並主動向RPC服務註冊取用的相關端口信息,RPC服務就可以知道每個端口所對應的NFS功能了,然後RPC服務使用固定的端口號111來監聽NFS客戶端提交的請求,並將正確的NFS端口答應給NFS客戶端,這樣一來,就可以讓NFS客戶端與服務端進行數據傳輸了
/etc/exports文件格式
文件系統 客戶端1(文件系統導出屬性) 客戶端2(文件系統導出屬性)
客戶端
IP 192.168.130.212
Hostname *.test.com
IP networks 192.168.130.0/24
文件系統導出屬性
rw 讀寫
async sync 則代表數據會先暫存於內存當中,而非直接寫入硬盤!
sync sync表示同步更新到磁盤,同步將內存內的文件寫入到磁盤空間,保證數據不丟失,但會影響性能
root_squash 壓縮root用戶,基於imapd,將root通過網絡訪問時轉換爲nfsnobody用戶
no_root_squash 不壓縮用戶
all_squash 壓縮所有用戶,身份都會被壓縮成爲匿名用戶
anonuid,anongid 指定匿名用戶的用戶ID和組ID,必須存在於/etc/passwd中。結合all_squash使用。
常見配置
/data 192.168.130.0/24(ro)
/data 192.168.130.0/24(rw,sync)
/data 192.168.130.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
2、NFS配置
服務器端
yum -y install nfs-utils rpcbind
mkdir /data
groupadd -g 2000 nfsuser
useradd -s /sbin/nologin -u 2000 -g 2000 nfsuser
chown nfsuser:nfsuser /data/
cat /etc/exports
/data 192.168.130.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
service rpcbind restart
service nfs restart
chkconfig rpcbind on
chkconfig nfs on
客戶端
showmount -e 192.168.130.61
mount -t nfs 192.168.130.61:/data /mnt
3、nfs的輔助進程mountd等監聽在固定端口上,可以通過在編輯/etc/sysconfig/nfs等參數來實現
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
[root@localhost build]# rpcinfo -p 192.168.130.61
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 37081 mountd
100005 1 tcp 47329 mountd
100005 2 udp 53366 mountd
100005 2 tcp 35697 mountd
100005 3 udp 40155 mountd
100005 3 tcp 46134 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 41317 nlockmgr
100021 3 udp 41317 nlockmgr
100021 4 udp 41317 nlockmgr
100021 1 tcp 36015 nlockmgr
100021 3 tcp 36015 nlockmgr
100021 4 tcp 36015 nlockmgr
[root@localhost build]# rpcinfo -p 192.168.130.61
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 30001 rquotad
100011 2 udp 30001 rquotad
100011 1 tcp 30001 rquotad
100011 2 tcp 30001 rquotad
100005 1 udp 30003 mountd
100005 1 tcp 30003 mountd
100005 2 udp 30003 mountd
100005 2 tcp 30003 mountd
100005 3 udp 30003 mountd
100005 3 tcp 30003 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 30002 nlockmgr
100021 3 udp 30002 nlockmgr
100021 4 udp 30002 nlockmgr
100021 1 tcp 30002 nlockmgr
100021 3 tcp 30002 nlockmgr
100021 4 tcp 30002 nlockmgr