web-dev-qa-db-ja.com

マウントポイントが使用可能であることを確認するために依存するzfsコマンド/ systemdユニットはどれですか?

systemdによって管理されるサービスが開始される前に、ZFSマウントポイントが利用可能であることを確認したいと思います。したがって、systemdユニットでAfter=スタンザを使用します。しかし、引数として何を書くべきでしょうか?

出荷されたバージョンで継続的なパフォーマンスの問題があるため、ZFSのローカルインストールを使用しており、唯一のプールをインポートします

[Unit]
Description=ZFS pool import for source installations of ZFS
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/zpool import -d /dev data

[Install]
WantedBy=multi-user.target

ubuntuでsystemdのサポートに関する有用なドキュメントを見つけたことがなく、 開発者がターゲットにしているようだ .

ただし、別のシステムでは、組み込みリソースで問題が発生します。 zfs-mount.serviceは、プールがインポートされず、マウントが成功しなかった場合でもロードされ実行されます。

マウントポイントが利用可能になった後にのみ起動し、ZFS全体またはマウントポイントのみの初期化に失敗した場合(およびローカルインストール用にコピーできる場合)に起動を拒否するために、サービスに依存できるターゲットはありますか?

Ubuntu 17.10を使用しています。

3
Karl Richter

システムのデフォルト

ここにはたくさんの魔法がありますが、Ubuntu 18.04では、答えは一般的にzfs.targetであるようです。これはWantedByとして示され、さまざまなzfs-*.services(マウント、modprobeなど)。熟読するとこれが表示されます

more /lib/systemd/system/zfs* | less

zfs-import.targetが実行された後、ファイルシステムがマウントされる前に満たされるzpool importもあることに気付くかもしれません。

ただし、私の場合は、最初に実行する必要がある他の手順(暗号化されたブロックデバイスマッピングなど)があるため、これらはすぐに機能しません。

特定のマウントポイント

特定のマウントポイントについては、一般的なzfs.targetに依存せず、システムが依存する特定のマウントのステータスをチェックする独自のサービス(おそらくWants=zfs.targetを使用)を追加することをお勧めします。たとえば、/blah/my/zfs/mountがマウントされていることに依存している場合は、返される前にzfsのマウントステータスを確認できるサービスを作成します。

zfs get mounted blah/my/zfs/mount | grep yes

/etc/systemd/system/my-zfs-mount.service

[Unit]
Description=ZFS mount blah/my/zfs/mount
Wants=zfs.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/sbin/zfs get mounted blah/my/zfs/mount | grep yes

[Install]
WantedBy=multi-user.target

そして、他のサービスはこれに依存できます。

0
banzaimonkey