Nfs

使用 systemd 的萬用字元自動掛載

  • April 27, 2015

我正在使用 systemd 208 執行 jessie/sid,並嘗試將以下萬用字元 autofs 配置轉換為/etc/fstab.mount/.automount定義。

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

(homeserver 執行一個 Solaris,每個子目錄/exp/home/都是一個單獨的共享。)

有沒有辦法用 systemd 模擬萬用字元映射?

我想沒有。.mount/.automount 單元名稱必須等於掛載路徑,用 . 轉義systemd-escape --path。systemd 中實例化單元的唯一方法是 form 的“模板語法” foo@bar.type。因此,至少不可能有一個動態實例化的安裝單元。

只需使用 autofs。systemd 不是所有東西的替代品。

您可以使用 systemd 的生成器介面。基本上,它會在啟動或重新載入時即時創建服務文件。

我們的集群中有一系列機器(稱為“dema”加上一些數字),它們都導出相同的目錄(它們的物理磁碟)。我使用生成器介面為每台機器創建了一個*.mount和一個.automount*文件:

#!/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/system-generators和執行檔中。把它放在那里之後,呼叫systemd daemon-reload你應該在/run/systemd/generator中找到這些單元。有在下次重啟時啟動並且可以手動啟動,當然,通過呼叫systemd start oneofthenames.automount*。

引用自:https://unix.stackexchange.com/questions/128264