10.2.6. ディスク書き込みキャッシュの無効の確認

オペレーティングシステムから fsync() を実行した場合でも、Java プログラム内から正しくデータを同期した場合でも、以下のような事象が発生します。

多くのシステムでは、ディスク書き込みキャッシュがデフォルトで有効になっています。つまり、オペレーティングシステムから同期した後であっても、データが実際にディスクに書き込まれる保証はありません。したがって障害が発生した場合は、重大なデータが失われることがあります。

一部の高価なディスクには、非揮発性、またはバッテリー駆動の書き込みキャッシュがあります。これらを使用した場合は、障害発生時に必ずしもデータが失われるわけではありませんが、テストが必要になります。

ディスクが高価な非揮発性キャッシュやバッテリー駆動キャッシュを備えておらず、ディスクが冗長アレイ (RAID など) の一部ではなく、データの整合性を重視している場合は、ディスク書き込みキャッシュが無効になっていることを確認してください。

ディスク書き込みキャッシュを無効にすると、突然パフォーマンスが低下する可能性があります。デフォルト設定で書き込みキャッシュが有効な状態でディスクを使用している場合、気付かずにデータの整合性が損なわれる可能性があります。このため、書き込みキャッシュを無効にして、ディスクを実際に確実に機能させて高速で稼働させる方法を考える必要があります。

Linux の場合は、IDE ディスク用の hdparm ツール、あるいは SDSI/SATA ディスク用の sdparm または sginfo で、ディスクの書き込みキャッシュ設定を検査または変更できます。

Windows の場合は、ディスクを右クリックし、プロパティーをクリックすると、設定を確認して変更できます。