Mount
如何設置對 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 鉤子?像回調一樣的東西?
額外的問題
還是有另一種更好的方法來做到這一點?
出於幾個原因,我會嘗試防止失敗。檢查卷是否已掛載然後掛載它的 cron 作業將完成此操作。
- 使用我將使用Check if directory mounted with bash中的答案創建腳本$$ closed $$
- 對於您正在創建的 bash 腳本中的安裝,請使用 Giles 回答修改您的 sudoers 文件以允許 cron 腳本以 sudo 身份執行如何在沒有密碼提示的情況下以 root 身份執行特定程序?. 這可能是一個可選步驟,具體取決於您的設置。
- 設置您的 cron 作業。你會想要兩個。首先是定期檢查安裝,如果沒有安裝。這樣,如果其中任何一個獨立失敗,它將重新聯機。第二個應該在啟動後使用 cron。這個答案將幫助您在@reboot 後 1 分鐘開始 Crontab 作業
從伺服器端:您可以將腳本附加到 NFS 服務本身。您可以編輯服務腳本以在完成後短暫休眠後執行。bash 腳本可以遵循以下形式:
sleep 60 && my_mount_script.sh
使用 systemd 您可以等待systemd 等待命令完成,然後再重新啟動/關閉或殺死其他程序以啟動 nfs.service。替換將包括刪除 Before 部分,然後將 after 服務名稱更改為 nfs.service