2022-11-04 (Fr) [長年日記]
_ zfs-zed 設定
/etc/fstab に bind mount の設定をしたいんだけど、 ソースが zfs なんだよね。
zfs が mount されてから bind mount して欲しいんだけど、 それを書くには、fstab に x-systemd.requires= を使う必要がある。
x-systemd-requires=zfs-mount.target と書けば、 zfs-mount.target が success になったら mount してくれる。
だけど、zfs dataset は他にもあって、それぞれ mount してる。 zfs-mount.target だと、それら全部を mount した後、ってことになってしまう。 もっと限定したいな、と。
zfs-mount-generator ってのがあって、zfs の unit file を 生成してくれるらしい。…しかしなんでか生成されんのよな……
zfs-mount-generator の manual 見たら、なんか条件があるみたいで、
まず、zed.d 中に symbolic link を張る必要がある。 これは既にあった。
次に zfs-zed を有効にする必要がある。 これは有効にした。
次に /etc/zfs/zfs-list.cache/<POOL NAME>
に
空ファイルを作る必要がある。ここに状態が保存されるらしい。
次に、relatime をいじって、そして元に戻す必要がある。 別に relatime でなくてもいいみたいなんだけど、 たぶん、zfs-list.cache に保存される項目じゃないといけないっぽくて、 quota をいじっても意味なかった。
最後に systemctl daemon-reload する。
これで、/run/systemd/generated/ に .mount
ファイルができる。
たぶん、zfs-list.cache のファイルから生成してるんだと思う。 なんでわざわざそのファイルを経由する? 直接 pool 見ればいいじゃん、 という気もしたけど、たぶん、まだ pool が import されてない状態でも 生成できるようにするためなのだろう、と思った。
で、.mount
ファイルができたら、それを bind mount の
x-systemd.requires= に書けば良し。