さて、マニアな話です。
たぶん需要がほぼないが、わかってないと困るという話です。
何かというとBootボリュームでないBlockデバイス上に
zfsのイメージファイルを置いた場合のマウント制御の問題です。
かなり事例が少なそうですが、
つまりOCI Always Freeの場合Boot Volumeが50Gです。(厳密は違う)
なのでIncus用のファイルシステムをzfsで確保しようとするとこのBootデバイス
内にファイルが生成するのが標準です。default.img
しかしこれですとちょっと狭いですよね。
なのでAlways Freeは200GBまで無料でストレージが使えますので
残り150Gが使えます。
これは別Block Volumeとして確保できます。
ext4であれば、fstabに書いておけば自動マウントされます。
問題はこのBlock Volumeがマウントされる前にこの中にあるzfsイメージを
マウントしようとしてしまう問題です。
まあ当たり前でマウントできず、incusが起動してきませんし、
zpoolでもストレージが見えないのです。
手動でimportすれば見えるようになるのですが、起動の度にこれをやるのは
現実的ではありません。
ということでsystemdで起動の順番制御をさせるのが解決策です。
このスクリプトを書いておきます。
私の備忘録でもあります。
-------------------------------------------------------------------------------------------
Unit]
Description=Import ZFS pool zdisk from /mnt/vol2/zdisk.img
Requires=mnt-vol2.mount
After=mnt-vol2.mount
Before=incus.service
[Service]
Type=oneshot
ExecStart=/usr/sbin/zpool import -d /mnt/vol2/zdisk.img zdisk
ExecStop=/usr/sbin/zpool export zdisk
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
-------------------------------------------------------------------------------------------
はい、これをsystemdに登録して起動すれば解決です。
ChatGPTに解析依頼しました。
万一同じケースになった場合はこれで治ります。
ではでは。