
情境
我有兩台伺服器:一台 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 作業會檢查磁碟區是否已安裝,如果未安裝則安裝它,即可完成此操作。
使用我將使用以下答案建立腳本檢查目錄是否用bash安裝[關閉]
對於您正在建立的 bash 腳本中的安裝,請使用 Giles 答案來修改您的 sudoers 文件,以允許 cron 腳本作為 sudo 執行如何在沒有密碼提示的情況下以 root 身分執行特定程式?。這可能是一個可選步驟,具體取決於您的設定。
設定您的 cron 作業。你會想要兩個。首先是定期檢查安裝情況,如果沒有則安裝。這樣,如果其中任何一個獨立失敗,它將恢復在線狀態。第二個應該在啟動後使用 cron。這個答案會對你有幫助Crontab 作業在@reboot 之後+1 分鐘啟動
從伺服器端:您可以將腳本附加到 NFS 服務本身。您可以編輯服務腳本以在完成後短暫睡眠後執行。 bash 腳本可以遵循以下形式:
sleep 60 && my_mount_script.sh
使用 systemd 你可以等待systemd 在重新啟動/關閉或終止其他進程之前等待命令完成以便 nfs.service 啟動。替換內容包括刪除 Before 部分,然後將 after 服務名稱變更為 nfs.service