나는 Xubuntu 18.04에서 btrfs를 사용하여 LUKS 볼륨으로 설정한 120GB Samsung SSD를 가지고 있으며 오늘 오후에 부팅을 시도하고 Line을 마운트하려고 할 때 dmesg에서 이와 유사한 것을 발견할 때까지 제대로 작동했습니다(LUKS 비밀번호를 수락한 후). ):
[ 8023.426359] BTRFS info (device dm-0): disk space caching is enabled
[ 8023.426361] BTRFS info (device dm-0): has skinny extents
[ 8023.427820] BTRFS error (device dm-0): bad tree block start, want 120516247552 have 17642829462275766793
[ 8023.427828] BTRFS warning (device dm-0): failed to read tree root
[ 8023.459232] BTRFS error (device dm-0): open_ctree failed
"원하는" 값이 바이트 오프셋이라고 가정하면 합리적인 양을 넘어서는 것 같습니다. Ubuntu 19.04 플래시 드라이브로 부팅하고 rescue chunk-recover
111개의 복구 가능한 블록과 "블록 트리 복구 성공"을 보고하는 작업을 수행하려고 시도했지만 문제에 아무런 영향을 미치지 않았습니다. 블록 복구 프로세스를 다시 실행했는데 첫 번째 실행과 동일한 출력이 생성되었으므로 아무 작업도 수행되지 않는 것 같습니다.
무슨 일이 일어나고 있는지 확인하기 위해 하나를 시도했는데 rescue super-recover
이미 양호한 상태인 2개의 슈퍼 블록이 보고되었으며 아무런 조치도 취하지 않았습니다.
이 시점에서는 dd를 사용하여 일부 작업 저장소의 파일에 디스크를 백업합니다. 내 데이터(또는 그 중 적어도 일부)가 아직 거기에 있다는 것을 알고 있습니다. 이미지의 xxd 덤프를 넘기면 일반 텍스트 파일의 내용을 볼 수 있기 때문입니다.
최후의 수단인 것으로 알고 있는 이 작업을 시도했지만 check --repair
이 역시 작동하지 않았습니다. 설치에 실패한 dmesg의 오류와 유사한 오류가 발생했습니다.
enabling repair mode
Opening filesystem to check...
checksum verify failed on 120516247552 found 4D050B32 wanted 0EB4D74B
checksum verify failed on 120516247552 found 4D050B32 wanted 0EB4D74B
bad tree block 120516247552, bytenr mismatch, want=120516247552, have=17642829462275766793
Couldn't read tree root
ERROR: cannot open file system
중복이 아닌건 확실해요BTRFS 불량 트리 블록 시작
편집: 섹터 크기에 맞춰 다양한 위치를 가리키려고 시도했는데 inspect-internal dump-tree -b ...
모두 체크섬 불일치 오류가 발생했습니다. 이 사실을 발견했고 check --repair
120516247552에서 루트 트리를 읽으려고 할 때 다른 명령이 불평합니다. 이게 특정 증상인가요? 디스크의 모든 곳에서 체크섬이 실패하면 문제가 발생합니까? (하드웨어 오류?) 다시 말씀드리지만, 디스크 내용의 이미지를 만들 수 있었고 dd
그 안에 있는 일반 텍스트 데이터도 볼 수 있었고, 그게 다 쓰레기는 아니기 때문에 디스크가 유효한 데이터를 반환하지 않는다는 생각은 거의 불가능해 보입니다. .