일부 불량 블록이 포함된 대용량 파일 복구

일부 불량 블록이 포함된 대용량 파일 복구

LVM이 포함된 SSD가 있고 하나의 LV는 80Gb Win7 VM .vdi 파일 전용입니다.

1층 fs은 입니다 ext4.

새 SSD를 설치하고 마이그레이션에서 새 LV를 설정한 후 이전 SSD에서 복사하는 데 실패합니다.

Input Output Err No.5 

cp, 에 실패했습니다 rsync.dd

빨리 살펴보세요

dmesg

[ 5829.294651] sd 2:0:0:0: [sdb] tag#14 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
[ 5829.294653] sd 2:0:0:0: [sdb] tag#14 Sense Key : Medium Error [current] 
[ 5829.294654] sd 2:0:0:0: [sdb] tag#14 Add. Sense: Unrecovered read error - auto reallocate failed
[ 5829.294656] sd 2:0:0:0: [sdb] tag#14 CDB: Read(10) 28 00 51 50 f9 47 00 00 08 00
[ 5829.294658] blk_update_request: I/O error, dev sdb, sector 1364261191 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 

자체 테스트로 smartctl인해 LBA가 실패함

badblocks6개의 불량 블록이 표시되었으며 추가 검사를 통해 모든 불량 블록이 .vdi 파일에 속하는 debugfs것으로 확인되었습니다 .inode

정상적으로 시작될 수 있는 현재 가상 머신을 제외하고 이 LV에는 아무것도 없습니다 virtualbox(가상 머신도 복사되지 않습니다).

따라서 불량 블록이 가상 머신의 파일 시스템 중 거의 사용되지 않는 부분에 있고 (아직은) 그것에 대해 신경 쓰지 않지만 그날이 올 것이라고 가정해 보겠습니다.

이제 Win7 VM이 마음에 들지 않는다고 Linux 상자를 비난할 수는 없지만 감상적인 이유만으로 이 늙은 여자를 구하고 싶습니다.

0 채우기 블록을 기본값으로 설정하고 읽기 오류가 발생하면 다음 블록으로 점프하여 .vdi를 복원하는 방법이 있습니까?

방금 발견했습니다

https://serverfault.com/questions/489696/recovering-a-file-with-bad-blocks-in-the-middle

내가 이것을 입력하는 동안... 이것을 시도해 보세요

답변1

U&L에서는 찾아보고 답변을 못했는데,서버 장애사본 1개가 제공되었습니다.

따라서 다른 사람들이 사용할 수 있도록 여기에 솔루션을 남겨 두겠습니다. U&L에 사기가 있는 경우 알려주시면 삭제하겠습니다.

해결책은 간단하다

dd if=Win7.vdi of=~/mnt/Win7.vdi bs=4k conv=noerror,sync

블록 크기가 올바른지 확인한 후.

이제 모든 것이 괜찮습니다.

관련 정보