Linux 中的條件「掛載」:dev 或 nfs

Linux 中的條件「掛載」:dev 或 nfs

我有一個掛載點(順其自然/media/question)和兩個可能的設備:一個實體 HDD 和一個遠端 NFS 資料夾。有時我會以物理方式插入設備,有時我會透過 NFS 掛載它。

有沒有辦法指定它們兩者,fstab以便執行時mount /media/question優先選擇物理卷,並且當它不可用時 - NFS?

答案1

您需要編寫一個 Bash 腳本來檢查實體設備是否存在,如果存在則掛載該設備,否則掛載 NFS 共用。

像這樣的東西:

if [ -d /media/disk ] ; then {
mount /media/disk ...
}
else{ ...

您可以將此腳本放入 /etc/init.d 中以便在啟動時運行,也可以添加到 cron 中以每 5 分鐘或其他時間範圍檢查一次...

答案2

如果已安裝,您也可以查看 udev。這允許在新增或刪除設備時執行操作;例如網路介面出現時。要查看其實際情況,請查看 /etc/udev/rules.d/ 中涵蓋網路存取的檔案(在我的 SuSE 機器上稱為 77-network.rules)。您可以定義介面開啟/關閉時的操作:

/etc/udev/rules.d/77-network.rules

# 子系統==“網路”,

ENV{介面}=="ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*|bond*|br*|vlan*|調變解調器*|dsl *",GOTO="skip_ifup"

SUBSYSTEM=="net", ACTION=="add", RUN+="/sbin/ifup $env{INTERFACE} -o hotplug"

SUBSYSTEM==“net”,ACTION==“刪除”,RUN+=“/sbin/ifdown %k -o hotplug”

標籤=“skip_ifup”

(「ENV(INTERF....」行用於忽略非標準網路接口,如果匹配,則跳到相應的 LABEL 語句。當 ACTION 語句匹配時,將觸發 SUBSYTEM 行 – 即添加或刪除接口」)

因此,如果您更改「新增/刪除」操作來呼叫腳本,則該腳本將呼叫 ifup/ifdown,然後執行您想要執行的任何其他操作。例如呼叫“ifup $@”然後檢查介面IP並掛載對應的條目。如果掛載在 fstab 中列出並帶有「noauto」選項,那麼您只需要一個簡單的命名約定即可找到該條目並發出掛載。

以類似的方式,腳本 /etc/udev/rules.d/56-idedma.rules 覆蓋 IDE(或 sata 磁碟機),並在偵測到磁碟機時執行。該腳本將允許使用備用 RUN 腳本根據存在啟動本機安裝。

規則的命名和排序與 init 系統中使用的類似。查看說明和規則檔案以取得更多範例和選項。

相關內容