探索NFS服務:打造高效穩定的檔案共享系統

NFS:Network File System 網路檔案系統,基於核心的檔案系統。Sun 公司開發,透過使用 NFS,用

戶和程式可以像訪問本地檔案一樣訪問遠端系統上的檔案,基於RPC(Remote Procedure Call

Protocol 遠端過程呼叫)實現

RPC採用C/S模式,客戶機請求程式呼叫程序傳送一個有程序引數的呼叫資訊到服務程序,然後等待應答

資訊。在伺服器端,程序保持睡眠狀態直到呼叫資訊到達為止。當一個呼叫資訊到達,伺服器獲得程序

引數,計算結果,傳送答覆資訊,然後等待下一個呼叫資訊,最後,客戶端呼叫程序接收答覆資訊,獲

得程序結果,然後呼叫執行繼續進行
NFS優勢:節省本地儲存空間,將常用的資料,如:/home目錄,存放在NFS伺服器上且可以透過網路訪

問,本地終端將可減少自身儲存空間的使用

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

NFS共享配置檔案格式

/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使用

範例:NFS配置示例

[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 工具可以檢視RPC相關資訊
檢視註冊在指定主機的RPC程式

rpcinfo -

p

hostname

檢視RPC註冊程式

rpcinfo -s hostname

範例:rpcinfo

[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

exportfs:可用於管理NFS匯出的檔案系統
常見選項:

-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

客戶端NFS掛載

NFS相關的掛載選項:man 5 nfs
fg#(預設)前臺掛載
bg#後臺掛載

hard

#(預設)持續請求

soft

#非持續請求

intr

#和hard配合,請求可中斷

rsize

#和wsize 一次讀和寫資料最大位元組數,rsize=32768

_netdev

#無網路服務時不掛載NFS資源

vers

#指定版本,客戶端centos8預設4.2 ,centos7預設4.1 centos6預設4.0

提示:基於安全考慮,建議使用nosuid,

netdev,noexec 掛載選項

範例:臨時掛載NFS共享

[

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

連結:https://www.cnblogs.com/xuanlv-0413/p/14853979.html
(版權歸原作者所有,侵刪)


相關文章