OpenWrt NFS client 開機掛載詳細步驟

步驟 1:安裝必要的套件

請改用以下指令來安裝正確的 NFS 客戶端套件及其相關依賴:

# 更新套件列表
opkg update

# 安裝 NFS 客戶端套件 (包含mount.nfs指令)
opkg install nfs-utils

# 安裝核心模組以支援NFSv3和NFSv4
opkg install kmod-fs-nfs kmod-fs-nfs-v4

# 安裝 RPC 套件,這是NFS的基礎服務
opkg install libtirpc rpcbind
  • nfs-utils:這是包含 mount.nfs 等工具的正確套件名稱。

  • kmod-fs-nfskmod-fs-nfs-v4:核心模組,提供對 NFSv3 和 NFSv4 檔案系統的支援。

  • libtirpcrpcbind:遠端程序呼叫(RPC)服務,是 NFS 運作的基礎。


步驟 2:啟用 RPC 服務

NFS 需要 rpcbind 服務才能正常運作。請在安裝後啟用並啟動它。

/etc/init.d/rpcbind enable
/etc/init.d/rpcbind start

步驟 3:手動測試掛載

在進行自動掛載設定之前,建議先手動測試以確保所有套件和設定都正確。

# 建立掛載點目錄
mkdir -p /mnt/nfsimage

# 執行手動掛載,使用nfsvers=4指定協議版本
mount -t nfs -o nfsvers=4 192.168.99.7:/mnt/image /mnt/nfsimage

# 檢查是否成功掛載
df -h

如果 df -h 輸出中顯示了 192.168.99.7:/mnt/image,代表手動掛載成功。


步驟 4:設定開機自動掛載(使用自定義腳本)

由於 OpenWrt 的開機順序問題,直接修改 /etc/config/fstab 可能會失敗。最可靠的方法是建立一個自定義的開機腳本,確保在網路服務完全就緒後才執行掛載。

  1. 建立啟動腳本
vi /etc/init.d/nfs-mount
  1. 腳本內容:將以下內容複製到檔案中。
    #!/bin/sh /etc/rc.common
    
    START=99
    STOP=10
    
    start() {
        # 在掛載前延遲10秒,確保網路服務和rpcbind已啟動
        sleep 10
    
        # 執行NFS掛載指令
        mount -t nfs -o rw,sync,nfsvers=4 192.168.99.7:/mnt/image /mnt/nfsimage
    }
    
    stop() {
        # 卸載NFS分區
        umount /mnt/nfsimage
    }

START=99:確保此腳本在其他所有啟動服務之後執行,避免時序問題。
sleep 10:提供額外的緩衝時間,確保網路連線穩定。

  1. 設為可執行並啟用
chmod +x /etc/init.d/nfs-mount
/etc/init.d/nfs-mount enable   #開機自動啟動
  1. 重新啟動
reboot
重新啟動後,NFS 分區將會自動掛載。您可以使用 `df -h` 指令來確認。

指令解析

mount -t nfs -o nfsvers=4 192.168.99.7:/mnt/image /mnt/nfsimage
  • mount:這是主要的指令,用來將檔案系統掛載到指定的掛載點。

  • -t nfs:指定要掛載的檔案系統類型(file system type)。在這裡,我們明確告訴 mount 指令,我們正在處理的是 NFS(網路檔案系統)

  • -o nfsvers=4:這是用來指定掛載選項(options)的參數。

    • -o 代表 options

    • nfsvers=4 指定了要使用的 NFS 協定版本。NFS 協定有多個版本,其中 NFSv4 是較新的版本,通常在效能和安全性上有所改進。明確指定版本有助於避免客戶端和伺服器之間因為版本不一致而導致的通訊失敗。

  • 192.168.99.7:/mnt/image:這是要掛載的遠端來源。

    • 192.168.99.7NFS 伺服器的 IP 位址

    • : 用來分隔伺服器 IP 和遠端分享的目錄路徑。

    • /mnt/image 是 NFS 伺服器上被分享出來的目錄路徑。

  • /mnt/nfsimage:這是本地端的掛載點(mount point)。

    • 這是您在本機 OpenWrt 系統上預先建立好的目錄。

    • 掛載完成後,您就可以透過存取這個 /mnt/nfsimage 目錄,來讀取或寫入 NFS 伺服器上 /mnt/image 目錄裡的檔案。

總結來說,這段指令的意思是:

  • 「請使用 nfsvers=4 這個協定版本,將 192.168.99.7 這台伺服器上分享的 /mnt/image 目錄,掛載到我本地的 /mnt/nfsimage 這個目錄下。」