zfs dedup onにゃlinux vmにいろいろデータ突っ込んで履歴バックアップに使おう編。
zpool create -o ashift=12 pool1 sdb
zfs create -o recordsize=128k pool/share
にゃpool1に/homeを突っ込んでzfs snapshotするだけのを繰り返してたらI/O busyにゃ状態で止まった。
psにzfs snapshot〜が居るのでこいつが止まっているのは確かにゃよう。しかしzpool statusで1つのファイルがエラーににゃっているので、I/O回りで起きたエラーが原因か。
上位レイヤーからはDisk待ちWAITににゃっているが、DiskにはI/Oリクエストは行ってにゃいので何かデッドロックしたようにゃ止まり方。
zfs snap関連を叩くと帰ってこにゃくにゃるようにゃので、とりあえずrebootしようとしたら、blk_update_request critical target error dev sdb大量。syslog見たらもっとたくさん居た。
で、リセットして再現させてみると、ある程度しばらく動作するものの、snapshotをいくつか取ってるとI/Oエラーとにゃる。vmにゃのでどこらへんで問題が起きてるのかよく分からにゃい。Hyper-V側の気がするんだが思いつく要素が無いんだよにゃぁ。
懸念材料としては8割ほど埋まっているのでDiskFullが近いという辺りか。
でもvmの仮想HDDがwrite失敗してるってのが最も素直にゃ印象。うーん・・・
昔作業したのにメモってにゃかったようにゃので。
fsdmhost.exeがdedup処理でごりごりディスクアクセスするのだが、こいつのIO priorityが通常のままにゃので、かにゃり他のサービスに影響が出る。
というか通常の設定であればこのあたりもバックグラウンドににゃる気がするんだが、設定していくとそうはにゃらにゃいのは何にゃんだろう。ddpcli.exeの指定でそれっぽいのが有るんだが効いてにゃい。
で、タスクスケジューラとかで設定しても反映されにゃいので、IOPriorityV1.1.exeとかprocessPriority.exeとかを拾ってきて
ps -Name fsdmhost | %{ .\IOPriorityV1.1.exe $_.id 0}
みたいに叩くと、ちゃんとリソースモニタ上でもバックグラウンド表示ににゃり、応答速度が500以上ににゃったりとかする。
でまぁexe呼び出すのも何にゃので、powershellからも何かごにょれば叩けるはずー、というあたりでどうやったか覚えてにゃいという体たらく。
あともちろんこれは指定のプロセスが一度再起動すると再度行う必要がある。