NFS服務搭建與配置
NFS介紹
NFS是Network File System的縮寫;NFS最早由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發;
NFS數據傳輸基於RPC協議,RPC為Remote Procedure Call的簡寫。
NFS應用場景是:A,B,C三臺機器上需要保證被訪問到的文件是一樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致
NFS原理圖:
NFS服務器安裝配置
yum install -y nfs-utils rpcbind
vim /etc/exports //加入如下內容
/home/nnfsshare 192.168.159.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
保存配置文件後,執行如下準備操作
mkdir /home/nfsshare //創建上面設置的共享目錄
chmod 777 /home/nfsshare //修改權限
systemctl start rpcbind //啟動rpcbind服務
systemctl start nfs //啟動nfs,註意啟動順序別亂了,是先啟動rpcbind服務,在啟動nfs
systemctl enable rpcbind //把rpcbind服務設置開機啟動
systemctl enable nfs //設置開機啟動
NFS配置選項
rw 讀寫
ro 只讀
sync 同步模式,內存數據實時寫入磁盤
async 非同步模式
no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大
root_squash 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶
all_squash 客戶端上所有用戶在使用NFS共享目錄時都被限定為一個普通用戶
anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid
NFS客戶端使用:
yum install -y nfs-utils
showmount -e 192.168.159.131 //該ip為NFS服務端ip
若出現上如的錯誤,排查思路:①在服務端執行showmount -e看看,有沒有顯示共享的目錄;如果沒有,可能可能是你啟動rpcbind和nfs順序錯了;②檢查服務端和客戶端的iptables,最簡單的是臨時使用iptables -F 清空規則就可。
mount -t nfs 192.168.159.131:/home/nfsshare /mnt
df -h
touch /mnt/linux.txt
ls -l /mnt/linux.txt //可以看到文件的屬主和屬組都為1000
exportfs命令:實現不重啟nfs動態更新
常用選項
-a 全部掛載或者全部卸載
-r 重新掛載
-u 卸載某一個目錄
-v 顯示共享目錄
以下操作在服務端上:
vim /etc/exports //增加
/tmp/ 192.168.159.0/24(rw,sync,no_root_squash)
exportfs -arv //不用重啟nfs服務,配置文件就會生效
以下操作在客戶端:
mkdir test
mount -t nfs -onolock 192.168.133.130:/tmp test
touch /test/1.txt
ls -l !$
NFS客戶端問題
NFS 4版本會有該問題
客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、屬組為nobody
客戶端掛載時加上 -o nfsvers=3
客戶端和服務端都需要
vim /etc/idmapd.conf //
把“#Domain = local.domain.edu” 改為 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啟rpcidmapd服務
NFS服務搭建與配置