使用 systemd 自動掛載通配符

使用 systemd 自動掛載通配符

我正在使用 systemd 208 運行 jessie/sid 並嘗試將以下通配符 autofs 配置轉換為 or /etc/fstab/.mount定義.automount

$ cat /etc/auto.master
/home/* -fstype=nfs homeserver:/exp/home/&

(主伺服器運行 Solaris,每個子目錄都是/exp/home/單獨的共用。)

有沒有辦法用 systemd 模擬通配符映射?

答案1

我想不會。 .mount/.automount 單元名稱必須等於安裝路徑,並以 轉義systemd-escape --path。 systemd 中實例化單元的唯一方法是表單的「範本語法」[email protected]。因此,至少不可能有一個動態實例化的安裝單元。

只需使用 autofs 即可。 systemd 並不能取代一切。

答案2

你可以使用systemd發電機介面。基本上,它在啟動或重新載入時動態建立服務文件。

我們的叢集中有一系列機器(稱為“dema”加上一些數字),它們都匯出相同的目錄(它們的實體磁碟)。我使用生成器介面創建了一個和一個.自動掛載每台機器的檔案:

#!/bin/sh

svc_dir=/run/systemd/generator

for i in $(seq 1 99); do
    # this must match the mount path, / is converted to -
    unit_bn=cluster-dema$i
    cat << EOF > "${svc_dir}/${unit_bn}.automount"
[Unit]
Description=dema${i}s localdisks automount point
Documentation=file:///usr/lib/systemd/system-generators/dema-automount-generator
Before=remote-fs.target

[Automount]
Where=/cluster/dema$i
EOF

    cat << EOF > "${svc_dir}/${unit_bn}.mount"
[Unit]
Description=dema${i}s localdisks
Documentation=file:///usr/lib/systemd/system-generators/dema-automount-generator

[Mount]
What=dema$i:/localdisks
Where=/cluster/dema$i
Type=nfs
Options=rw,nosuid,nodev,hard,intr,rsize=8192,wsize=8192,noauto,x-systemd.automount
EOF
    ln -s "../${unit_bn}.automount" "${svc_dir}/remote-fs.target.requires"
done

該腳本必須放入/usr/lib/systemd/系統產生器並且可執行。把它放在那裡後,打電話systemd 守護程式重新載入你應該找到單位/運行/systemd/生成器。下次重新啟動時會激活,當然可以透過呼叫手動啟動systemd 啟動 oneofthenames.automount

相關內容