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. 각 장치와 각 파티션을 검사하여 BTRFS "매직 넘버"가 있는지 확인하고 장치나 파티션 시작 부분의 0x10040 오프셋에서 발견된 유효한 루트 데이터 구조를 확인합니다.

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

나는 단순히 hexedit를 사용하여 문자열의 두 문자를 "**"로 덮어쓰고 잘못된 항목을 마술처럼 사라지게 함으로써 그 마법의 숫자를 고정시켰습니다!

관련 정보