Linux btrfs リストから存在しないファイルシステムを削除するにはどうすればいいですか?

Linux btrfs リストから存在しないファイルシステムを削除するにはどうすればいいですか?

私は btrfs を試しています。いくつか間違いを犯しましたが、それは学習には良いことです!

さまざまなデバイス (sdX、loop、lvm など) 上に複数の btrfs ファイルシステムを作成しました。これらのテスト中に、btrfs ファイルシステムの一部であるデバイスの一部またはすべてを (突然) 削除しました (最初に fs がアンマウントされました)。

しかし、コマンドはbtrfs show依然としてファイルシステムの UUID とデバイスのリストを表示します。デバイスを削除する前に実行すべきだったことは理解していますbtfrs device del...

しかし、btrfs は処理するファイルシステムのリストをどこに保存するのでしょうか? どこかに conf ファイルがあるのでしょうか? btrfs-tools の特別なコマンドがあるのでしょうか?

ウィキやチュートリアルを読んでも、包括的な答えは得られませんでした... 故障したファイルシステムを回復してマウントできると言われていますが、mount -o recovery /dev/yourBTFSvolume /mount/pointそれはメタデータ/データと関連デバイスがまだ存在することを意味しますが、ここではそうではありません。

ここではデータの回復を試みているのではなく、btrfs 管理をクリーンアップしたいだけです。

答え1

何が起こっているのかを知るために、コードを調べました。btrfs filesystem showコマンドを使用してすべてのデバイス上のすべてのファイルシステムを表示すると、 内のすべてのデバイスとパーティションがスキャンされます/proc/partitions。各デバイスと各パーティションは、デバイスまたはパーティションの先頭から 0x10040 オフセットで BTRFS の「マジック ナンバー」と関連する有効なルート データ構造があるかどうかを確認するために検査されます。

_BHRfS_M次に、自分の状況で間違って表示されていたディスクに対して hexedit を使用したところ、以前の実験から確かに BTRFS マジック ナンバー (ASCII 文字列) がそこにありました。

私は、文字列のいくつかの文字を「**」で上書きし、これも hexedit を使用することで、その魔法の数字を正確に特定しました。すると、間違ったエントリが魔法のように消えました。

関連情報