地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Linux】xfs_repirのフェーズ

xfs_repirで出てくるフェーズをそれぞれ調べてみる。

docs.kernel.org

access.redhat.com

xfs_repair /dev/sdb6
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
- process known inodes and perform inode discovery...
- agno = 0
- agno = 1
- agno = 2
- process newly discovered inodes...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 1
- agno = 2
Phase 5 - rebuild AG headers and trees...
- reset superblock...
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem ...
- traversal finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done

Phase 1 - find and verify superblock...

スーパーブロックの発見と検証: ファイルシステムのスーパーブロックを見つけて、その整合性を確認します。スーパーブロックにはファイルシステム全体のメタデータが含まれています。

Phase 2 - using internal log

内部ログの使用: 内部ログを使用してファイルシステムの状態を再構築します。 zero log...: ログのクリア。ログ領域をゼロクリアして初期化します。 scan filesystem freespace and inode maps...: ファイルシステムの空き領域とinodeマップをスキャンして、不整合をチェックします。 found root inode chunk: ルートinodeチャンク(ルートディレクトリのinodeを含むチャンク)を見つけます。

Phase 3 - for each AG...

  • アロケーショングループ(AG)ごとの処理:
    • scan and clear agi unlinked lists...: 各AGのunlinkedリストをスキャンしてクリアします。これは、削除されたがまだ解放されていないinodeのリストです。
    • process known inodes and perform inode discovery...: 既知のinodeを処理し、新しいinodeを発見します。
      • agno = 0: AG 0の処理。
    • process newly discovered inodes...: 新たに発見されたinodeを処理します。

Phase 4 - check for duplicate blocks...

重複ブロックのチェック: setting up duplicate extent list...: 重複するエクステントのリストを設定します。 check for inodes claiming duplicate blocks...: 重複するブロックを主張するinodeをチェックします。 agno = 0: AG 0のチェック。

Phase 5 - rebuild AG headers and trees...

AGヘッダーとツリーの再構築: reset superblock...: スーパーブロックをリセットします。

Phase 6 - check inode connectivity...

inodeの接続性をチェック: resetting contents of realtime bitmap and summary inodes: リアルタイムビットマップとサマリーinodeの内容をリセットします。 traversing filesystem ...: ファイルシステムをトラバースします。 traversal finished ...: トラバースが終了しました。 moving disconnected inodes to lost+found ...: 接続されていないinodeを lost+found ディレクトリに移動します。

リンクカウントの検証と修正: inodeのリンクカウント(ファイルやディレクトリの参照回数)を検証し、必要に応じて修正します。

終わりに

ソースコードを探したが見つけられなかった...個人のForkみたいなのは見つけられたが公式のやつはどこにあるんだろう。