ZFSインテントログは、通常のトランザクショングループ経路を通じて最終データブロックがコミットされる前にZFSが確認した同期操作の耐久記録を保持することで、電源喪失後に確認済みのNAS書き込みを復元します。
再起動後、ZFSはこれらのログレコードを再生して中断された操作を完了できます。これによりアプリケーションに対するストレージの約束は保持されますが、すべての非同期書き込みを回復したり、関連しないハードウェアやファイルシステムの損傷を修復したりするわけではありません。
同期書き込みはどのような約束をしますか?
同期書き込みは、操作に耐久性のあるリカバリレコードが作成されるまで成功を報告しないようストレージシステムに要求します。同期書き込みは完了の確認前にZILを通過しますので、クライアントはクラッシュ後の確認を信頼できます。
データベース、NFSワークロード、仮想マシン、およびfsyncを使用するアプリケーションはこの保証に依存することがあります。これらは必要な書き込みが安全であるとストレージが報告した後に独自のトランザクション状態を進めます。
非同期書き込みは異なる約束に従います。これらは後のトランザクショングループコミットまで揮発性メモリに残ることができるため、同期耐久性契約を破ることなく、突然の電源喪失後に未確認の変更が消える可能性があります。
ZILとトランザクショングループはどのように連携していますか?
ZFSは通常のダーティデータをトランザクショングループにまとめ、効率的にメインプールに書き込みます。インテントログは同期操作の保留を記録し、関連するトランザクショングループが安全にコミットされるまでの短期間のリカバリ経路として機能します。
ログはファイルデータの永続的な保存場所ではありません。トランザクショングループがメインストレージツリーに到達すると、以前のインテントレコードは不要になり、そのスペースは再利用可能になります。
この分離により、ZFSは選択された書き込みに対して低遅延の耐久性を維持しつつ、メインプールをより大きく効率的なトランザクショングループコミットに整理できます。
電源喪失後、インテントログはどうなるのですか?
NASが再起動すると、ZFSはプールをインポートし、確認済みの同期操作が最後のコミット済みトランザクショングループに含まれていないかをチェックします。必要に応じて、回復時にインテントログがリプレイされます。
リプレイはログに記録された操作を新しい一貫したトランザクショングループに再発行します。このプロセスは、どの確認済みトランザクションが失われたかをアプリケーションが推測することなく、確認済みの書き込みを復元します。
回復範囲は意図的に小さく、ログは最近の同期操作をカバーし、プール全体を対象としません。ZFSは依然としてコミットされたコピーオンライトツリーにより広範なファイルシステム状態を管理します。
ZILが別のSLOGデバイスを使用すると何が変わりますか?
すべてのプールにはインテントログ機構がありますが、オプションの別ログデバイスは耐久性のあるレコードをメインのデータvdevから分離します。低遅延のSLOGは、メインプールが小さな強制書き込みの永続化に遅い場合に同期コミットを短縮できます。
SLOGは一般的な書き込みキャッシュではなく、正常な動作中は通常読み取られません。メイントランザクショングループは依然として正規のプールに権威あるデータを書き込みます。
高速なSLOGは、意味のある同期書き込みを行うワークロードにのみ役立ちます。メディアストリーミング、通常の読み取り、および主に非同期のファイルコピーではほとんど効果が見られないかもしれません。
なぜ電源喪失保護と遅延が容量より重要なのですか?
インテントログデバイスは、システムが電源を失ったときに確認済みのレコードを保持する必要があります。電源喪失保護は、そうでなければ揮発性デバイスキャッシュにのみ残る可能性のあるSLOG書き込みを保護します。
持続的な小さな書き込み遅延とフラッシュ動作は、大きな公称容量よりも重要です。アクティブログは通常、保留中の同期操作の短いウィンドウをカバーし、大容量の長期データ層として機能するわけではありません。
遅いまたは不誠実なデバイスは同期書き込みを遅くしたり、耐久性の約束を損なう可能性があります。消費者向けSSDのバーストベンチマークは、障害時の安全な強制書き込み動作を証明しません。
インテントログで回復できないものは何ですか?
インテントログは、耐久性が約束されなかった非同期書き込みを再作成したり、意図的な上書きを元に戻したり、独立したバックアップコピーをオンラインのすべてのバージョンが破損した後に置き換えたりすることはできません。
また、悪いRAM、コントローラーファームウェアのバグ、不正なドライブフラッシュ、冗長性を超えたプールメンバーの故障、すでに有効な新しい状態としてコミットされたアプリケーションの破損を修正することはできません。
UPS、正しい書き込み順序、チェックサム、スナップショット、冗長性、バックアップは他の障害境界に対応します。ZILは特に中断をまたいだ確認済み同期インテントを保持します。
| コンポーネント | 主な役割 | 電源障害後に起こること |
|---|---|---|
| トランザクショングループ | 権威あるZFSツリーをコミットします | 最後の有効なコミット済みグループはマウント可能なままです |
| ZIL | 最近の同期インテントを記録します | 保留中の確認済み操作を再生できます |
| 別のSLOG | 低遅延の耐久ログデバイスを提供します | 再生が必要な場合にインテントレコードを提供します |
| バックアップ | 独立したリカバリバージョンを保存します | インテントログの範囲外の障害を回復します |
よくある質問
SLOGはZILと同じものですか?
いいえ。ZILはZFSのインテントログ機構です。SLOGは、これらのインテントレコードをメインプールに置く代わりに保存するためのオプションの別デバイスです。
SLOGはすべてのNAS書き込みを高速化しますか?
いいえ。主に耐久性のあるログコミットによって遅延が制限される同期書き込みに影響します。非同期書き込みや読み取りのワークロードは改善されない場合があります。
通常の操作中にZILは読み取られますか?
通常、ファイル読み取りのソースとしては使用されません。最後にコミットされたトランザクショングループに含まれていなかった確認済み同期操作があった場合、中断後に再生されます。
ZFSはファイルシステムの整合性を保つためにインテントログが必要ですか?
ZFSのコピーオンライトトランザクショングループは、一貫したコミット済みツリーを保持します。インテントログは、そのコミットポイント後に発生した確認済み同期操作のリカバリを追加します。
最終的な結論
ZFSのインテントログはすべての種類のリカバリを高速化するわけではありません。その正確な役割は、まだメイントランザクショングループに到達していない確認済みの同期操作を保存し、再生することです。低遅延で電源障害保護されたSLOGはこれらのコミットを高速化できますが、バックアップ、冗長性、チェックサム、スナップショット、UPSは異なる障害境界を引き続き保護します。
テック&AIハブ
もっと読む

Home AssistantはLAN接続とリモート接続でなぜパフォーマンスが異なるのですか?
LAN接続とリモート接続のHome Assistantセッションではネットワーク経路が異なります。リモート接続では、DNS、暗号化、WAN、プロキシやVPN、再接続処理による遅延が加わります。

Home AssistantはCGNATや二重NAT環境でも安定して動作しますか?
CGNATと二重NATは通常、ローカルでのHome Assistantの制御には影響しません。主に、リモートクライアントがホームネットワークへのインバウンド経路を確立する方法が変わります。

インターネット障害中、ネットワーク遅延はHome Assistantにどのような影響を与えるか?
インターネット接続の喪失とネットワーク遅延は異なる障害です。DNS、クラウド連携、ゲートウェイ、リモートクライアントが待機している間も、ローカルデバイスへの経路は高速なまま維持されることがあります。

