架設 NFS server 來提供檔案分享的服務
相較於 Samba, 當你想要做檔案資源分享時, NFS 也是另一個可以選擇的服務. 接下來我們就來試試 NFS 看看他可以帶給我們什麼樣的體驗.
首先我們先來安裝 NFS 套件
# 套件名稱是 nfs-kernel-server, 另外也可以透過 docker 來安裝, 但我覺得也沒有簡單/簡化到哪裡去
apt install nfs-kernel-server
# 安裝完成之後, 該服務的設定擋在 /etc/exports
# 接下來我們就來示範將某個資料匣分享出去, 這邊我們就先建立一個資料匣 /tmp/nfs
mkdir -p /tmp/nfs
# 接下來我們修改 剛剛創建的資料匣權限, 使其 owner 為 nobody:nogroup
chown -R nobody:nogroup /tmp/nfs
# 修改設定檔 /etc/exports
nano /etc/exports
# 修改內容為
# /etc/exports
# 格式:
# 在 ubuntu 上想要分享的資料夾 這個 IP 連進來的可以存取這個檔案(選項)
/tmp/nfs 192.168.0.0/24(rw,sync,insecure,no_subtree_check,all_squash)
# 如果想要讓任意 ip 都可以進來 * 代表任何人都可以連進來
/tmp *(rw,sync,insecure,no_subtree_check,all_squash)
# 存檔後重新啟動服務
service nfs-kernel-server restart
# 接下來可以透過以下指令查看撞台
# 分享狀態
exportfs
# 顯示遠端掛載的情形
showmount
=================================================================
# 以上參數說明如下
功能參數
ro:read only
rw:read and write
async:此選項允許 NFS Server 違反 NFS protocol,允許檔案尚未存回磁碟之前回覆請求。這個選項可以提高性能,但是有可能會讓 server 崩潰,可能會需要重新啟動 server. 或檔案遺失。
sync:只會儲存檔案會磁碟之後才會回覆請求。
no_subtree_check:禁用子樹檢查,會有些微的不安全,但在某些情況下可以提高可靠性。
secure:請求的 port 必須小於 1024,這個選項是預設的。
insecure:請求的 port 不一定要小於 1024。
與帳戶有關的參數
root_squash:將 uid 0 的使用者映射到 nobody 匿名使用者,這個選項是預設的。
no_root_squash:關掉 root squash 的選項,這個選項可以使用 root 身份來控制 NFS Server 的檔案。
all_squash:所有登入 NFS 的使用者身份都會被壓縮成為 nobody。
anonuid and anongid:調整匿名使用者的權限,可以讓所有透過 NFS 修改文件,都看起來是同一個使用者。
那麼我們用 NFS 模式分享了資料匣, 接下來我們當然是要連連看才對, 這邊我們就 demo 用 NFS Client
# 首先安裝套件
apt install -y nfs-common
# 建立要掛在的資料匣 shareNFS
mkdir -p /shareNFS
# 進行掛載 mount 遠端資料匣
mount 遠端Server的ip:/tmp/nfs /shareNFS
#範例: mount 192.168.7.10:/tmp/nfs /shareNFS
# 接下來就可以在該資料匣寫入內容以進行測試
# 最後不使用了, 可以卸載 unmount, 範例如下
umount -f 192.168.7.10:/tmp/nfs