![Linux btrfs 목록에서 존재하지 않는 파일 시스템을 제거하는 방법은 무엇입니까?](https://linux55.com/image/50731/Linux%20btrfs%20%EB%AA%A9%EB%A1%9D%EC%97%90%EC%84%9C%20%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%ED%8C%8C%EC%9D%BC%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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진수 편집도 사용)로 덮어쓰는 것만으로 매직 넘버를 알아냈고, 잘못된 항목이 마법처럼 사라졌습니다!