NFS:(Network File System)網絡文件系統,主流異構平臺共享文件之一centos
NFS應用場景是:A,B,C三臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致服務器
NFS工做原理
1.用戶進程訪問 NFS 客戶端,使用不一樣的函數對數據進行處理
2.NFS 客戶端經過 TCP/IP 的方式傳遞給 NFS 服務端
3.NFS 服務端接收到請求後,會先調用 portmap 進程進行端口映射。
4.nfsd 進程用於判斷 NFS 客戶端是否擁有權限鏈接 NFS 服務端。
5.Rpc.mount 進程判斷客戶端是否有對應的權限進行驗證。
6.idmap 進程實現用戶映射和壓縮
7.最後 NFS 服務端會將對應請求的函數轉換爲本地能識別的命令,傳遞至內核,由內核驅動硬件。
注意: rpc 是一個遠程過程調用,那麼使用 nfs 必須有 rpc 服務網絡
1.nfs依賴於RPC服務來傳遞消息
2.NFS服務啓動的端口號是隨機的,啓動以後會向本地的RCP註冊
3.先啓動RPC服務,再啓動NFS服務
4.NFS和RPC之間的通信是他們本身內部完成的,對於用戶來講無感知
5.NFS客戶端和服務端不會直接溝通,必須經過RPC服務傳遞消息
6.防火牆要開放RPC服務的端口app
NFS服務端部署async
yum install -y nfs-utils /安裝nfs,這個包裏面包括了rpcbind,若是最後沒有顯示這個包中包括了rpcbind的話就自行安裝rpcbind。函數
vi /etc/exports //編輯配置文件,在這個配置文件裏面寫入:ui
!!!不要回車spa
/home/nfstestdir 192.168.29.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)blog
rw 讀寫權限
ro 只讀權限
root_squash 當 NFS 客戶端以 root 管理員訪問時,映射爲 NFS 服務器的匿名用戶(不經常使用)
no_root_squash 當 NFS 客戶端以 root 管理員訪問時,映射爲 NFS 服務器的 root 管理員(不經常使用)
all_squash 不管 NFS 客戶端使用什麼帳戶訪問,均映射爲 NFS 服務器的匿名用戶(經常使用)進程
all_squash 客戶端上全部用戶在使用NFS共享目錄時都被限定爲 一個普通用戶
anonuid/anongid 和上面幾個選項搭配使用,定義被限定用戶的uid和gid
no_all_squash 不管 NFS 客戶端使用什麼帳戶訪問,都不進行壓縮
sync 同時將數據寫入到內存與硬盤中,保證不丟失數據
async 優先將數據保存到內存,而後再寫入硬盤;這樣效率更高,但可能會丟失數據
anonuid 配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
anongid 配置 all_squash 使用,指定 NFS 的用戶 UID,必須存在系統
編輯好配置文件後啓動NFS服務
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
setenforce 0
systemctl stop firewalld
客戶端掛載
yum install -y nfs-utils
showmount -e 192.168.29.138 (使用服務端ip地址) //-e查看nfs的共享狀況
[root@localhost mnt]# showmount -e 192.168.29.138
Export list for 192.168.29.138:
/home/nfstestdir 192.168.29.0/24
mount -t nfs 192.168.29.138:/home/nfstestdir /mnt/ //在客戶端上掛載NFS
[root@localhost mnt]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 18G 879M 17G 5% /
devtmpfs 903M 0 903M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.6M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 183M 0 183M 0% /run/user/0
192.168.29.138:/home/nfstestdir 18G 946M 17G 6% /mnt
touch /mnt/dai.txt
ls -l /mnt/dai.txt
[root@localhost mnt]# ls -l /mnt/dai.txt
-rw-r--r--. 1 1000 1000 26 11月 18 17:14 /mnt/dai.txt
exportfs命令
-a:表示所有掛載或者卸載
-r:表示從新掛載
-u:表示卸載某一目錄
-v:表示顯示共享目錄
在服務端進行如下操做
vi /etc/exports
添加:/tmp/ 192.168.29.0/24(rw,sync,no_root_squash)
exports -arv
客戶端
mkdir /dai
mount -t nfs -onolock 192.168.29.138:/tmp /dai
touch /dai/test.txt
服務端
[root@localhost nfstestdir]# ls
aa dai.txt
客戶端
[root@localhost mnt]# cd /mnt/
[root@localhost mnt]# ls
aa dai.txt