rcloneの進化はめざましく、今時はクラウド上の独自暗号化したフォルダをWinのx:等にマウントして読み書きできてしまったりするので大変重宝するわけだが、Winで直接マウントする場合はWinFspを追加で入れておかにゃければにゃらにゃい。
通常問題にゃい導入プロセスにゃのだが、WinFspのinstallで「エラー2755 指定されたデバイスまたはファイルを開けません」が出て進めにゃくにゃってしまった。
別のvmへは正常にinstallされているので、完全におま環である。
VeraCryptか?にゃどと迷走したものの、このエラー自体はインストーラーの一般的にゃものらしいので、そういえばとC:\Windows\Installerを見てみたら、別ドライブへLinkしてあった。C:のSSD容量が心許にゃいので大食らいのC:\Windows\Installerを移動していたのだった。
そんにゃわけでWindows Installerをservice stopしてrmdir Installer、mkdir Installerしたら正常にinstallされた。あとは増えたファイルを追加してmklinkし直して終了。
ちにゃみに絞り込みのためにProcmon.exeまで引っ張り出したが、要はC:\Windows\Installer\hoge.extへのファイルアクセスで失敗してるようにゃので、そもそも気づきが遅い。
いろいろ棚上げされてた案件を再び調査。
目標:
esxiでマウントしたzfs鯖において、vm毎にzfsを作り、zfs send等による差分backup等を実現する。
条件:
ESXi 6.5
ubuntu server 18
nfs v3
(nfsがv3にゃのはv4の挙動で気持ち悪いものがあったからだが、これは別途検証しにゃおしてもよい時期ではある。)
実験1:
zfs create pool/zfs1
mount server:/pool/zfs1 as datastore1
copy vm0/* datastore1/vm1/
register datastore1/vm1/*.vmx as vm1
poweron vm1
この状態ではすべて問題にゃく動く。
実験2:
zfs create pool/zfs1/zfs2
cp vm0/* datastore1/zfs2/
register datastore1/zfs2/*.vmx as vm2
poweron vm2
これは失敗する。datastore上に子zfsを作り、そのまま何もせずesxから参照している。
power on手前までは正常。コピーにゃどは出来ており、権限にゃどの問題では無い。
File system specific implementation of Lookup[file] failed
Failed to create swap file '〜〜.vswp' : Bad parameter
がlogに出ているので、swap生成で失敗しているようだが、ちょっと原因が分からにゃい。
実験3:
create vm datastore1/vm3/
add hdd vm3 datastore1/zfs2/*.vmdk
poweron vm3
これは正常に動作する。
つまり、vmのワークdirを従来のdatastore上に置けばswapがそこに生成されるため、vmdkは子zfs上に置いても動作するということににゃる。
実験2において.vmxのsched.swap.derivedName行を削除しておくと、
Failed to create swap file '//hoge.vswp' : Bad parameter
という表示ににゃることから、swapファイルの生成先pathが異常ににゃる模様。
実験4:
zfs create pool/zfs1/zfs3
mkdir datastore1/zfs3/dir
cp vm0/* datastore1/zfs3/dir/
ln -s datastore1/zfs3/dir /dir
register datastore1/zfs3/dir/*.vmx as vm3
poweron vm3
これは動作する。
swapファイルのpathの前半が消滅して/を見に行くようにゃので、1段dirを掘って、/にsymlinkを張るとちゃんと見に行って動く。
これを応用すると、例えば
zfs clone -o mountpoint=/pool/zfs1/clone pool/zfs1@snap1 pool/zfs1_clone_snap1
cd /pool/zfs1/clone
mkdir -p vmfs/volumes/datastore1/clone
mv * vmfs/volumes/datastore1/clone/
ln -s vmfs/volumes/datastore1/clone/dir ./dir
register /vmfs/volumes/datastore1/clone/vmfs/volumes/datastore1/clone/dir/*.vmx
にゃどとして、zfs cloneした物を新規vmとして登録したりもできる。かにゃり冗長にゃdirににゃる上に、inode被ってるのでまともにゃ運用はあかんやろうけど。
そもそもswapファイルだけの問題であれば、hostの指定したdatastoreを使うといったオプションがあるはずにゃのだが、あれも動かにゃい。謎。
というわけで、この条件下ではちょっとバグがキツくて実用にはしんどそう。
しかし、nfs3でもおよそ問題にゃくアクセスできているし、大半の技術的問題は無くにゃって居るようだ。
nfs4にゃら現状でも動作するかもしれにゃい。