本節索引:
一、NFS網絡文件系統介紹
二、NFS服務配置
三、NFS掛載及autofs自動掛載
四、實驗:實現NFS服務
五、實驗:實現NFS偽根(RHCE)
六、實驗:實現家目錄NFS自動絕對路徑、相對路徑掛載
一、NFS網絡文件系統介紹
NFS:Network File System 網絡文件系統,基于內核的文件系統。Sun公司開發,通過使用NFS,用
戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件,基于RPC(Remote Procedure Call Protocol遠
程過程調用)實現
RPC采用C/S模式??蛻魴C請求程序調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答
信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參
數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進
程結果,然后調用執行繼續進行。
NFS優勢:
1.節省本地存儲空間,將常用的數據如:home目錄,存放在一臺NFS服務器上且可以通過網絡訪問,那么本
地終端將可以減少自身存儲空間的使用,適合在局域網使用
2.用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上
被訪問使用。
3.一些存儲設備如軟驅、CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的
機器使用。這可以減少整個網絡上可移動介質設備的數量。
NFS常見應用場景:
1.多個機器共享一臺CDROM或者其他設備。這對于在多臺機器中安裝軟件來說
更加便宜跟方便。
2.在大型網絡中,配置一臺中心NFS服務器用來放置所有用戶的home目錄可能會
帶來便利。這些目錄能被輸出到網絡以便用戶不管在哪臺工作站上登錄,總能得
到相同的home目錄。
3.不同客戶端可在NFS上觀看影視文件,節省本地空間。
4.在客戶端完成的工作數據,可以備份保存到NFS服務器上用戶自己的路徑下。
二、NFS服務介紹
軟件包:nfs-utils(系統自帶)
Kernel支持:nfs.ko
端口:2049(nfsd), 其它端口由rpcbind(111)分配
配置文件:/etc/exports,/etc/exports.d/*.exports
CentOS 7不支持同一目錄同時用nfs和samba共享,因為使用鎖機制不同
相關軟件包:rpcbind(必須),tcp_wrappers
CentOS 6開始portmap進程由rpcbind代替
NFS服務主要進程:
rpc.nfsd 最主要的NFS進程,管理客戶端是否可登錄
??? rpc.mountd 掛載和卸載NFS文件系統,包括權限管理
??? rpc.lockd 非必要,管理文件鎖,避免同時寫出錯
??? rpc.statd 非必要,檢查文件一致性,可修復文件
日志:/var/lib/nfs/
配置防火墻,開放NFS服務
配置NFS使用固定端口
vim /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
防火墻除開放上述端口,還需開放TCP和UDP的111和2049共4個端口
導出的文件系統的格式:
/dir ? 主機1(opt1,opt2) 主機2(opt1,opt2)…
#開始為注釋
主機格式:
單個主機:ipv4,ipv6,FQDN
IP networks:兩種掩碼格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主機名通配,例如*.magedu.com,IP不可以
netgroups:NIS域的主機組,@group_name
anonymous:表示使用*通配所有客戶端
每個條目指定目錄導出到的哪些主機,及相關的權限和選項
默認選項:(ro,sync,root_squash,no_all_squash)
示例:在/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 2000:472:18:b51:c32:a21
/myshare 2000:472:18:b51::/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
rpcinfo -p hostname
rpcinfo -s hostname 查看RPC注冊程序
exportfs
-v 查看本機所有NFS共享
-r 重讀配置文件,并共享目錄
-a 輸出本機所有共享
-au 停止本機所有共享
查看指定NFS服務器提供的共享目錄文件
showmount -e NfsServerIP
mount.nfs 掛載工具
NFSv4支持通過掛載NFS服務器的共享“根”,從而瀏覽NFS服務器上的共享
目錄列表
mount nfsserver:/ /mnt/nfs
三、NFS掛載及autofs自動掛載
客戶端NFS掛載:
基于安全考慮,建議使用nosuid,nodev,noexec掛載選項
NFS相關的掛載選項:
fg(默認)前臺掛載,bg后臺掛載
hard(默認)持續請求,soft 非持續請求
intr 和hard配合,請求可中斷
rsize和wsize 一次讀和寫數據最大字節數,rsize=32768
_netdev 無網絡不掛載
示例:
默認NFS v4版本掛載
mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/
也可指定以其他NFS版本掛載
mount -o vers=3 192.168.30.10:/data/nfsdir2 /mnt/nfs2
開機掛載:/etc/fstab
172.16.0.1:/public /mnt/nfs nfs defaults 0 0
autofs自動掛載:
可使用autofs按需要掛載NFS共享,在空閑時自動卸載
由autofs包提供
系統管理器指定由/etc/auto.master自動掛載器守護進程控制的掛載點
自動掛載監視器訪問這些目錄并按要求掛載文件系統
文件系統在失活的指定間隔5分鐘后會自動卸載
為所有導出到網絡中的NFS啟用特殊匹配 -host 至“browse”
參看幫助:man 5 autofs
支持含通配符的目錄名
* server:/export/&
四、實驗:實現NFS服務
前期準備:
虛擬機兩臺
NFS服務器:CentOS 7.4 ? ? ?IP:192.168.30.10
客戶端:CentOS 7.5 ? ? IP:192.168.30.17
NFS服務器端:
systemctl start nfs-server
mkdir /data/nfsdir{1,2,3}
vim /etc/exports
/data/nfsdir1 *
/data/nfsdir2 *(rw)
/data/nfsdir3 *(rw,no_root_squash)
#####################################################
也可基于IP控制NFS訪問(安全性不高,可被冒充)
/data/nfsdir2 192.168.30.17(rw)??
/data/nfsdir2 192.168.30.17(rw) 192.168.30.0/24(ro)
#####################################################
重啟NFS服務
exportfs –r
查看本機已生效的NFS共享文件
exportfs -v
客戶端:
查看NFS服務器提供的文件
showmount -e 192.168.30.10
創建掛載NFS的目錄
mkdir /mnt/nfs{1,2,3}
掛載nfsdir1,默認NFS v4版本掛載
mount 192.168.30.10:/data/nfsdir1 /mnt/nfs1
也可指定以其他NFS版本掛載
mount -o vers=3 192.168.30.10:/data/nfsdir2 /mnt/nfs2
NFS也是一種文件系統,可用mount命令查看已掛載的NFS文件系統
寫入/etc/fstab文件中實現永久掛載
nfs1目錄只讀掛載,無法創建文件
nfs2目錄可創建文件,文件所有者,所屬組映射為nfsnobody
nfs3目錄因為加了no_root_squash,root創建文件不影響到nfsnobody
五、實驗:實現NFS偽根(RHCE)
前期準備:
虛擬機兩臺
NFS服務器:CentOS 7.4 ? ? ?IP:192.168.30.10
客戶端:CentOS 7.5 ? ? IP:192.168.30.17
NFS服務器端:
mkdir /app/nfsdir1
mkdir /data/nfsdir2
mkdir /nfsroot/dir{1,2} -pv
掛載目錄
vim /etc/fstab
/app/nfsdir1? /nfsroot/dir1? none? bind?? 0?? 0
/data/nfsdir2? /nfsroot/dir2? none? bind?? 0?? 0
mount -a
NFS配置文件
vim /etc/exports.d/nfsroot.exports
/nfsroot?????? *(fsid=0,rw,crossmnt)
/nfsroot/dir1? *(rw)
/nfsroot/dir2? *(ro)
重啟NFS服務
exportfs –r
查看本機生效的NFS文件
exportfs –v
客戶端:
查看NFS服務器提供的文件
showmount -e 192.168.30.10
掛載偽根目錄
mount 192.168.30.10:/nfsroot /mnt
六、實驗:實現家目錄NFS自動絕對路徑、相對路徑掛載
前期準備:
虛擬機三臺
NFS服務器:CentOS 6.9?? IP:192.168.30.11
客戶端1:CentOS 7.4? IP:192.168.30.10
客戶端2:CentOS 7.5? IP:192.168.30.17
實驗預期:
客戶端1實現相對路徑掛載,客戶端2實現絕對路基掛載
NFS服務器:
開啟nfs服務
service rpcbind start
service nfs start?
建立用戶nfs1,nfs2
useradd -d /data/nfs/nfs1 -u 2001 nfs1
useradd -d /data/nfs/nfs2 -u 2002 nfs2
編寫測試文件
touch /data/nfs/nfs1/test1
touch /data/nfs/nfs2/test2
編寫nfs共享配置
vim /etc/exports
/data/? *(rw)
相對路徑掛載:
切換到客戶端1:
showmount -e 192.168.30.11
建立兩個用戶nfsuser1,nfsuser2
useradd -u 2001 nfsuser1
useradd -u 2002 nfsuser2
配置相對路徑自動掛載
vim /etc/auto.master
/home? /etc/home.autofs
vim /etc/home.autofs
nfsuser1? -fstype=nfs,vers=3 192.168.30.11:/data/nfs/nfs1
nfsuser2? -fstype=nfs,vers=3 192.168.30.11:/data/nfs/nfs2
重啟autofs服務
systemctl restart autofs
測試
su -nfsuser1
絕對路徑掛載:
切換到客戶端2:
useradd -u 2001 nfsuser1
useradd -u 2002 nfsuser2
配置絕對路徑自動掛載
vim /etc/auto.master
/- /etc/home.autofs
vim /etc/home.autofs
/home/nfsuser1? -fstype=nfs,vers=3 192.168.30.11:/data/nfs/nfs1
/home/nfsuser2? -fstype=nfs,vers=3 192.168.30.11:/data/nfs/nfs2
測試:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101894