NFS存儲服務
定義
NFS即網(wǎng)絡文件系統(tǒng),是一種通過網(wǎng)絡方式共享文件系統(tǒng)的通用共享解決方案。
版本對比
Centos 7 版本默認使用版本v4,最小化安裝的應該沒有。
更多的版本對比可以參考官方網(wǎng)站的FAQ:http://nfs.sourceforge.net/
版本 | 特點 |
---|---|
NFSv2 | 被眾多的操作系統(tǒng)支持,兼容性會更好 |
NFSv3 | 更多的特點:更快的速度、更大的單個文件大小、更多便于排錯的錯誤及信息、對TCP/IP協(xié)議的支持… |
NFSv4 | 提供有狀態(tài)的連接,易被追蹤連接狀態(tài),增強安全性… |
NFS原理
-
服務端首先啟動RPC服務,開啟111端口
-
服務端再啟動NFS服務,并向RPC注冊端口信息(每次啟動NFS服務的端口不固定)
-
客戶端啟動RPC服務,向服務端的RPC服務請求服務端的NFS端口號(因為此時服務端的NFS端口號已經(jīng)在RPC服務中注冊了)
-
服務端的RPC反饋NFS端口號信息給客戶端
-
客戶端通過獲取的NFS端口號與服務端的NFS建立連接,進行數(shù)據(jù)的傳輸
注意事項:在Centos 7中rpcbind用來替換Centos老版本中的portmap提供RPC協(xié)議服務
NFS服務端的安裝
服務端需要安裝的服務:NFS和rpcbind
對應的安裝服務名稱: nfs-utils 和 rpcbind
# yum -y install nfs-utils rpcbind
啟動服務
# 先啟動rpcbind,再啟動NFS
systemctl start rpcbind
systemctl start nfs
# 加入開機自啟
systemctl enable rpcbind
systemctl enable nfs
NFS服務器的配置
通過讀取/etc/exports配置文件來獲取哪些客戶端可以訪問哪些NFS共享文件系統(tǒng):
- 空白行將被忽略
- 以#開頭的內(nèi)容為注釋
- 配置文件中可以通過\符號轉(zhuǎn)義換行
- 每個共享的文件系統(tǒng)需要獨立一行
- 客戶端主機列表需要使用空格隔開
- 支持通配符
一條完整的語法結(jié)構:(主機與選項之間沒有空格)
共享路徑 客戶端主機(選項)
共享路徑 客戶端主機1(選項1) 客戶端主機2(選項2)
NFS選項的屬性表:
NFS選項 | 描述 | NFS選項 | 描述 |
---|---|---|---|
ro | 只讀共享 | rw | 可讀可寫共享 |
sync | 同步寫操作 | async | 異步寫操作 |
wdelay | 延遲寫操作 | root_squash | 屏蔽遠程root權限 |
no_root_squash | 不屏蔽遠程root權限 | all_squash | 屏蔽所有的遠程用戶權限 |
# 將/home/test配置成NFS共享文件
# 語法結(jié)構
/home/test *(rw,no_root_squash,no_all_squash,anonuid=0,anongid=0,sync)
# 查看共享的文件夾
[root@vm01 test]# showmount -e 192.168.137.2
Export list for 192.168.137.2:
/home/test *
客戶端訪問NFS
客戶端安裝RPC服務:yum -y install nfs-utils
啟動服務:systemctl start rpcbind
# 可通過showmount命令查看服務器共享文件夾信息
[root@vm02 ~]# showmount -e 192.168.137.2
Export list for 192.168.137.2:
/home/test *
[root@vm02 ~]#
客戶端手動掛載訪問方式:mount 服務端ip:共享路徑 本機路徑
# 將上述的NFS掛載到其他服務器的/home/test下
[root@vm02 ~]# mkdir /home/test
[root@vm02 ~]# mount 192.168.137.2:/home/test /home/test
[root@vm02 ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
devtmpfs 908M 0 908M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.7M 911M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 1.5G 17G 9% /
/dev/sda1 297M 133M 164M 45% /boot
tmpfs 184M 0 184M 0% /run/user/0
192.168.137.2:/home/test 18G 2.6G 16G 15% /home/test # 掛載成功
[root@vm02 ~]#
NFS高級設置
-
NFS服務相關進程說明
nfs:NFS服務器的主進程
nfslock:為NFS文件系統(tǒng)提供鎖機制
rpcbind:提供地址與端口注冊服務
rpc.mountd:處理NFSv2與NFSv3的mount請求
rpc.nfsd:動態(tài)處理客戶端請求
lockd:內(nèi)核線程,服務端與客戶端運行,用來實現(xiàn)NLM網(wǎng)絡協(xié)議,允許NFSv2與NFSv3客戶端對文件加鎖
rpc.statd:網(wǎng)絡狀態(tài)監(jiān)控協(xié)議
rpc.rquotad:提供用戶配額信息
rpc.idmapd:提供NFSv4名稱映射,/etc/idmapd.conf必須配置
-
NFS客戶端的高級設置
客戶端手動掛載NFS訪問格式:
mount -t nfs -o 選項 主機地址:共享目錄 本地掛載目錄
選項可多個同時使用,彼此使用逗號分隔
掛載選項的屬性:
掛載選項 | 說明 |
---|---|
-t | 掛載的設備上的文件系統(tǒng)類型 |
-r | 只讀掛載 |
-w | 讀寫掛載 |
-n | 不更新/etc/mtab |
-a | 自動掛載所有支持自動掛載的設備:定義在了/etc/fstab文件中,且掛載選項中有“自動掛載”功能 |
-L | 以卷標指定掛載設備 |
-U | 以UUID指定要掛載的設備 |
-B | 綁定目錄到另一個目錄上 |
-o | 掛載文件系統(tǒng)的選項 |
async:異步模式; | |
sync:同步模式; | |
atime/noatime:包含目錄和文件; | |
diratime/nodiratime:目錄的訪問時間戳 | |
auto/noauto:是否支持自動掛載 | |
exec/noexec:是否支持將文件系統(tǒng)上應用程序運行為進程 | |
dev/nodev:是否支持在此文件系統(tǒng)上使用設備文件; | |
suid/nosuid是否支持在此文件系統(tǒng)上使用特殊權限 | |
remount:重新掛載 | |
ro:只讀 | |
rw:讀寫 | |
user/nouser:是否允許普通用戶掛載此設備 | |
acl:啟用此文件系統(tǒng)上的acl功能 |
mount -t nfs -o noac,nfsvers=4,_netdev 192.168.137.2:/home/test /home/test
NFS命令工具
exportfs
# 重新讀取/etc/exports文件
exportfs -r
# 顯示詳細信息
exportfs -v
nfsstat
查看NFS共享狀態(tài)
# 顯示NFS服務端狀態(tài)
[root@vm01 ~]# nfsstat -s
Server rpc stats:
calls badcalls badclnt badauth xdrcall
29 0 0 0 0
Server nfs v4:
null compound
1 3% 28 96%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close commit
0 0% 0 0% 0 0% 2 2% 0 0% 0 0%
create delegpurge delegreturn getattr getfh link
0 0% 0 0% 0 0% 23 26% 4 4% 0 0%
lock lockt locku lookup lookup_root nverify
0 0% 0 0% 0 0% 3 3% 0 0% 0 0%
open openattr open_conf open_dgrd putfh putpubfh
0 0% 0 0% 0 0% 0 0% 22 25% 0 0%
putrootfh read readdir readlink remove rename
2 2% 0 0% 0 0% 0 0% 0 0% 0 0%
renew restorefh savefh secinfo setattr setcltid
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
setcltidconf verify write rellockowner bc_ctl bind_conn
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo
1 1% 1 1% 0 0% 0 0% 0 0% 0 0%
getdevlist layoutcommit layoutget layoutreturn secinfononam sequence
0 0% 0 0% 0 0% 0 0% 1 1% 26 30%
set_ssv test_stateid want_deleg destroy_clid reclaim_comp
0 0% 0 0% 0 0% 0 0% 1 1%
# 僅顯示客戶端狀態(tài)
[root@vm02 ~]# nfsstat -c # 客戶端執(zhí)行
Client rpc stats:
calls retrans authrefrsh
31 0 31
Client nfs v4:
null read write commit open open_conf
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
open_noat open_dgrd close setattr fsinfo renew
0 0% 0 0% 0 0% 0 0% 3 10% 0 0%
setclntid confirm lock lockt locku access
0 0% 0 0% 0 0% 0 0% 0 0% 2 6%
getattr lookup lookup_root remove rename link
6 20% 3 10% 1 3% 0 0% 0 0% 0 0%
symlink create pathconf statfs readlink readdir
0 0% 0 0% 2 6% 1 3% 0 0% 0 0%
server_caps delegreturn getacl setacl fs_locations rel_lkowner
5 16% 0 0% 0 0% 0 0% 0 0% 0 0%
secinfo exchange_id create_ses destroy_ses sequence get_lease_t
0 0% 0 0% 1 3% 1 3% 0 0% 3 10%
reclaim_comp layoutget getdevinfo layoutcommit layoutreturn getdevlist
0 0% 1 3% 0 0% 0 0% 0 0% 0 0%
(null)
1 3%
# 顯示掛載信息
[root@vm02 ~]# nfsstat -m
/home/test from 192.168.137.2:/home/test
Flags: rw,sync,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.137.3,local_lock=none,addr=192.168.137.2
# 以列表形式顯示信息
[root@vm02 ~]# nfsstat -l
nfs v4 client total: 31
------------- ------------- --------
nfs v4 client fsinfo: 3
nfs v4 client access: 2
nfs v4 client getattr: 6
nfs v4 client lookup: 3
nfs v4 client lookup_root: 1
nfs v4 client pathconf: 2
nfs v4 client statfs: 1
nfs v4 client server_caps: 5
nfs v4 client create_ses: 1
nfs v4 client destroy_ses: 1
nfs v4 client get_lease_t: 4
nfs v4 client layoutget: 1
nfs v4 client (null): 1
# 都可以與-l組合使用,便于查看信息
rpcinfo
# 生成RPC信息報表
# 顯示指定主機rpcbind操作信息表
[root@vm01 ~]# rpcinfo -m
PORTMAP (version 2) statistics
NULL SET UNSET GETPORT DUMP CALLIT
0 0/0 0/0 1/1 0 0/0
PMAP_GETPORT call statistics
prog vers netid success failure
mountd 3 tcp 1 0
RPCBIND (version 3) statistics
NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U
0 0/0 0/0 0/0 0 0/0 0 0 0
RPCBIND (version 4) statistics
NULL SET UNSET GETADDR DUMP CALLIT TIME U2T T2U
0 0/0 0/0 0/0 0 0/0 0 0 0
VERADDR INDRECT GETLIST GETSTAT
0 0 0 1
# 顯示指定主機RPC注冊信息
[root@vm01 ~]# 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
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100024 1 udp 44103 status
100024 1 tcp 45007 status
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 47704 nlockmgr
100021 3 udp 47704 nlockmgr
100021 4 udp 47704 nlockmgr
100021 1 tcp 35644 nlockmgr
100021 3 tcp 35644 nlockmgr
100021 4 tcp 35644 nlockmgr
# 顯示指定主機所有注冊RPC的信息程序,不指定主機時默認顯示本機信息
[root@vm01 ~]# rpcinfo -s
program version(s) netid(s) service owner
100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser
100005 3,2,1 tcp6,udp6,tcp,udp mountd superuser
100024 1 tcp6,udp6,tcp,udp status 29
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
配置固定的端口號
NFS向rpcbind動態(tài)注冊端口信息,端口信息是動態(tài)隨機生成的,如果配置固定的端口號有助于我們進行防火墻規(guī)則的設置文章來源:http://www.zghlxwxcb.cn/news/detail-744206.html
通過配置文件進行設置:/etc/sysconfig/nfs文章來源地址http://www.zghlxwxcb.cn/news/detail-744206.html
- MOUNTD_PORT:設置mountd程序端口號
- LOCKD_TCPPORT:設置TCP的lockd程序端口號
- LOCKD_UDPPORT:設置UDP的lockd程序端口號
- STATD_PORT:設置rpc.statd程序端口號
- NFS端口:TCP/UDP 2049
- rpcbind端口:TCP/UDP 111
到了這里,關于網(wǎng)絡文件系統(tǒng) | NFS 服務的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!