Debian wheezy 설치의 내 홈 파티션은 암호화된 LVM 볼륨입니다. ext3 입니다. 오늘 초, /home
읽기 전용 파일 시스템으로 인해 트리 에 있는 파일에 쓰려는 시도가 실패했다는 이상한 메시지가 터미널 창에 표시되었습니다 . 재부팅했는데 /dev/sda1 is reported as clean. fsck.ext3
자동으로 실행되고 종료 코드 8과 같은 장치가 없다고 보고하는 오류 메시지가 표시되었습니다 /dev/mapper/sda1_crypt
. 유지 관리 셸로 이동하여 에 로그를 쓰려는 시도가 있었다고 말했습니다 /var/log/fsck/checkfs
.
해당 로그는 다음과 같습니다.
[Timestamp]
fsck from util-linux 2.20.1
/dev/mapper/sda1_crypt: Super blocks need_recovery flag is clear, but journal has data.
/dev/mapper/sda1_crypt: Run journal anyway
/dev/mapper/sda1_crypt: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
(i.e., without -a or -p options)
fsck died with exit status 4
나는 달렸다
$ fsck -vnM /dev/mapper/sda1
수많은 illegal block #nnnn (mmmmmmmmm) in inode ppppppp IGNORED
메시지가 지나갔다.
too many blocks in Inode somenumberhere
그런 다음 추가 패스를 실행하여 둘 이상의 inode가 요구하는 블록을 해결합니다.
그런 다음 출력됩니다.
Pass 1B: Rescanning for multiply claimed blocks
조금 지나니 벽이 생겼어요
Illegal block number passed to ext2fs_test_block_bitmap somenumberhere for multiply claimed block map
그 뒤에는 I 노드 anothernumber에서 2개의 Multiply 요청 블록이 이어졌습니다: [5 및 8 블록 번호 목록]
그런 다음 다음과 같은 여러 연을 얻었습니다.
[ 3828.181915] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 3828.182462] ata1.01 BMDMA stat 0x64
[ 3828.183810] ata1.01 failed command: READ DMA EXT
[ 3828.185889] ata1.01 cmd 25/00:08:08:10:9c/00:00:29:00:00/f0 tag dma 4096 in
[ 3828.185891] res 51/40:00:09:10:9c/40:00:29:00:00/f0 Emask 0x9 (media error)
[ 3828.190071] ata1.01 status: { DRDY ERR }
[ 3828.192153] ata1.01 status: { UNC }
이것들이 뒤따랐다
[ 3830.509338] end_request: I/O error, deb SDA, sector 698093577
[ 3830.509841] Buffer I/O error on device dm-3, logical block 87261184
Error reading block 87261184 (Attempt to read block from filesystem resulted in short read) while reading I node and block bitmaps. Ignore error? no
fsck.ext3: Can't read an block bitmap while retrying to read bitmaps for /dev/mappersfa1_crypt
/dev/mapper/sda1_crypt: ******* WARNING: Filesystem still has errors *******
e2fsck: aborted
/dev/mapper/sda1_crypt: ******* WARNING: Filesystem still has errors *******
그리고 파일 시스템에 여전히 오류가 있다는 경고와 함께 중단되었습니다.
내 질문은 다음과 같습니다
내 데이터가 폐기되었나요? (나의 엄격한 백업 정책이 요즘 제대로 지켜지지 않고 있어 우주의 벌을 받고 있는 것이 틀림없다.)
나는 지금 무엇을 할 수/해야 하는가?
내가 이미 나쁜 짓을 한 걸까?
흔들림이 멈출 때까지 누군가 나를 붙잡아 줄 것인가?
편집하다
나는 또한 내 지역 LUG 메일링 리스트에 질문했습니다. 거기서 얻은 조언은 ddrescue로 드라이브 이미지를 찍고 해당 이미지의 복사본에 대해 fsck를 실행하라는 것이었습니다. 그것은 건전한 것 같고 상황을 악화시킬 것 같지 않습니다. 이것이 현재의 공격 계획이며, 더 나은 제안이 있을 때까지 기다리고 있습니다.
답변1
하드디스크 자체에 문제가 있는 것 같습니다. ("짧은 읽기" 등) 그렇다면 dmesg | tail
아마도 일부 I/O 오류가 표시될 것입니다.
이를 확인하는 또 다른 방법은 badblocks -n
문제가 있는 파티션에서 실행하는 것입니다. 아니면 전체 디스크에 있는 것이 더 좋습니다. 무엇을 테스트하든 마운트 해제해야 합니다. 대형 최신 디스크에서는 몇 시간이 걸립니다. 마운트해야 할 파티션에 없어서는 안 될 항목이 있는 경우 먼저 이동식 미디어나 네트워크 볼륨에 복사해 두세요.
디스크를 미러링하라는 제안도 좋습니다. badblocks -n
디스크가 모든 섹터를 강제로 읽도록 하면 디스크가 문제 블록을 재배치할 수 있기 때문에 일종의 "라이트" 버전 검사입니다 badblocks -n
. badblocks -n
의심스러운 섹터는 읽기가 거의 불가능하고 디스크에 쓰기를 시도하면 이동할 수 있을 정도로만 불량한 섹터로 표시되기 때문에 더 효과적입니다. 하지만 디스크에 구조 작업을 견딜 수 있을 만큼 충분한 수명이 남아 있는 경우 추가 읽기 패스로는 디스크를 완료하는 데 충분하지 않습니다.
fsck
디스크 이미지를 실행한다고 해서 모든 것이 복구될 것이라는 희망은 별로 없습니다 . 이 과정에서 섹터가 거의 손실될 것입니다. 즉, 일부 파일을 읽을 수 없거나 사용할 수 없을 정도로 손상될 수 있습니다. 예를 들어 JPEG는 손상된 데이터로 부분적으로 디코딩되지만 하단 ⅔이 잘린 JPEG는 유용하지 않을 수 있습니다.
내 데이터가 폐기되었나요?
아마도 그렇지 않을 수도 있습니다. 패스 badblocks -n
로 문제가 해결되는 경우도 있습니다. 그렇다면 여전히 HDD를 교체해야 합니다. 왜냐하면 디스크는 거의 시작할 수 없을 만큼 나쁜 상태가 될 수 있기 때문입니다.
내가 이미 나쁜 짓을 한 걸까?
"엄격함"이라는 단어의 의미를 잊어버린 것 외에는 그렇지 않습니다. :)
답변2
복원할 현재 백업 이미지가 있기를 바랍니다.
지금 보존하고 싶은 항목을 제한적으로 백업한 다음 디스크를 계속 사용할 수 있는지 확인하겠습니다. 제가 사용했던 한 가지 비결은 RAW 파티션 장치를 사용하여 /dev/null에 추가하는 것이었습니다. 적절한 옵션을 사용하면 읽을 수 없는 영역을 식별할 수 있습니다.