遅延書き込みデータの紛失
ファイル~のためのデータを一部保存できませんでした。データを損失しました。
このエラーは、コンピュータのハードウェアまたはネットワーク接続の障害によって発生した可能性があります。
このファイルをどこか別の所に保存してください。

遅延書き込みデータの紛失

遅延書き込みに関するエラーが発生すると、
Windowsの動作も極端に遅くなって、まともに操作できなくなったりします。

正直、あまり見たくないエラーのひとつです。
なぜなら、このエラーが発生する状況から、すっきりした感じで復旧できたことがないからです。
「遅延書き込みデータの紛失」というエラー表示があったからといって、
それが直接原因の特定につながるわけではない
のです。

遅延書き込みとは何か

Windowsは、システムを快適に運用するため、遅延書き込みを行っています。

遅延書き込みとは、データの書き込みを行う際に、
ハードディスクよりも転送速度がケタ違いに速い物理メモリをデータの一時保管場所(キャッシュ)として使うことで、
システムの動作を高速化するというものです。
実際のハードディスクへの書き込みは、ユーザーが操作したタイミングではなく、
ハードディスクの書き込み動作に余裕がある時に行われます。

システムとしての動作は高速化しますが、
それは速度の遅いハードディスクへの書き込みを後回しすることによって行われており、
その行為が遅延書き込み
だということです。

ちなみに、内蔵ハードディスク等のSATA接続デバイスは、標準で書き込みキャッシュが有効になっています。
一方、USBメモリや外付けハードディスク等のリムーバブルディスクでは、
最初から書き込みキャッシュが無効になっています

これは、常に接続が確立されているわけではないリムーバブルディスクに対して書き込みキャッシュを有効にすると、
データを失ってしまう危険性が高いからです。
高速化のメリットよりも、不意な切断によるデータ損失のリスクのほうが大きいということです。

まぁ、確実に「ハードウェアの安全な取り外し」をやっていれば問題ないわけですが、
徹底できていないと思われるので。※私も含め。
ホットスワップできることが、USBの長所だったりしますし。

逆に言えば、リムーバブルディスクで書き込みキャッシュが無効になっているということは、
「ハードウェアの安全な取り外し」を絶対に行わなければならない、というわけではないということです。
※もちろん、やったほうがいいです。
通常は、リムーバブルディスクにデータを保存すると、すぐさま書き込み処理が行われるはずです。

デバイスのプロパティ

ディスクの書き込みキャッシュを有効にするかどうかは、デバイスのプロパティから設定変更できます
でも基本、設定変更する必要はありません。
理由は後述。

遅延書き込みエラーの原因

遅延書き込みは、ハードディスクへの書き込みデータを物理メモリにキャッシュすることで行われているので、
遅延書き込みエラーが出る場合は、ディスクの書き込みキャッシュを無効にしてしまえばいいような気がします。

でも、そういう問題ではありません。
なぜなら、設定上、ディスクの書き込みキャッシュが無効であっても、遅延書き込みエラーは発生するからです。

ディスクの書き込みキャッシュが無効になっていても、物理メモリを使わないわけではありません。
あくまでも、キャッシュとして積極的に使わないようにするだけで、優先度の問題です。

特に注意すべきは、遅延書き込み自体に問題があるからエラーが出ているのではなく、
遅延書き込みができないからエラーが出ている
という点です。
デバイスに対する書き込み動作に異常がなければ、
書き込みキャッシュが有効だからといって、不都合が発生することはありません。
書き込みキャッシュの設定とは、一旦切り離して考える必要があります。

遅延書き込みエラーが発生する状況において、ほぼ間違いなく言えるのは、
ファイルシステムのインデックスに正常なアクセスができていないということです。
実際、エラー内容に、

$Mftのためのデータを一部保存できませんでした。

として表示されることも多いです。
「$Mft」というのは、エクスプローラで表示することはできないかもしれませんが、
エクスプローラでも使用している、NTFSのインデックスであるMFTそのものです。

まとめると、遅延書き込みエラーは、当該デバイスのインデックスにアクセスできないという問題です。
従って、なぜインデックスにアクセスできないのかということを考える必要があります。

インデックスにアクセスできない場合の対処法

インデックスが壊れているのではありません。
インデックスにアクセスできないのです。

インデックスが破損していても、破損していることを確認できるのであれば、別のエラーが表示されます。
具体的には、「ファイルまたはディレクトリが壊れているため、読み取ることができません」というようなもの。
この場合は、「chkdsk」によって修復できるかもしれません。
でも、インデックスを読み取ることもできなければ、どうすることもできません。
ルールに基づいてデータをやりとりすることが一切できないからです。

インデックスを読み取ることができない原因は、ハードウェアにあることが多いです。
冒頭において、遅延書き込みエラーからすっきり復旧できたことがないと書いたのは、
ハードウェアの交換を要するケースが極めて多いからです。
かといって、エラーが表示された場所のハードウェアに原因があると断定することもできません。
ハードウェアとソフトウェアの両面から考える必要があります。

内蔵デバイスで発生する場合

SATA接続の内蔵ハードディスク等において遅延書き込みエラーが発生した場合は、
ハードディスクの故障が原因である可能性が極めて高いです。
たとえば、ハードディスクのセクタ読み取りエラーがインデックスにおいて発生すると、
遅延書き込みエラーが表示されます。

このような場合、まずはデータの救出を第一に考え、
その後、ハードディスクの動作確認や原因追究を行うべきです。

内蔵ハードディスクからのデータ救出

さもないと、取り返しのつかないことになるかもしれませんので。

最終的には、内蔵ハードディスクの交換が必要です。

外付けデバイスで発生する場合

USBメモリや外付けハードディスク等の外付けデバイスで遅延書き込みエラーが発生した場合は、
ちょっと状況が複雑になってきます。
考えられる原因が、内蔵デバイスに比べて多くなるからです。

内蔵デバイスの場合とは違って、最も疑わしいのはUSB周りです。
もちろん、内蔵されているハードディスク等が壊れている可能性もゼロではありませんが、
動作確認するにしても、順番としては後になります。

ドライバの不具合

これは、外付けデバイスの問題というより、それを使用しているパソコンの問題です。
該当する外付けデバイスを、一旦他のパソコンに接続して動作確認してみることをおすすめします。

主として問題になるのは、USBホストコントローラのドライバなので、
マザーボードのチップセットドライバを最新のものに更新することで、改善するかもしれません。

コントローラチップの故障

実は、外付けデバイス側のコントローラチップが正常動作していないことが、かなり多いです。
外付けハードディスクの場合については、下記参照。

外付けハードディスクの故障について

一方、USBメモリの場合は、フラッシュメモリチップから直接データを抜き出す必要があるため、
個人レベルで対応することは困難です。

記憶装置自体の故障

内蔵デバイスの場合と同様、内蔵ハードディスクやフラッシュメモリチップ自体に不具合があると、
正常なアクセスを行うことができなくなります。
当たり前ですね。
取り出せるだけのデータを抽出するしかありません。

いずれにしても、遅延書き込みエラーについては、手間取ることのほうが多いです。
原因の特定が難しいからです。
何かもっとうまい方法があればいいんですが。