個人利用で階層記憶域を使うなら「ドライブのデフラグと最適化」を停止せよ
階層記憶域で不良ディスクだの注意・取り外しだのさんざん酷い思いをさせられてきたが、ついに原因が解決しそうなので報告しようと思う。
原因は表題のとおりである。
Windowsにあらかじめ入っている「ドライブのデフラグと最適化」は断片化をグラフィカルに表示してくれない胡散臭い存在だが、これでも他のデフラグツールと違ってWindows謹製なので動作環境にお墨付きがある。
本来「ドライブのデフラグと最適化」はスケジュールデフラグを任意で行うことができ、”スケジュールされた最適化”をオフにすれば最適化が勝手に動くことはない。
しかし階層記憶域が存在する場合、これとは全く別の仕組みで最適化が勝手に起動してしまう。
つまり、データコピーしている最中に最適化が勝手に起動し、ディスクの使用率が常に100%になりアクセスが利かなくなる。さらにWindows自体の動作も重くなる。「ドライブのデフラグと最適化」にて当該ドライブの最適化を停止すればいいが、それもすぐ止まらない。
しかもドライブ使用率が0%でない状態でスリープ・休止・シャットダウンを行った場合まったく動作しなくなることもあり、強制シャットダウンさせて再起動という荒業を使わなければならなくなる。
当然そんなことをすればディスクの調子も悪くなり不良ディスク発生の原因となる。
すべての原因は勝手に「ドライブのデフラグと最適化」が起動することである。
これの解決は単純で、「タスクスケジューラ」にて(メニューで検索すれば出てくる)
>タスクスケジューラライブラリ
>Storage Tiers Optimization を無効にすることである。
Storage Tiers Management Initializationを無効・削除するのはよくないようだ。
Storage Tiers Optimizationは「システム内のすべての階層型記憶域で、記憶域階層へのデータの配置を最適化します。」とある。つまり階層記憶域が認知されている限りこれが勝手に起動し最適化を行うのだ。
もちろんデータの平均化やティアリングのために最適化は必要だ。しかしそれは自分の任意のタイミングでよい。
なのでこのStorage Tiers Optimizationを選択(青色)、右のメニューで↓無効化を選べばよい。これで勝手にデフラグが動いて記憶域のアクセスがビジーになることはなくなる。
もし自分で最適化を行いたいなら、「PowerShell ISE」を管理者モードで実行し、
Optimize-StoragePool -FriendlyName 記憶域プール
※記憶域プールはデフォルトネーム。自分で設定した名前で。
でプールのデータの最適化を行い、さらに
Optimize-Volume -DriveLetter 〇〇
で最適化をかけたいドライブレターを打ち込み実行してやればよい。
「Storage Tiers Optimization」無効化が心配なら、右クリック>プロパティを開き「条件」を選び、「次の間アイドル状態の場合のみタスクを開始する」のチェックをつけて任意の時間を設定すればよい。
デフォルトだと15分間と入っているが、そもそもチェックがついてない(無効)。
結局ここ数年、記憶域が健康だった時期は短く、隙あらば修復(〇〇%)だの注意警告だのDegratedだのいろいろ警報が出ていて信用ならなかったが、原因はファイル書き込み中に裏で勝手にWindowsデフラグが動いてハングしていたことだったようだ。
なので、いままで失敗したと思っていた、
New-Virtualdisk後にWindowsフォーマットではなくMinitoolPartitionWizardでディスクフォーマット・パーティション分けしていたこと
は不具合の原因とは関係なかった。
おそらくSMR(ST8000DM004など)でパリティ構成しても、ミラー部分(SSD)の容量をけちって500GBのSSDで構成しても、遅くなることはあっても障害には至らないのだろう。
もっと早く奴の存在に気付くべきだった。