NFS 網路檔案系統,透過網路標準協定,在 Unix、 Linux 上進行檔案分享,在大多數的 Linux 都支援使用。
1. NFS 伺服器
RHEL 8 系列後預設使用 NTF 4 及支援 NTF 3 版本, NTF 4 最大改變就是取消 RPC 傳送隨機存取 port ( Udp ),改用指定的 2049 Tcp port。
1.1. 安裝 NFS 套件
1
2
3
4
5
6
7
8
|
[root@serverc ~]# yum install nfs-utils
Dependencies resolved.
=============================================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================================
Installing:
nfs-utils x86_64 1:2.3.3-46.el8 BaseOS 499 k
...
|
1.2. 創建分享目錄及檔案
1
2
3
|
[root@serverc ~]# mkdir -v /share
mkdir: created directory '/share'
[root@serverc ~]# echo "serverc nfs" > /share/README.txt
|
1.3. 編輯設定檔、重啟 nfs 伺服器及開放防火牆
伺服器分享檔案很容易,只要選擇要分享的目錄並寫入 /etc/export 即可,另可以進階設定哪些IP或是網段及哪些存取權限。
1
2
3
4
5
6
7
8
9
10
11
|
# 創建分享目錄的設定
[root@serverc ~]# cat >> /etc/exports.d/share.exports << EOL
> /share *(rw,sync)
> EOL
# 重啟 nfs 服務
[root@serverc ~]# systemctl restart nfs-server.service
# 開放防火牆 nfs 服務
[root@serverc ~]# firewall-cmd --add-service=nfs --permanent
success
[root@serverc ~]# firewall-cmd --reload
success
|
/etc/export.d/
share.exports 可取任意名稱,必須以 .exports 檔名結尾
2. Client 端
Client 也需要安裝 nfs-utils套件,但是不用啟動 nfs-server 服務。
2.1. 使用 monut 測試能否掛載
1
2
3
4
5
6
|
[root@servera ~]# mount -t nfs serverc:/share /mnt
[root@servera ~]# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
serverc:/share 8.0G 1.9G 6.2G 23% /mnt
[root@servera ~]# cat /mnt/README.txt
serverc nfs
|
2.2. fstab 開機自動掛載
1
2
3
4
5
6
7
8
9
10
11
|
[root@servera ~]# mkdir -v /share
mkdir: created directory '/share'
[root@servera ~]# cat >> /etc/fstab << EOL
> serverc:/share /share nfs defaults 0 0
> EOL
[root@servera ~]# mount -a
[root@servera ~]# cat /share/README.txt
serverc nfs
[root@servera ~]# df -h /share/
Filesystem Size Used Avail Use% Mounted on
serverc:/share 8.0G 1.9G 6.2G 23% /share
|
3. AutoFS
autofs 是在 Client 端一個常駐在背景的程式,會自動掛載設定好的 nfs ,跟 monut 最大差別為只有在連線時候才會掛載,當連線結束後一段時候沒有連線請求,將會斷開連線,可以有效釋放 TCP 連線建立交握的頻寬。
3.1.1 安裝 autofs
1
2
3
4
5
6
7
8
9
|
[root@servera ~]# yum install autofs
Dependencies resolved.
=============================================================================================================================================================================================
Package Architecture Version Repository Size
=============================================================================================================================================================================================
Installing:
autofs x86_64 1:5.1.4-74.el8 BaseOS 705 k
...
|
3.1.2 不同掛載目錄模式
autofs 有兩種模式:
- Direct Map -> 指定絕對路徑目錄
- Indirect Map -> 指定一個目錄裡包含多的目錄
如果 NFS 分享的目錄中有 5 個子目錄,如果全部子目錄都要分開不同資料夾掛載的話,在第一種模式必須定義 5 個設定,另外在第二種模式,僅需定義一個設定。
3.1.3 NFS 伺服器分享目錄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@serverc ~]# tree -F /shares
/shares
├── direct/
│ └── extrernal/
│ └── README.txt
└── indirect/
├── central/
│ └── README.txt
├── east/
│ └── README.txt
└── west/
└── README.txt
6 directories, 4 files
|
Prepare
要分享的目錄必須要寫在 /etc/export 內並重啟 nfs 才能存取。
3.1.4 Direct MAP 模式
3.1.4.1. 創建 auto fs 對應檔
以 .autofs 結尾
1
2
3
|
[root@servera ~]# cat >> /etc/auto.master.d/direct.autofs << EOL
> /- /etc/auto.direct
> EOL
|
3.1.4.2. 創建 Direct 掛載設定檔
1
2
3
|
[root@servera ~]# cat >> /etc/auto.direct << EOL
> /external -rw,sync,fstype=nfs4 serverc:/shares/direct/extrernal
> EOL
|
Tip
/external 目錄不用使用 mkdir 創建, autofs 會自行建立。
3.1.4.3. 重啟 autofs,並查看目錄是否自動掛載
1
2
3
4
5
6
|
[root@servera ~]# systemctl restart autofs
[root@servera ~]# df -h /external/
Filesystem Size Used Avail Use% Mounted on
serverc:/shares/direct/extrernal 8.0G 1.9G 6.2G 23% /external
[root@servera ~]# ls /external/
README.txt
|
Notice
autofs 預設沒有使用目錄過 5 分鐘後會自動移除掛載,如果要縮短或是延長時間,可以編輯 /etc/autofs.conf 內的 dismount_interval ,更改後重啟 autofs。
3.1.5 Indirect MAP 模式
3.1.5.1. 創建 auto fs 對應檔
以 .autofs 結尾
1
2
3
|
[root@servera ~]# cat >> /etc/auto.master.d/indirect.autofs << EOL
> /internal /etc/indirect.autofs
> EOL
|
3.1.5.2. 創建 Indirect 掛載設定檔
1
2
3
|
[root@servera ~]# cat >> /etc/indirect.autofs << EOL
> * -rw,sync,fstype=nfs4 serverc:/shares/indirect/&
> EOL
|
Tip
使用 Indirect 使用 * 表示所有的子目錄,並在遠端分享目錄後加上 & 表達。
3.1.5.3. 重啟 autofs,並查看目錄是否自動掛載
只有用到該目錄才會掛載,所以必須要知道 server 端有分享出哪一些目錄
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@servera ~]# systemctl restart autofs
[root@servera ~]# ls /internal/
[root@servera ~]# df -h /internal/west
Filesystem Size Used Avail Use% Mounted on
serverc:/shares/indirect/west 8.0G 1.9G 6.2G 23% /internal/west
[root@servera ~]# ls /internal/
west
[root@servera ~]# df -h /internal/east
Filesystem Size Used Avail Use% Mounted on
serverc:/shares/indirect/east 8.0G 1.9G 6.2G 23% /internal/east
[root@servera ~]# ls /internal/
east west
|
4. 小結
NFS 十分方便好用,搭配 autofs ,實用度更上一層樓。