一、NFS服務簡單介紹
NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。
二、NFS權限參數說明
權限 |
說明 |
rw |
表示可讀寫權限 |
ro |
表示只讀權限 |
sync |
請求或寫入數據時,數據同步寫入到NFSServer的硬盤才返回(優點,數據安全不會丟,缺點,性能比不啟用該參數要差) |
async |
寫入時數據會先寫到內存緩沖區,只到硬盤有空檔才會再寫入磁盤,這樣可以提高寫入效率!;風險為若服務器宕機或不正常關機,會損失緩沖區為寫入磁盤的數據(解決辦法:服務器主板加電池或加UPS不間斷電源)! |
no_root_squash |
訪問NFS Server共享的用戶如果是root的話,它對該共享目錄具有root權限。這個配置原本是為無盤客戶端准備的,用戶避免應用 |
root_squash |
如果訪問NFS Server共享目錄的用戶是root,則它的權限將被壓縮或匿名用戶,同時它的UID和GID通常會變成nfsnobody帳號身份 |
all_squash |
不管訪問NFS Server共享目錄的用戶身份如何,它的權限都將被壓縮成匿名用戶,同時它的UID和GID通常會變成nfsnobody帳號身份。在早期多個NFS客戶端同時寫入NFS Server數據時,這個參數很有用 *在生產中配置NFS的重要技巧 1)、確保所有客戶端服務器對NFS共享目錄都具備相同的用戶訪問權限 a、all_squash把所有客戶端都壓縮成固定的匿名用戶(UID相同) b、就是aninuid,anongid指定的UID和GID的用戶 2)、所有的客戶端和服務端都需要有一個相同的UID和GID用戶,即nfsnobody(UID必須相同) |
anonuid |
參數以anon*開頭即指anonymous匿名用戶,這個用戶的UID設置值通常為nfsnobody的UID值,當然也可以自行設置這個UID值。但是,UID必須存在於/etc/passwd中。在多NFS Clients時,如多台Web Server共享一個NFS目錄,通過這個參數可以使得不同的NFS Clients寫入的數據對所有NFS Clients保持同樣的用戶權限,即為配置的匿名UID對應用戶權限,這個參數很有用,一般默認即可 |
anongid |
同anonuid,區別就是把uid(用戶id)換成gid(組id) |
noatime |
在文件系統上不更新inode訪問時間 |
nosuid |
不允許設置用戶標識或設置組標識為才能生效 |
intr |
當服務器宕機或者無法到達時,允許中斷NFS請求 |
noexec |
當服務器宕機或者無法到達時,允許中斷NFS請求 |
rsize=8192和wsize=8192 |
通過設定大的同時傳輸的數據塊大小(bytes),以提高NFS讀寫的速度 |
nodiratime |
不允許更新文件系統上的目錄 inode 訪問記錄 |
三、搭建NFS服務
1、NFS服務搭建環境說明
系統環境:CentOS7.5 64位
NFS服務端:
•主機名:nfs-master
•IP地址:172.16.2.31
NFS客戶端
•主機名:nfs-client
•IP地址:172.16.2..32
2、NFS服務端搭建步驟
第一步:安裝並檢查NFS和RPC服務
yum install nfs-utils rpcbind -y rpm -qa nfs-utils rpcbind
第二步:啟動RPC服務和NFS服務 (必須先啟動RPC服務,然后再啟動NFS服務)
systemctl start rpcbind systemctl start nfs ps -ef|grep rpc ps -ef|grep nfs lsof -i:111 rpcinfo -p localhost
第三步:設置開機自啟動並檢查
systemctl enable rpcbind systemctl enable nfs systemctl list-unit-files --type=service|grep "enabled"|egrep "rpcbind|nfs"
第四步:創建共享目錄
mkdir /data chown -R nfsnobody.nfsnobody /data ls -ld /data
第五步:配置共享/data目錄
cat>>/etc/exports<<EOF #NFS server share directories /data 172.16.2.0/24(rw,sync) EOF cat /etc/exports
第六步:平滑重啟NFS服務並檢查服務
systemctl reload nfs cat /var/lib/nfs/etab
第七步:本地查看掛載目錄
showmount -e 172.16.2.31
3、NFS客戶端搭建步驟
第一步:安裝NFS和RPC服務並檢查
yum install nfs-utils rpcbind -y rpm -qa nfs-utils rpcbind
第二步:啟動RPC服務(不需要啟動NFS服務,原因是不安裝NFS服務的話沒有showmount這個命令)
systemctl start rpcbind ps -ef|grep rpc lsof -i:111
第三步:設置開機自啟動並檢查
systemctl enable rpcbind systemctl list-unit-files --type=service|grep "enabled"|grep "rpcbind"
第四步:檢查服務端的NFS掛載目錄是否OK
showmount -e 172.16.2.31
第五步:掛載設置開機自動掛載
mount -t nfs 172.16.2.31:/data /mnt echo "mount -t nfs 172.16.2.31:/data /mnt">>/etc/rc.local #提示:也可以放入/etc/fstab,如果要放入/etc/fstab,需啟用netfs服務。這是因為fstab會優先於網絡被Linux系統加載。網絡沒啟動時執行fstab會導致連不上NFS服務器端,無法實現開機自動掛載。
第六步:查看是否掛載成功
[root@nfs-client ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 57G 1.6G 53G 3% / devtmpfs 225M 0 225M 0% /dev tmpfs 236M 0 236M 0% /dev/shm tmpfs 236M 5.6M 230M 3% /run tmpfs 236M 0 236M 0% /sys/fs/cgroup /dev/sda1 190M 93M 84M 53% /boot tmpfs 48M 0 48M 0% /run/user/0 172.16.2.31:/data 57G 1.6G 53G 3% /mnt