NFS:Network File System 網絡文件系統(tǒng),基于內核的文件系統(tǒng)。Sun 公司開發(fā),通過使用 NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統(tǒng)上的文件,基于RPC(Remote Procedure Call Protocol 遠程過程調用)實現RPC采用C/S模式,客戶機請求程序調用進程發(fā)送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態(tài)直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發(fā)送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執(zhí)行繼續(xù)進行
NFS優(yōu)勢:節(jié)省本地存儲空間,將常用的數據,如:/home目錄,存放在NFS服務器上且可以通過網絡訪
問,本地終端將可減少自身存儲空間的使用
NFS軟件介紹
軟件包:nfs-utils(包括服務器和客戶端相關工具,CentOS8 最小化安裝時默認沒有安裝) 相關軟件包:rpcbind(必須),tcp_wrappers Kernel支持:nfs.ko 端口:2049(nfsd), 其它端口由portmap(111)分配 NFS服務主要進程: rpc.nfsd 最主要的NFS進程,管理客戶端是否可登錄 rpc.mountd 掛載和卸載NFS文件系統(tǒng),包括權限管理 rpc.lockd 非必要,管理文件鎖,避免同時寫出錯 rpc.statd 非必要,檢查文件一致性,可修復文件 說明:CentOS 6 開始portmap進程由rpcbind代替 日志:/var/lib/nfs/ NFS配置文件: /etc/exports /etc/exports.d/*.exports
NFS共享配置文件格式
/dir 主機1(opt1,opt2) 主機2(opt1,opt2)...
格式說明:
以#開始的行為注釋
主機格式:
anonymous:表示使用*通配所有客戶端 單個主機:ipv4,ipv6,FQDN IP networks:兩種掩碼格式均支持 172.31.0.0/255.255.0.0 172.31.0.0/16 wildcards:主機名通配,例如:*.longxuan.com,IP不可以 netgroups:NIS域的主機組,@group_name
每個條目指定目錄導出到的哪些主機,及相關的權限和選項
默認選項:(ro,sync,root_squash,no_all_squash) ro,rw 只讀和讀寫 async 異步,數據變化后不立即寫磁盤,先寫入到緩沖區(qū)中,過一段時間再寫入磁盤,性能高,安全性低 sync(1.0.0后為默認)同步,數據在請求時立即寫入共享存儲磁盤,性能低,安全性高 root_squash (默認)遠程root映射為nfsnobody,UID為65534,CentOS8 為nobody,CentOS 7以前的版本為nfsnobody no_root_squash 遠程root映射成NFS服務器的root用戶 all_squash 所有遠程用戶(包括root)都變成nfsnobody,CentOS8 為nobody no_all_squash (默認)保留共享文件的UID和GID anonuid和anongid 指明匿名用戶映射為特定用戶UID和組GID,而非nobody,可配合all_squash使用
范例:NFS配置示例
[root@localhost ~]# vim /etc/exports /myshare server.example.com /myshare *.example.com /myshare server?.example.com /myshare server[0-20].example.com /myshare 172.25.11.10 /myshare 172.25.0.0/16 /myshare 200018c32:a21 /myshare 200018:/64 /myshare *.example.com 172.25.0.0/16 /myshare desktop.example.com(ro) /myshare desktop.example.com(ro) server[0-20].example.com(rw) /myshare diskless.example.com(rw,no_root_squash)
NFS工具
rpcinfo 工具可以查看RPC相關信息
查看注冊在指定主機的RPC程序
rpcinfo -p hostname
查看RPC注冊程序
rpcinfo -s hostname
范例:rpcinfo
[root@centos8 ~]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper ... [root@centos8 ~]# rpcinfo -s program version(s) netid(s) service owner 100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser 100024 1 tcp6,udp6,tcp,udp status 29 #查看遠程主機 [root@centos7 ~]# rpcinfo -p 172.31.0.8 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper ...
exportfs
exportfs:可用于管理NFS導出的文件系統(tǒng)
常見選項:
-v #查看本機所有NFS共享 -r #重讀配置文件,并共享目錄 -a #輸出本機所有共享 -au #停止本機所有共享
showmount
常見用法:
#查看遠程主機的NFS共享 [root@centos7 ~]# showmount -e hostname
范例:
[root@centos7 ~]# showmount -e 172.31.0.8 Export list for 172.31.0.8: /data/wordpress *
mount.nfs
客戶端NFS掛載
NFS相關的掛載選項:man 5 nfs
fg #(默認)前臺掛載 bg #后臺掛載 hard #(默認)持續(xù)請求 soft #非持續(xù)請求 intr #和hard配合,請求可中斷 rsize #和wsize 一次讀和寫數據最大字節(jié)數,rsize=32768 _netdev #無網絡服務時不掛載NFS資源 vers #指定版本,客戶端centos8默認4.2 ,centos7默認4.1 centos6默認4.0
提示:基于安全考慮,建議使用nosuid,netdev,noexec 掛載選項
范例:臨時掛載NFS共享
[root@centos7 ~]# mount -o rw,nosuid,fg,hard,intr 172.31.0.8:/testdir /mnt/nfs/
范例:開機掛載
[root@centos7 ~]# vim /etc/fstab 172.16.0.1:/public /mnt/nfs nfs defaults,_netdev 0 0
案例:步驟
#NFS服務器創(chuàng)建用戶和相應的家目錄,將用戶wang的家目錄共享 [root@centos8 ~]# mkdir -pv /data/home [root@centos8 ~]# useradd -d /data/home/user1 -u 2000 user1 [root@centos8 ~]# Vim /etc/exports.d/test.exports /data/home *(rw) [root@centos8 ~]# exportfs -r #在第一臺NFS客戶端主機172.31.0.7上實現相對路徑法的autofs [root@centos7 ~]# useradd -M -u 2000 user1 [root@centos7 ~]# vim /etc/auto.master /home /etc/auto.home [root@centos7 ~]# vim /etc/auto.home * -fstype=nfs,vers=3 172.31.0.8:/data/home/& [root@centos7 ~]#systemctl restart autofs [root@centos7 ~]# su - user1 Last login: Fri Jul 3 16:33:34 CST 2020 on pts/0 [user1@centos7 ~]$ pwd /home/user1 [user1@centos7 ~]$ df /home/user1 -T Filesystem Type 1K-blocks Used Available Use% Mounted on 172.31.0.8:/data/home/user1 nfs4 52403200 398464 52004736 1% /home/user1 #注意:home目錄下其它用戶家目錄無法訪問 [root@centos7 ~]# ls /home user1 #在第二臺NFS客戶端主機172.31.0.6上實現絕對路徑法的autofs [root@centos6 ~]# useradd -M -u 2000 user1 [root@centos6 ~]# vim /etc/auto.master /- /etc/auto.home [root@centos6 ~]# vim /etc/auto.home /home/user1 -fstype=nfs,vers=3 nfsserver:/data/home/user1 [root@centos6 ~]# service autofs restart [root@centos6 ~]# su - user1 [user1@centos6 ~]$ pwd /home/user1 [user1@centos6 ~]$ df -T /home/user1 Filesystem Type 1K-blocks Used Available Use% Mounted on 10.0.0.8:/data/home/user1 nfs 52403200 398464 52004736 1% /home/user1 [user1@centos6 ~]$ ls /home long user1 wang
鏈接:https://www.cnblogs.com/xuanlv-0413/p/14853979.html
-
存儲
+關注
關注
13文章
4469瀏覽量
86915 -
文件系統(tǒng)
+關注
關注
0文章
293瀏覽量
20236 -
NFS
+關注
關注
1文章
55瀏覽量
26373
原文標題:探索NFS服務:打造高效穩(wěn)定的文件共享系統(tǒng)
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
linux驅動開發(fā)_文件系統(tǒng)本地掛載

【NanoPi NEO2試用體驗】nfs文件系統(tǒng)
【HarmonyOS HiSpark AI Camera試用連載 】實操如何Mount上一個NFS網絡文件系統(tǒng)
如何掛載網絡文件系統(tǒng)?
NFS根文件系統(tǒng)掛載
NFS掛載網絡文件系統(tǒng)學習
nfs掛載文件系統(tǒng)終于沒有問題了
TI-Davinci DM6446開發(fā)平臺的網絡文件系統(tǒng)(NFS)搭建和測試

你需要了解NFS網絡文件系統(tǒng)

詳細解讀NFS 文件系統(tǒng)源代碼

嵌入式Linux | 掛載網絡文件系統(tǒng)

嵌入式Linux移植3. NFS根文件系統(tǒng)掛載(從Ubuntu啟動內核,文件系統(tǒng))

評論