1. 程式人生 > >網路檔案共享-nfs服務

網路檔案共享-nfs服務

NFS服務簡介:

NFS:Network File System 網路檔案系統
軟體包:nfs-utils
Kernel支援:nfs.ko
使用updatedb來更新locate資料庫
[[email protected]:45:56upload]#locate nfs.ko
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/drivers/xen/xenfs/xenfs.ko.xz
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/fs/nfs/nfs.ko.xz

NFS優勢:
節省本地儲存空間
將常用的資料,如home目錄
存放在NFS伺服器上且可以通過網路訪問
本地終端將可減少自身儲存空間的使用

NFS服務主要程序: 
rpc.nfsd 最主要的NFS程序,管理客戶端是否可登入 
rpc.mountd 掛載和解除安裝NFS檔案系統,包括許可權管理 
rpc.lockd 非必要,管理檔案鎖,避免同時寫出錯 
rpc.statd 非必要,檢查檔案一致性,可修復檔案

啟動服務:
centos7:systemctl start nfs.server
centos6:service nfs start

實現方式:

安裝軟體包:
yum install -y nfs-utils

配置檔案:
/etc/exports --初始為空
/etc/exports.d/*.exports
日誌:
/var/lib/nfs/

監聽埠:
2049(nfsd) ---tcp協議

檢視埠號命令:檢視和nfs命令相關的埠號
rpcinfo -p 
[[email protected]:29:14~]#rpcinfo -p 
   program vers proto   port  service
    100000    4   tcp    111  portmapper


其它埠由portmap(111)分配--依賴於這個服務!

rpcbind服務 :埠監聽111
當nfs重啟時,會把變動埠註冊到rpcbind服務中!

centos7中當rpcbind服務關閉時,
啟動nfs服務,rpcbind一樣會被啟動!
centos6中不會主動啟用!


配置防火牆,開放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個埠

CentOS6開始portmap程序由rpcbind代替

簡單實現:

共享檔案/data/nfs1目錄:

vim /etc/exports

/data/nfs1 *
*:所有主機!

並且在/data/nfs1中建立測試檔案

生效方式:
systemctl restart nfs-server

exportfs -r 

exportfs -v --檢視服務掛載資訊
預設的共享選項:
/data/nfs1    	<world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

檢視主機nfs共享資源:
showmount -e  主機IP
具體使用:
showmount -e 172.20.23.32

掛載方式:在非nfs伺服器主機上
要建立一個目錄!
mount 172.20.23.32:/data/nfs1 /mnt/test/

共享選項:
預設選項:(ro,sync,root_squash,no_all_squash)
ro,rw 只讀和讀寫
具體應用:
需要對檔案或目錄更改授權,讓nfsnobody使用者對其有寫許可權!

async 非同步,資料變化後不立即寫磁碟,效能高

sync(1.0.0後為預設)同步,資料在請求時立即寫入共享

no_all_squash(預設)保留共享檔案的UID和GID 
--所有的使用者不壓榨,只要伺服器中有和客戶端使用者相同id的使用者,客戶端訪問時,就會擁有和伺服器端使用者相同的權利

all_squash 所有遠端使用者(包括root)都變成nfsnobody
---有這一項就全部壓榨!no_root_squash就失效了!

root_squash(預設)遠端root對映為nfsnobody,UID為65534早期版本 是4294967294(nfsnobody)

no_root_squash 遠端root對映成root使用者
具體用法:
/data/nfs2   172.20.23.50(rw,no_root_squash)

anonuid和anongid 指明匿名使用者對映為特定使用者UID和組GID
而非 nfsnobody,可配合all_squash使用
具體用法:
anonuid=2000
anongid=2000

共享案例2:
/data/nfs2   172.20.23.50(rw,no_root_squash)
設定共享主機和讀寫掛載及遠端主機不壓榨

支援針對不同主機設定許可權:
具體應用:多個主機網段之間用空格隔開
/data/nfs2   172.20.0.0/16(rw,no_root_squash) 172.20.23.20(ro)

地址格式:
IP networks:兩種掩碼格式均支援 
172.18.0.0/255.255.0.0 
172.18.0.0/16

其它相關工具:

rpcinfo:rpc監聽111埠[tcp/udp]
rpcinfo -p hostname
rpcinfo –s hostname 檢視RPC註冊程式
[[email protected]:39:35data]#rpcinfo -s 172.20.23.32
   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
    100005  3,2,1     tcp6,udp6,tcp,udp                mountd      superuser
    100003  4,3       udp6,tcp6,udp,tcp                nfs         superuser
    100227  3         udp6,tcp6,udp,tcp                nfs_acl     superuser
    100021  4,3,1     tcp6,udp6,tcp,udp                nlockmgr    superuser
exportfs
–v 檢視本機所有NFS共享
–r 重讀配置檔案,並共享目錄
–a 輸出本機所有共享
–au 停止本機所有共享
-u 停止本機指定共享

NFS相關的掛載選項: 
fg(預設)前臺掛載
bg後臺掛載 
hard(預設)持續請求,soft 非持續請求 
intr和hard配合,請求可中斷 
rsize和wsize 一次讀和寫資料最大位元組數,rsize=32768 
_netdev 無網路不掛
基於安全考慮,建議使用nosuid,nodev,noexec掛載選項

自動掛載的實現:

自動掛載:
可使用autofs按需要掛載NFS共享,在空閒時自動解除安裝
由autofs包提供 
系統管理器指定由/etc/auto.master自動掛載器守護程序控制的掛載點
自動掛載監視器訪問這些目錄並按要求掛載檔案系統
檔案系統在失活的指定間隔5分鐘後會自動解除安裝
為所有匯出到網路中的NFS啟用特殊匹配 -host 至“browse
支援含萬用字元的目錄名
*     server:/export/&

相對路徑寫法:
主配置檔案:
/etc/auto.master
定義dirname
具體用法:
/mydata  /etc/auto.fs

/etc/auto.fs
定義basename
具體用法:
data      -fstype=nfs,rw,nosuid,nodev	172.20.23.32:/data/nfs1

絕對路徑法:
vim /etc/auto.master
/- /etc/data.fs

vim /etc/data.fs
/home/yl    -fstype=nfs,rw,nosuid,nodev	172.20.23.32:/data/nfs1


nfs預設掛載版本時4.1如果要掛載成3版本需要新增選項
例如:
mount -o vers=3 172.20.23.33:/data/ /mnt