如何設定 NFS 回呼以允許編寫腳本?

如何設定 NFS 回呼以允許編寫腳本?

情境

我有兩台伺服器:一台 NAS 和一台客戶端伺服器。它們都是小型機器(Raspberry、OLinuXino),並插入同一個電源板(有電源按鈕)。

客戶端伺服器在啟動時從 NAS 裝載 NFS 磁碟區。

問題

當我打開電源板時,兩台伺服器同時啟動。但當客戶端嘗試掛載 NFS 磁碟區時,它們尚未可從 NAS 取得。

所以我必須手動安裝它們,並且我想自動執行此操作。

我使用 fstab 在 Debian Wheezy 發行版上掛載磁碟區。

nas.local:/media/myshare  /media/myshare nfs defaults 0 0

我將如何解決它

所以我想我可以在 NAS 上新增一個腳本,呼叫 ssh 命令來告訴客戶端「掛載你的 NFS 卷,它們現在已經準備好了!」。

類似ssh -i idFile login@clientServer 'sudo mount -a'NAS 方面的東西。

問題

放置此類腳本的最佳位置是什麼?

NFS 掛鉤?像回調之類的東西?

額外問題

還是有另一種更好的方法來做到這一點?

答案1

由於多種原因,我會盡力防止失敗。一個 cron 作業會檢查磁碟區是否已安裝,如果未安裝則安裝它,即可完成此操作。

  1. 使用我將使用以下答案建立腳本檢查目錄是否用bash安裝[關閉]

  2. 對於您正在建立的 bash 腳本中的安裝,請使用 Giles 答案來修改您的 sudoers 文件,以允許 cron 腳本作為 sudo 執行如何在沒有密碼提示的情況下以 root 身分執行特定程式?。這可能是一個可選步驟,具體取決於您的設定。

  3. 設定您的 cron 作業。你會想要兩個。首先是定期檢查安裝情況,如果沒有則安裝。這樣,如果其中任何一個獨立失敗,它將恢復在線狀態。第二個應該在啟動後使用 cron。這個答案會對你有幫助Crontab 作業在@reboot 之後+1 分鐘啟動

從伺服器端:您可以將腳本附加到 NFS 服務本身。您可以編輯服務腳本以在完成後短暫睡眠後執行。 bash 腳本可以遵循以下形式:

sleep 60 && my_mount_script.sh

使用 systemd 你可以等待systemd 在重新啟動/關閉或終止其他進程之前等待命令完成以便 nfs.service 啟動。替換內容包括刪除 Before 部分,然後將 after 服務名稱變更為 nfs.service

相關內容