このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

目次

ジャーナリング

  • ジャーナルを残すこと。
  • データ自身ではなく、処理(トランザクション)の内容が記録する。
  • データの一般性や整合性が取れた時点で不要になる。
  • データ復旧時のロールバック*1やロールフォワード*2に利用される。
    • ロールバックやロールフォワードはトランザクション単位で考慮・実行される。
  • ジャーナルデータはメモリ上のバッファに一旦格納する。この情報がディスクに書き出されない場合、障害時にそのデータが失われる。このため、システム要件に応じてバッファのディスク書き出しのタイミングを検討・調整する。
    • しかし、書き出し頻度が高いとオーバーヘッドも高くなるので、トレードオフを検討する。
  • ジャーナルはトランザクション単位に整合性を保障するために、トランザクションの途中で障害が発生した場合、終了していないトランザクションは破棄され、処理が失われる。
    • 1つのトランザクションの単位が大きいとトランザクションの途中で障害が発生する可能性が高くなるため、トランザクションはあまり長く取らないに検討する必要がある。

ジャーナリングを備えたシステム例

ext3ファイルシステム

  • ext3ファイルシステムはジャーナリング機能を備えており、ファイルI/Oもトランザクションとして考えられる。
    • ただし、Oracle Databaseなどとは異なり、トランザクション終了時にバッファの情報をディスクに書き出すわけではないので、バッファにある最新データがロスとする可能性がある。
      • つまり、ext3ファイルシステムのジャーナリングはベストエフォートである。
  • デフォルトでは5秒に1回書き出されるが、データ破損が許容できない場合には、この間隔を縮めることを検討する。
  • fsckコマンドにより、ジャーナリングによる復旧が行われる。

参考文献

  • 『絵で見てわかるITインフラの仕組み』


*1 ジャーナルを読んで実データの情報を過去に戻すこと。
*2 ジャーナルを読んで実データの情報を先に進めること。