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가 실패함
badblocks
6개의 불량 블록이 표시되었으며 추가 검사를 통해 모든 불량 블록이 .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
블록 크기가 올바른지 확인한 후.
이제 모든 것이 괜찮습니다.