ドキュメントを読むと、新しいデータがログに書き込まれるため、もはやその場で更新されないようです。技術的にCoWファイルシステムと同じ「原子性」を達成します。
それでは、data = journalを使用するext4よりもCoWファイルシステムをより「原子的」にする方法は何ですか?
1つが他のものよりも多くの衝突安全を提供するという理論や実証されたケースはありますか?
それとも、CoWはより良いパフォーマンスを提供する「実装の詳細」と見なすことができますか?パフォーマンスの問題により、data = journalはデフォルト設定ではありません。
答え1
data = journalで実行することは、すべてのデータを書き込むという点でCOWとは異なります。二重毎回 - ログからトランザクションがコミットされ、ファイルシステムにチェックポイントされ、ログから解放されます。 COWファイルシステムは、書き込みごとに新しいブロックを割り当て、これらの新しいブロックを書き込み、トランザクションをコミットして(最終的に)古いブロックを解放します(モジュールへのスナップショット)。
デフォルトでは、data = journalをジャーナル構造のファイルシステムモードにするSMRドライブ用に開発されたext4パッチシリーズがあります。ここでは、ジャーナルは非常に大きく、メタデータとデータページはRAMに固定されていません。ログのブロックは、ファイルシステムがログ内で「いっぱいになった」ログが古いトランザクションをチェックする必要があるまで、ファイルシステムでチェックされず、長時間そこに存在する可能性があります。これにより、ブロックは最終的にファイルシステムに書き込まれるか、新しいトランザクションに書き戻されます。
このSMRパッチシリーズは、以下で提供されます。
https://github.com/tytso/ext4-patch-queue/blob/master/series