ext4에서 변환한 후 Btrfs가 강제로 읽기 전용/손상됨

ext4에서 변환한 후 Btrfs가 강제로 읽기 전용/손상됨

최근에 btrfs-convert를 사용하여 lvm 볼륨의 ext4 파일 시스템을 btrfs로 마이그레이션했습니다. 나중에 설치 후 몇 가지 문제가 있음을 발견했습니다.

디스크에 데이터를 쓰는 것과 관련된 작업을 수행 dmesg하면 scrub. 불행히도 그 중 하나는 ext2_saved롤백용입니다. csum 오류가 발생한 파일을 삭제하면 문제가 해결될 것이라고 생각합니다. 그래서 백업과 기타 파일을 삭제했습니다.

다시 시작한 후,scrub 아니요오류가 발견되었습니다. 하지만 설치 시 다음과 같은 메시지가 나타납니다 bdev /dev/mapper/my-volume errs: wr 0, rd 0, flush 0, corrupt 608, gen 0. 이제 디스크에 쓸 수 있는 것 같습니다(파일 이름을 바꾸는 것이 작동하지만 추가 테스트는 하지 않았습니다).

이 메시지가 나를 걱정하게 해야 합니까, 아니면 무시해도 됩니까? 아니면 더 나은 방법은: 원인을 어떻게 찾을 수 있습니까? 스크러빙 및 btrfs check --repair에서도 문제가 발견되지 않았습니다.


고쳐 쓰다:

Memtest를 실행하고 불량 블록이 있는지 확인했습니다. 두 테스트 결과 모두 깨끗했습니다. 또한 커널을 .dll로 업데이트했습니다 4.9.9-gentoo. 커널을 컴파일할 때CONFIG_BTRFS_FS_CHECK_INTEGRITY활성화 옵션(일명 Btrfs with integrity check tool compiled in (DANGEROUS)) 현재 이 옵션은 비활성화되어 있습니다.

그 후 Chrome을 실행해 보았습니다. 언급된 디스크에서 뭔가 작업을 수행한 것 같습니다. 잠시 후 dmesg에서 다음 내용을 읽었습니다.

*Some stacktrace*    
btrfs_finish_ordered_io:someline errno=-95 unknown
forced readonly

제거로 인해 다음 메시지가 남았습니다.

cleaner transaction attach returned -30

또한 체크섬 오류가 계속 발생했을 때 이러한 오류가 발생했지만 이제는 해결되었습니다. 이제 나는 그 이유를 찾을 수 없습니다.

스크럽을 다시 실행했는데 오류가 0개 발생했습니다. btrfs check --repair /dev/mapper/my-volume지금 실행하면 fixed discount file extents for some inodes업데이트 이전의 동일한 명령에서 아무 것도 발견되지 않았기 때문에 이것은 분명히 새로운 오류입니다.

데이터를 읽기 전용으로 다른 디스크로 옮긴 다음 포맷해야 할 수도 있습니다.

고쳐 쓰다:

읽기 전용 모드에서 데이터를 복사하는 것이 효율적이고 데이터가 손실되지 않는 것 같습니다. ext4에서 btrfs로의 변환이 아직 완벽하게 작동하지 않은 것 같습니다.


시스템 메시지:

Kernel: 4.4.39-gentoo; now: 4.9.9-gentoo
btrfs-progs v.4.9

답변1

btrfs는 장치별 통계를 유지하고 이를 디스크에 영구적으로 저장합니다. 수동으로 인쇄할 수 있습니다 btrfs device stats device|mountpoint. 또한 마운트에도 인쇄됩니다(적어도 0이 아닌 경우).

따라서 당신이 보는 것은 과거에 손상이 발견되었다는 것뿐입니다. -z 플래그를 사용하여 카운터를 지울 수 있습니다 btrfs device stats -z /dev/mapper/my-volume.

물론 처음에 손상을 일으킨 원인을 찾는 것이 가장 좋습니다. btrfs 변환 오류인지, 아니면 계속 손상을 일으킬 수 있는 무언가(신뢰할 수 없는 하드웨어)가 있는지 확실하지 않습니다. 확실하지 않다면 기억력 테스트를 해보는 것을 추천합니다.

(물론, 특히 btrfs와 같은 비교적 새로운 파일 시스템을 사용할 때는 백업을 해야 합니다.)

관련 정보