NFS簡介
- 網絡文件系統,採用CS架構的
- 分佈式計算系統中的一部分組成,可以在不同網絡上共享和裝配遠程文件系統
- 提供一種Unix操作系統上共享文件的方法
- 結合遠程網絡啓動實現
- 無盤工作站:PXE啓動系統,所有數據均在服務器磁盤陣列上
- 瘦客戶工作站:本地啓動系統,本地磁盤存儲了常用的系統工作,而所有的/home目錄的用戶數據都被會存放在NFS服務器上並在網絡中處處可用
NFS協議模型
- NFS客戶端和服務端
- RPC遠程調用
- 基於TCP/IP網絡進行傳輸
RPC協議
- NFS協議本身不具備網絡傳輸功能 ,而是基於RCP協議實現的
- 提供一個面向過程的遠程服務的接口
- 可以通過網絡從遠程主機程序上請求服務,而不需要了解底層網絡技術協議 - 工作在OIS模型的會話層,可以遵循RPC應用層協議提供服務端口註冊等功能
- RPC使用網絡端口111監聽客戶端請求
NFS相關包和工具
- nfs-utils: NFS的主要組件,包含有:rpc.nfsd已經rpc.mountd這兩個核心守護進程組件
- rpcbind:提供RPC的端口映射的守護進程及相關文件、執行文件等
- exportfs: 在NFS服務端,維護NFS共享資源的命令
- showmount:在NFS客戶端,查看服務器共享的資源
- nfsstat:顯示NFS的狀態統計信息
- rpcinfo:顯示由RPC維護的端口映射,顯示已經註冊的RPC服務列表
NFS服務概覽
- 安裝:
yum install nfs-utils rpcbind
- 軟件包:nfs-utils -> 依賴rpcbind軟件包
- 服務類型:由systemd啓動的守護進程
- 配置單元: /usr/lib/systemd/system/nfs.service
- 守護進程: rpc.nfsd / rpc.mountd等
- 端口: 111 2049 20048
- 配置文件:/etc/exportfs
- 啓動相關服務:
[root@test ~]# systemctl start rpcbind
[root@test ~]# systemctl start nfs-server
ss -tanl | grep -E "111|2049|20048"
儘量先啓動rpcbind,如果順序顛倒可能之前啓動的服務端口沒有註冊上去。
NFS服務端配置
-
主配置文件:/etc/exportfs
-
格式:
共享文件 [主機表1[參數項…]] [主機表2[參數項…]]參數項:控制共享目錄的訪問權限,用戶映射等等
ro:只讀
rw:讀寫
root_squash: nfs客戶端以root用戶訪問時被映射爲匿名用戶
no_root_squash
all_squash:所有用戶
sync: 同時將數據寫入到內存和磁盤中,保證不丟失數據
async:優先將數據寫入到內存中,然後再寫入到硬盤中,提高效率,但是可能會丟失書數據 -
exportfs命令:用戶維護NFS共享目錄列表
-
當配置了/etc/exportfs文件後,可以使用exportfs命令直接使其生效
-
參數選項:
-a: 全部掛載或卸載/etc/exportfs文件中的設置
-r: 重新掛載
-u: 卸載共享目錄
-v: 顯示輸出列表的同時,顯示設定參數
NFS客戶端
- showmount命令:
常用參數:
-e: 顯示NFS服務端上共享的文件列表
-a: 顯示本地掛載的文件資源的情況
-v:version
-d: 查看哪些共享目錄已經被客戶端掛載
關於NFS文件系統的和卸載:
mount -t nfs [-o 參數] NFS服務端地址:/共享目錄 /本地掛載點
umount /本地掛載點
開機啓動時自動掛載:/etc/fstab文件
NFS服務端地址:/共享目錄 /本地掛載點 nfs default 0 0
NFS實驗部署
[root@node1 ~]# yum install nfs‐utils rpcbind ‐y
[root@node1 ~]# mkdir /nfsfile
[root@node1 ~]# chmod ‐Rf 777 /nfsfile/
[root@node1 ~]# cat /etc/exports
/nfsfile 192.168.10.0/24(rw,sync,no_root_squash)
[root@node1 ~]# systemctl restart rpcbind
[root@node1 ~]# systemctl restart nfs‐server
Export list for node1: /nfsfile 192.168.10.0/24
[root@node1 ~]# mount ‐t nfs 192.168.10.10:/nfsfile /mnt/nfsfile
[root@node1 data]# mount
192.168.10.130:/nfsfile on /data type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.10,local_lock=none,addr=192.168.10.130)
開機自動掛載 /etc/fstab配置文件中加入:
192.168.10.10:/nfsfile /mnt/nfsfile nfs defaults 0 0