NFS : Network File System
網絡文件系統(NFS)是一個分佈式文件系統協議,最初由Sun Microsystems於1984年開發,[1]允許客戶端計算機上的用戶通過計算機網絡訪問文件,就像訪問本地存儲一樣。與許多其他協議一樣,NFS建立在開放網絡計算遠程過程調用(ONC RPC)系統上。NFS是Request for Comments(RFC)中定義的開放標準,允許任何人實現該協議。
在centos上默認安裝了nfs-utils,可直接啓動服務。
三個關鍵進程:
- moutnd 掛載守護進程,負責客戶端來源認證進程
- nfsd:文件讀寫
- idmapd:id映射進程
NFS配置文件/etc/exports
#文件系統 #客戶端{ip | 網段} #導出屬性
/nfsfile 192.168.2.0/24(rw,no_root_squash)
文件系統導出屬性:
導出屬性 | |
---|---|
rw | 讀寫 |
async | 同步 |
sync | 異步 |
root_squash | 壓縮用戶,通過網絡將root用戶轉換爲nfsnobody |
no_root_squash | 不壓縮用戶,任何客戶端root可以訪問,不安全 |
all_squash | 壓縮所有用戶,誰都不準以自己的身份訪問,最安全 |
anonuid,anongid | 指定用戶 |
showmout
#全部 在nfs服務器端顯示所有的掛載會話
showmount -a SERVER_IP
#文件 在服務器端執行,顯示那個導出的文件系統被那些客戶端掛載過
showmount -d SERVER_IP
#共享,在客戶端執行,探查某主機所導出的nfs文件系統
showmount -e SERVER_IP
exportfs導出nfs文件
#操作所有操作系統
exportfs -a
#重新導出所有文件系統
exportfs -ra
#取消導出的所有文件系統
exportfs -ua
#顯示詳細信息
exportfs -v
nfs的輔助進程mountd等監聽在固定端口上,可以通過在編輯/etc/sysconfig/nfs等參數來實現
操作實例
客戶端以某一個具體的用戶訪問NFS
1)服務端
#編輯/etc/exports,壓縮所有用戶
/nfsfile 172.16.0.0/16(rw,all_squash)
#創建一個新的目錄,掛載新的分區sda#,然後使某個UID能夠訪問
fdisk /dev/sda
mkdir /nfsfile
#開機自動掛載,編輯/etc/fstab並有acl特性,
/dev/sda3 /nfsfile default,acl 0 0
#生效
mount -a
#創建一個UID=1000的用戶
useradd -u 1000 testuser
#設置UID=1000的用戶對/nfsfile有rwx權限
setfacl -m u:1000:rwx /nfsfile
2)客戶端
#將NFS共享的文件掛載至本地某個目錄/mnt/nfs
mkdir /mnt/nfs
mount -t nfs 172.16.36.215:/nfsfile /mnt/nfs
#編輯/etc/fstab設置爲開機自動掛載,_netdev特性可檢測掛載網絡
172.16.36.215:/nfsfile /mnt/nfs default,_netdev 0 0
#創建NFS服務端設置的UID=1000的用戶
useradd -u 1000 testuser
#su到testuser
su - testuser
#訪問/mnt/nfs目錄,測試
cd /mnt/nfs
cp /etc/fstab ./