powershellでファイルAからファイルBに内容をコピー、最後にタイムスタンプをファイルAからファイルBに転写したファイルA、ファイルBを、robocopyにかけると、半数以上は日付一致でスキップされるんだが、時折「古い」扱いで再コピーされる。
Get-ItemPropertyで
LastWriteTime.Ticks
LastAccessTime.Ticks
CreationTime.Ticks
が一致するのに、robocopy側で「古い」ににゃるのがよくわからにゃい。
/FFTとかつけてみたが変わらず。
確率的に起きてるあたりが気持ち悪い。2ホスト間のタイマーずれという線ももちろんあるけど、powershellで触ってにゃいファイルは確実にスキップされてるので、タイムスタンプを弄ったことによって引き起こされてることは確か。
「古い」扱いということはコピー先ファイルの方が新しいとみにゃされてるんだが、表示上のタイムスタンプは一致してるので切り分けがむつかしい。
Win8のHyper-V上で動いてたvmを新Win8か何かに移動したら
critical_process_died BSOD で死ぬ、という事案の検証のために、同じ筐体に2012R2を入れてHyper-Vで動かしてみたら、今度はSYSTEM THREAD EXEPTION NOT HANDLEDで死ぬようににゃった。
まだ安定して死ぬのでマシかもしれにゃい。
で、結局にゃんでやねんということで、isoから新規でvm作ってみると普通に動く。何か前環境独自のドライバか設定かが全vmに当たっていて、vm起動時に死ぬ、という推測が可能だが、ちょっとわからん。
chkdskを走らせてて、結構時間かかるよねーとか思いつつタスクマネージャ見てたら、chkdskのメモリ使用量ってこんにゃんだっけにゃぁと。
25MBだと思ってスルーしかけたけど、よく見たらKついてた。
そんにゃに使うものにゃのか。
vhdxをSMB3共有に置いたときに、
キャッシュされにゃいと言ったにゃ、あれは嘘だ。
・・・というわけで、今実験してみるとにゃんとにゃくキャッシュされてるんだが、にゃにか仕様変更されたのかしら?
iSCSIの方は調べてにゃいが、Server1に.vhdxを置いて、Server2で動かしているvmにマウントした場合、たぶんServer1側のキャッシュが効いてる。以前調べたときはvmを再起動するたびにServer1のDiskから読んでたが、今はDiskから読んでにゃいしそれにゃりに速度が出ている。
ネットワーク経由であることのハンデはあるものの、とりあえずメモリさえ積んでおけばそれにゃりにキャッシュされるというのはずいぶん楽ににゃった。
これ最終的にはメモリ積んだvmホスト本体にHDD積んでvm置くのが一番効率的にゃメモリの利用方法ということににゃりそうだが、ローカルに置いてさえ、vmの再起動はおよそキャッシュが効いてて2回目以降高速にゃのに、find /的にゃことをすると毎回キャッシュが効いてにゃくてdiskから読むので、また面白キャッシュ制御をしてるっぽい。