NFS網絡文件系統

title nfs.jpg

本章內容

NFS網絡文件系統介紹

NFS配置文件和配置示例

NFS工具

NFS掛載及aotufs自動掛載

實驗:實現NFS服務

實驗:實現NFS僞根

實驗:利用NFS服務實現家目錄的自動掛載

 

NFS服務

NFSNetwork File System 網絡文件系統,基於內核的文件系統。Sun公司開發,通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件,基於RPCRemote Procedure Call Protocol遠程過程調用)實現

RPC採用C/S模式。客戶機請求程序調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。

NFS優勢:節省本地存儲空間,將常用的數據如:home目錄,存放在一臺NFS服務器上且可以通過網絡訪問,那麼本地終端將可以減少自身存儲空間的使用

 

NFS文件系統

 NFS文件系統.png 

NFS各個版本的對比

NFS各個版本的對比.png  

NFS服務介紹

軟件包:nfs-utils

Kernel支持:nfs.ko

端口:2049(nfsd), 其它端口由portmap(111)分配

配置文件:/etc/exports,/etc/exports.d/*.exports

CentOS7不支持同一目錄同時用nfssamba共享,因爲使用鎖機制不同

相關軟件包:rpcbind(必須),tcp_wrappers

CentOS6開始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

•防火牆除開放上述端口,還需開放TCPUDP11120494個端口

 

NFS配置文件

導出的文件系統的格式:

/dir 主機1(opt1,opt2) 主機2(opt1,opt2)...

#開始爲註釋

主機格式:

•單個主機:ipv4ipv6FQDN

IP networks:兩種掩碼格式均支持

172.18.0.0/255.255.0.0

172.18.0.0/16

wildcards:主機名通配,例如*.wind.comIP不可以

netgroupsNIS域的主機組,@group_name

anonymous:表示使用*通配所有客戶端

 

遠程的root用戶映射爲本機的nfsnobody用戶,遠程的普通用戶映射爲本機的uid相同的用戶

 

每個條目指定目錄導出到的哪些主機,及相關的權限和選項

•默認選項:(ro,sync,root_squash,no_all_squash)

ro,rw 只讀和讀寫

async 異步,數據變化後不立即寫磁盤,性能高

sync1.0.0後爲默認)同步,數據在請求時立即寫入共享

no_all_squash (默認)保留共享文件的UIDGID

all_squash 所有遠程用戶(包括root)都變成nfsnobody,會覆蓋no_root_squash

root_squash (默認)遠程root映射爲nfsnobody,UID65534,早期版本是4294967294 (nfsnobody)

no_root_squash 遠程root映射成root用戶

anonuidanongid 指明匿名用戶映射爲特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用

如:anonuid=1000,anongid=1001

 

例:Windows如果想用NFS的話,點控制面板-->程序和功能-->打開或關閉Windows功能-->NFS客戶端

cmd>showmount -e 192.168.30.75

mount 192.168.30.75:/data/nfsdir1 Y:

umount Y: 取消掛載

 

NFS配置示例

/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 停止本機所有共享

showmount -e hostname

mount.nfs 掛載工具

NFSv4支持通過掛載NFS服務器的共享“根”,從而瀏覽NFS服務器上的共享目錄列表(即僞根,爲了隱藏文件目錄)

mount nfsserver:/ /mnt/nfs

 

客戶端NFS掛載

基於安全考慮,建議使用nosuid,nodev,noexec掛載選項

NFS相關的掛載選項:

fg(默認)前臺掛載,bg後臺掛載

hard(默認)持續請求,soft 非持續請求

intr hard配合,請求可中斷

rsizewsize 一次讀和寫數據最大字節數,rsize=32768

_netdev 無網絡不掛載,可放在/etc/fstabdefaults位置

示例:

mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/

開機掛載:/etc/fstab 172.16.0.1:/public /mnt/nfs nfs defaults 0 0

 

自動掛載

可使用autofs按需要掛載NFS共享,在空閒時自動卸載

autofs包提供

系統管理器指定由/etc/auto.master自動掛載器守護進程控制的掛載點

自動掛載監視器訪問這些目錄並按要求掛載文件系統

文件系統在失活的指定間隔5分鐘後會自動卸載

爲所有導出到網絡中的NFS啓用特殊匹配 -host 至“browse

參看幫助:man 5 autofs

支持含通配符的目錄名

* server:/export/&  &代表*的內容,似乎只適用於相對路徑

 

直接匹配

直接匹配包括絕對路徑名稱

不會影響本地目錄結構

示例:

/etc/auto.master:

/- /etc/auto.direct

/etc/auto.direct:

/foo server1:/export/foo

/user/local/ server1:/usr/local

  

實驗:實現NFS服務

配置NFS服務器

systemctl start nfs-server

systemctl enable nfs-server

mkdir /nfsroot/dir2

chown nfsnobody /nfsroot/dir2

vi /etc/exports

/nfsroot/dir2 desktopX(rw)

exportfs -r

配置NFS客戶端

mkdir /mnt/nfsdir2

mount serverX:/nfsroot/dir2 /mnt/nfsdir2

vim /etc/fstab

nfsserver:/nfsroot/dir2 /mnt/nfsroot nfs defaults 0 0

mount -a

NFS 實現NFS服務.jpg 

實驗:實現NFS僞根

配置NFS服務器

vim /etc/fstab

       /data/nfsdir2 /nfsroot/dir2 none bind 0 0

       /app/nfsdir3 /nfsroot/dir3 none bind 0 0

mount -a

vim /etc/exports.d/rootfs.exports

       /nfsroot *(fsid=0,crossmnt)                                                     

       /nfsroot/dir2 *(rw)

       /nfsroot/dir3 *(ro)

配置NFS客戶端

mount nfsserver:/ /mnt/nfs

vi /etc/fstab

       nfsserver:/ /mnt/ nfs4 ro 0 0

NFS實現僞根.jpg 

實驗:利用NFS服務實現家目錄的自動掛載

三臺主機

一臺nfs server

一臺絕對路徑

一臺相對路徑

 

1nfs server

# 本機IP192.168.30.3

useradd -d /data/nfs1 -u 2001 nfs1

useradd -d /data/nfs2 -u 2002 nfs2

setfacl -m u:nfsnobody:rwx /data/nfs1

setfacl -m u:nfsnobody:rwx /data/nfs2

vim /etc/exports

       /data/nfs1   *(rw)

       /data/nfs2   *(rw)

exportfs -r

exportfs -v

 

2、相對路徑的機子  #會影響父目錄

yum -y install autofs

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.3:/data/nfs1

       nfsuser2  -fstype=nfs,vers=3  192.168.30.3:/data/nfs2

systemctl restart autofs

cd /home/nfsuser1

cd /home/nfsuser2

NFS autofs實驗 01 相對路徑掛載結果.jpg 

3、絕對路徑的機子  #不會影響父目錄

yum -y install autofs

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.3:/data/nfs1

       /home/nfsuser2  -fstype=nfs,vers=3  192.168.30.3:/data/nfs2

systemctl restart autofs

cd /home/nfsuser1

cd /home/nfsuser2

NFS autofs實驗 02 絕對路徑掛載結果.jpg 

touch /home/nfsuser1/root_file

su - nfsuser1

touch /home/nfsuser1/nfsuser1_file

切換到nfs server上,可以看到在對應的/data/nfs1/目錄下,root_file的所有者和所屬組被壓榨成nfsnobody,而nfsuser1_file的所有者所屬組爲nfs1,因nfsuser1nfs1uidgid相同

NFS autofs實驗 03 root和nfs1用戶分別創建文件結果.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章