Linux btrfs 목록에서 존재하지 않는 파일 시스템을 제거하는 방법은 무엇입니까?

Linux btrfs 목록에서 존재하지 않는 파일 시스템을 제거하는 방법은 무엇입니까?

btrfs를 시험해 보고 있습니다. 나는 학습에 큰 도움이 되는 몇 가지 실수를 저질렀습니다!

다양한 장치(sdX, 루프, 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 "매직 넘버"가 있는지 확인하기 위해 각 장치와 각 파티션을 검사합니다. 루트 데이터 구조.

그런 다음 내 경우에 오류가 표시되는 디스크에서 hexedit를 사용했는데 확실히 _BHRfS_M이전 실험에서 나온 BTRFS 매직 넘버(예: ASCII 문자열)가 있었습니다.

문자열의 몇 문자를 "**"(16진수 편집도 사용)로 덮어쓰는 것만으로 매직 넘버를 알아냈고, 잘못된 항목이 마법처럼 사라졌습니다!

관련 정보