第一步:NFS系統簡單概述
網絡文件系統(NFS)也稱為客戶端/服務器文件系統,是一種流行的跨平台分布式文件系統協議,用於通過網絡導出本地文件系統,以便客戶端可以通過網絡與其他用戶共享目錄和文件並進行交互與它們一樣,好像它們已安裝在本地。
在CentOS / RHEL 8中,受支持的NFS版本是NFSv3和NFSv4,默認的NFS版本是4.2,其特征是支持訪問控制列表(ACL),服務器端副本,稀疏文件,空間保留,標記為NFS,布局增強和多得多。
在本文中,您將學習如何在CentOS / RHEL 8 Linux發行版上安裝和配置NFS服務器和NFS客戶端。
第二步:先決條件
- CentOS 8安裝指南
- 主機IP配置完成
第三步:測試環境
KVM主機 | NFS客戶端 | |
---|---|---|
主機名 | nfsserver | nfsclient |
IP信息 | 192.168.6.58 | 192.168.6.149 |
第四步:CentOS 8上安裝NFS服務器
1.首先在NFS服務器上安裝所需的軟件包。軟件包是nfs-utils,它為內核NFS服務器和相關工具(例如包含showmount程序)提供了守護程序。
運行以下命令以將軟件包安裝在NFS服務器上(如果以非root用戶身份管理系統,請使用sudo)。
# dnf install nfs-utils -y
2.安裝完成后,啟動nfs-server服務,使其能夠在系統引導時自動啟動,然后使用systemctl命令驗證其狀態。
# systemctl start nfs-server.service
# systemctl enable nfs-server.service
# systemctl status nfs-server.service
systemctl restart nfs-server.service
請注意,運行NFS服務器或裝入NFS共享所需的其他服務(例如nfsd,nfs-idmapd,rpcbind,rpc.mountd,lockd,rpc.statd,rpc.rquotad和rpc.idmapd)將自動啟動。
NFS服務器的配置文件為:
-
/etc/nfs.conf – NFS守護程序和工具的主要配置文件。
-
/etc/nfsmount.conf-NFS安裝配置文件。
3.接下來,創建要在NFS服務器上導出或共享的文件系統。本文中,我們將創建四個文件系統,其中三個部門的三個部門的工作人員使用三個文件系統:運維,網絡和數據庫以及共享文件,而另一個則用於root用戶備份。
[root@nfsserver mnt]# mkdir -p /mnt/nfs_shares/{system,network,dba}
[root@nfsserver mnt]# mkdir -p /mnt/backups
[root@nfsserver mnt]# ls -l /mnt/nfs_shares/
total 0
drwxr-xr-x. 2 root root 6 Dec 6 21:32 dba
drwxr-xr-x. 2 root root 6 Dec 6 21:32 network
drwxr-xr-x. 2 root root 6 Dec 6 21:32 system
[root@nfsserver mnt]# ls -l /mnt/
total 0
drwxr-xr-x. 2 root root 6 Dec 6 21:32 backups
drwxr-xr-x. 5 root root 46 Dec 6 21:32 nfs_shares
[root@nfsserver mnt]#
4.然后將以上文件系統導出到NFS服務器/etc/exports配置文件中,確定NFS客戶端可以訪問到本地物理文件系統。
[root@nfsserver mnt]# vi /etc/exports
/mnt/nfs_shares /system 192.168.6.0/24(rw,sync)
/mnt/nfs_shares /network 192.168.6.0/24(rw,sync)
/mnt/nfs_shares /dba 192.168.6.0/24(rw,sync)
/mnt/backups 192.168.6.149/24(rw,sync,no_all_squash,root_squash)
以下是一些導出選項
- rw –允許對文件系統進行讀寫訪問。
- sync –告訴NFS服務器在請求時寫入操作(將信息寫入磁盤)(默認情況下適用)。
- all_squash –將客戶端請求中的所有UID和GID映射到匿名用戶。
- no_all_squash –用於將客戶端請求中的所有UID和GID映射到NFS服務器上的相同UID和GID。
- root_squash –將來自客戶端的root用戶或UID / GID 0的請求映射到匿名UID / GID。
5.要導出上述文件系統,請運行帶有以下標志的exportfs命令:
-a
導出或取消導出所有目錄,-r
意味着重新導出所有目錄,
將/ var/lib/nfs/etab與/etc/exports和/etc/ exports下的文件同步。 d和-v啟用詳細輸出。
[root@nfsserver mnt]# exportfs -arv
導出NFS共享
6.要顯示當前的導出列表,請運行以下命令。請注意,導出表還應用了一些未明確定義的默認導出選項,如以下屏幕截圖所示。
[root@nfsserver mnt]# exportfs -s
列出NFS共享
7.接下來,如果您正在運行Firewalld服務,則需要允許通過防火牆的流量通過必要的NFS服務(mountd,nfs,rpc-bind),然后重新加載防火牆規則以應用更改,如下所示。
[root@nfsserver mnt]# firewall-cmd --permanent --add-service=nfs
[root@nfsserver mnt]# firewall-cmd --permanent --add-service=rpc-bind
[root@nfsserver mnt]# firewall-cmd --permanent --add-service=mountd
[root@nfsserver mnt]# firewall-cmd --reload
[root@nfsserver mnt]# firewall-cmd --list-all
[root@nfsserver mnt]# firewall-cmd --state #查看狀態
第五步:客戶端系統上設置NFS客戶端
8.在客戶端節點上,安裝必要的軟件包以訪問客戶端系統上的NFS共享。運行命令:
[root@nfsclient ~]# dnf -y install nfs-utils nfs4-acl-tools
9.然后運行showmount命令以顯示NFS服務器的安裝信息。該命令在客戶端上輸出導出的文件系統,如屏幕截圖所示。
[root@nfsclient ~]# showmount -e 192.168.6.58
10.接下來,創建用於掛載遠程NFS文件系統的本地文件系統/目錄,並將其掛載為ntf文件系統。
[root@nfsclient ~]#mkdir -p /mnt/backups
[root@nfsclient ~]#mount -t nfs 192.168.6.58:/mnt/backups /mnt/backups
11.然后通過運行mount命令和filter nfs mounts確認已安裝遠程文件系統。
[root@nfsclient ~]# mount | grep nfs
12.要使掛載即使在系統重新引導后也能夠持久進行,請運行以下命令在/ etc / fstab中輸入相應的條目。
# echo "192.168.6.58:/mnt/backups /mnt/backups nfs defaults 0 0">>/etc/fstab
# cat /etc/fstab
13. 通過在服務器上創建文件來測試NFS設置是否工作正常,並檢查是否可以在客戶端中看到該文件。
# touch /mnt/backups/file_created_on_server.text [On NFS Server]
# ls -l /mnt/backups/file_created_on_server.text [On NFS client]
[1].NFS服務端創建文件
[2].NFS 客戶端查看文件
然后進行相反的操作,
# touch /mnt/backups/file_created_on_client.text [On NFS Client]
# ls -l /mnt/backups/file_created_on_client.text [On NFS Server]
[3].NFS客戶端創建文件
[root@nfsclient backups]# touch /mnt/backups/file_created_on_client.text
[root@nfsclient backups]# echo "client created file" > /mnt/backups/file_created_on_client.text
[root@nfsclient backups]#
提示:無權限,查找可能是因為服務端沒有讀寫權限
修復方法:給NFS共享的目錄添加權限即可, chmod go+w /mnt/backups/ 重啟NFS和rpcbind服務后生效
[4].NFS服務端查看創建文件
[root@nfsserver mnt]# ls /mnt/backups/file_created_on_client.text
/mnt/backups/file_created_on_client.text
[root@nfsserver mnt]# cat /mnt/backups/file_created_on_client.text
client created file
14.在客戶端上卸載遠程文件系統。
# umount /mnt/backups
請注意,如下面的屏幕快照所示,如果要在遠程文件系統中進行操作,則無法卸載該文件系統。
選項 | 描述 |
---|---|
w | 允許在NFS卷上進行讀寫請求。 |
RO | 僅允許讀取NFS卷上的請求。 |
同步 | 僅在將更改提交到穩定存儲后才回復請求。(默認) |
異步的 | 此選項允許NFS服務器違反NFS協議並在對該請求進行的任何更改提交到穩定存儲之前答復該請求。 |
安全 | 此選項要求請求源自小於IPPORT_RESERVED(1024)的Internet端口。(默認) |
不安全的 | 此選項接受所有端口。 |
wdelay | 如果它懷疑另一個相關的寫請求可能正在進行中或可能很快到達,則稍微延遲向磁盤提交寫請求。(默認) |
no_wdelay | 如果還設置了異步,則此選項無效。如果NFS服務器懷疑另一個相關的寫請求可能正在進行中或可能很快到達,則通常會稍稍延遲向磁盤提交寫請求。就可以將多個寫入請求提交到磁盤,從而提高性能。如果NFS服務器主要接收小的無關請求,則此行為實際上可能會降低性能,因此no_wdelay可用於將其關閉。 |
subtree_check | 此選項啟用子樹檢查。(默認) |
no_subtree_check | 此選項禁用子樹檢查,這對安全性有輕微的影響,但在某些情況下可以提高可靠性。 |
root_squash | 將請求從uid / gid 0映射到匿名uid / gid。請注意,這不適用於可能同樣敏感的任何其他uid或gid,例如用戶bin或組人員。 |
no_root_squash | 關閉根擠壓。此選項主要對無磁盤客戶端有用。 |
all_squash | 將所有uid和gid映射到匿名用戶。對於NFS導出的公共FTP目錄,新聞假脫機目錄等有用。 |
no_all_squash | 關閉所有壁球。(默認) |
anonuid = UID | 這些選項顯式設置匿名帳戶的uid和gid。此選項主要對PC / NFS客戶端有用,在PC / NFS客戶端中,您可能希望所有請求看起來都是來自一個用戶的。作為示例,請考慮以下示例部分中/ home / joe的導出條目,該條目將所有請求映射到uid 150。 |
anongid = GID | 閱讀以上內容(anonuid = UID) |