それはこのように動作します:
ほとんどのオペレーティングシステムには、いわゆる「同期書き込み」を可能にするシステムコールがあります。これは、書き込み操作中に書き込みが完了した場合、ディスクにコミットされたことを保証することを意味します。
したがって、同期書き込みはキャッシュされません。完了するまでアプリケーションをブロックします。この種の操作は、ディスクが十分にアイドルになるまでOSメモリにデータを保持してからデータを書き込むキャッシュ書き込みより明らかに遅いです。
データベースソフトウェアなどの一部の重要なソフトウェアは、重要なデータの同期書き込みを実行します。これは、停電が発生した場合の半分の更新がデータベースの整合性に悪影響を与える可能性があるためです。
RAIDコントローラーはRAID-5書き込みで遅いことで有名なので、アプリケーションソフトウェアが多くの同期書き込みを使用する場合、これは問題になります。このため、RAID-5コントローラーには独自のキャッシュが装備されています。
RAIDコントローラーは、代わりにデータをキャッシュに書き込み、LIESをOSに書き込み、データを実際にRAIDキャッシュ内にあるのにディスクにデータをコミットしたことを伝えます。
しかし、データがまだRAIDコントローラーのバッファーにある間に電源が失われた場合はどうでしょうか?ディスク上に半分書き込まれた、おそらく一貫性のないデータがあるでしょう。
この動作は同期書き込みの目的に反すると言うかもしれません...キャッシュされた書き込みを許可しても、そもそもアプリソフトウェアは同期書き込みを要求しません。
妥協点は次のとおりです。RAIDコントローラーはまだデータをディスクにコミットしたOSにありますが、停電の場合にこの重要なデータを保護するために、RAIDコントローラーにはバッテリーがあり、電源がオンになるまでキャッシュをしばらく保持します復元されました。
そのため、電源が回復してディスクがスピンアップして初期化された後も、コントローラーはバッテリーのおかげでキャッシュにそのデータを保持し、ディスクへのトランザクションの書き込みを完了することができます。
みんな幸せです。
機能的で充電済みのバッテリーユニットがない限り、通常、RAIDコントローラーでは書き込みキャッシュを有効にできません。