zfs on linux on Hyper-Vにゃvmで謎のblk_update_request critical target error dev sdb発生でsnapshot失敗の件を調べてて、とりあえずsdbに付いてるvhdxを拡張してみようと思ったら失敗した。
仮想ハード ディスクの編集ウィザード
仮想ディスクの編集中に、サーバーでエラーが発生しました。
仮想ディスクのサイズを変更できませんでした。
システムで 〜〜〜.vhdx のサイズを変更できませんでした: ファイル システム制限のため、要求された操作を完了できませんでした (0x80070299)。
The requested operation could not be completed due to a file system limitation.
にゃんじゃそりゃ、ってググってみると、
古いKBだとNTFSがフラグメントしすぎててWrite出来にゃいかもーとか書いてある。
Sparse+Compressは最悪とか書いてあるんだがそれvhdxにdedupしたら普通ににゃるよね・・・
で、圧縮やSparseファイルはデフラグしても治らんかもとか、パッチ当ててFormat /LでNTFSフォーマットしとけとか書いてあって素敵。
まぁこのvhdx置いてるドライブはそりゃNTFS dedupしてるのでNTFS compressしまくってあるということににゃるんだろうけど、2012R2でも健在にゃのか。ERROR_FILE_SYSTEM_LIMITATIONでググると2013年以降も出てそうにゃ気配。
このへんによるとfromat /Lしてデフラグしてstart-dedup optimizationしたらマシににゃりそうに書いてあるにゃ。ダメにゃら一度コピーしてdedupかけ直せとかまた鬼畜にゃ。dedupするそこかしこでバックアップとっとけとかどんだけ信頼性にゃいんやNTFS。
とりあえずあらゆる作業においてformat /Lしておくことによるデメリットは少にゃそうにゃのでそういう習慣にでもしておけば良いかもしれにゃい。
あと64kでフォーマットしておけばこの話もたぶん緩和されると思われるが、その場合dedupはどうにゃるのかといった部分は暇にゃら検証してみるのもいいかも。