NFS軟體介紹
軟體包:nfs-utils(包括伺服器和客戶端相關工具,CentOS8 最小化安裝時預設沒有安裝)
相關軟體包:rpcbind(必須),tcp_wrappers
Kernel支援:nfs.ko
埠:2049(nfsd), 其它埠由portmap(111)分配
NFS服務主要程序:
rpc.nfsd 最主要的NFS程序,管理客戶端是否可登入
rpc.mountd 掛載和解除安裝NFS檔案系統,包括許可權管理
rpc.lockd 非必要,管理檔案鎖,避免同時寫出錯
rpc.statd 非必要,檢查檔案一致性,可修復檔案
說明:CentOS 6 開始portmap程序由rpcbind代替
日誌:/var/lib/nfs/
NFS配置檔案:
/etc/exports
/etc/exports.d/*.exports
/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
非同步,資料變化後不立即寫磁碟,先寫入到緩衝區中,過一段時間再寫入磁碟,效能高,安全性低
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使用
[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 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 -
p
hostname
rpcinfo -s hostname
[root@centos8 ~]
# rpcinfo -p
program vers proto port service
1000004
tcp
111
portmapper
1000003
tcp
111
portmapper
1000002
tcp
111
portmapper
1000004
udp
111
portmapper
...
[root@centos8 ~]
# rpcinfo -s
program version(s) netid(s) service owner
1000002
,
3
,
4local
,udp,tcp,udp6,tcp6 portmapper superuser
1000241
tcp6,udp6,tcp,udp status
29
#檢視遠端主機
[root@centos7 ~]
# rpcinfo -p 172.31.0.8
program vers proto port service
1000004
tcp
111
portmapper
1000003
tcp
111
portmapper
...
exportfs
-v
#檢視本機所有NFS共享
-r
#重讀配置檔案,並共享目錄
-a
#輸出本機所有共享
-au
#停止本機所有共享
showmount
#檢視遠端主機的NFS共享
[
root@centos7 ~
]
# showmount -e hostname
[root@centos7 ~]
# showmount -e 172.31.0.8
Export list
for172.31
.
0
.
8
:
/data/
wordpress *
mount.nfs
fg#(預設)前臺掛載
bg#後臺掛載
hard
#(預設)持續請求
soft
#非持續請求
intr
#和hard配合,請求可中斷
rsize
#和wsize 一次讀和寫資料最大位元組數,rsize=32768
_netdev
#無網路服務時不掛載NFS資源
vers
#指定版本,客戶端centos8預設4.2 ,centos7預設4.1 centos6預設4.0
netdev,noexec 掛載選項
[
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
00
案例:步驟
#NFS伺服器建立使用者和相應的家目錄,將使用者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=
3172.31
.
0.8:/data/home/&
[root
@centos7
~]
#systemctl restart autofs
[root
@centos7
~]
# su - user1
Last
login:
Fri Jul
316: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
52403200398464520047361
%
/home/user
1
#注意: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=
3nfsserver:
/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
52403200398464520047361
%
/home/user
1
[user1
@centos6
~]
$
ls /home
long user1 wang