我正在使用 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。