최근에 ESXi 호스트의 하드 드라이브가 매우 경미하지만 꽤 심각한 손상을 입어 여러 가상 머신에 영향을 미쳤습니다. 꼭 복원하고 싶은 파일이 있는데, 당연히 일반 백업에서 삭제됐네요. 가장 최근 사본은 6개월 된 것입니다. 알고보니 그게 필요했는데... 이런.
세부 사항:
1) Parted Magic 부팅 가능 ISO에서 ddrescue(훌륭한 도구)를 사용하여 관련 가상 머신 드라이브의 99.98%를 복구했습니다. 불행하게도 이러한 오류는 거의 전적으로 최근 파일 쓰기로 인해 발생하는 것 같습니다. 따라서 이는 제가 가장 복구해야 할 섹터입니다.
2) 불량 섹터를 읽을 때 드라이브에 IO 오류가 발생하지만 가끔 이전 불량 섹터를 성공적으로 읽는 경우도 있습니다. 따라서 아직 복구가 가능합니다. 그보다 조금 더 나아가, 드라이브의 회전 속도가 느려지고 복구되는 일종의 중대한 오류가 발생할 수 있습니다. 아, 그리고 RPM 하락의 약 1/4이 다시 돌아오지 않습니다. (하드 재부팅이 필요하며 종료가 작동하지 않습니다.) 마지막으로 거의 모든 불량 섹터 읽기에서 기분 좋은 딸깍 소리가 들립니다.
3) 중요한 VM 디스크는 NTFS 형식입니다.
4) 일반적으로 손상된 NTFS 볼륨을 읽기 전용으로 마운트하고 필요한 파일이 포함된 폴더로 이동할 수 있습니다. 그러나 폴더를 "ls"하면 문제의 파일이 항상 IO 오류를 발생시키는 것 같습니다. 폴더의 다른 파일에서는 IO 오류가 발생하지 않습니다.
5) ntfsinfo/etc를 사용해 보았습니다...정확히 필요한 것 같지만...파티션이 전혀 열리지 않습니다. (일반적으로 "설치"가 그렇듯 좌절스럽습니다)
6) 파일은 Excel 2003 시대의 XLS 파일이므로 원시 디스크 이미지를 검색하기 위한 문자열을 제공할 수 있는지 확실하지 않습니다. (어쩌면 6개월 된 버전의 일부일까요?)
나는 정말로 debugfs와 같은 것을 사용하고 싶습니다. 그러나 매뉴얼 페이지에 따르면 ntfs 도구가 파티션을 열 수 있는 한 해당 작업을 수행할 수 있습니다. 특히 IO 오류가 순전히 파일의 메타데이터에 있는 것인지, 파일 내용을 복사할 수 있을 만큼 디렉토리 레코드를 잘 복구할 수 있는지 알고 싶습니다. 최후의 수단으로, 내가 검색할 수 있는 부분적인 파일 내용이 있으면 좋을 것입니다.
이전에 (비교적 간단한) 커널 모듈을 작성했으므로 특수 NTFS 모듈을 컴파일하고 더 많은 디버깅 정보를 활성화(또는 추가)할 수 있었습니다. (파일은 적어도 며칠 동안 복구를 시도할 가치가 있었고...그 과정에서 멋진 것을 배웠습니다.)
어떤 충고?
편집하다:
추가 드라이브 오류 메시지:
/var/log/messages에는 확실히 많은 NTFS-fs 오류가 표시됩니다. 하지만 마침내 일반적으로 받는 처리되지 않은 감지 코드 메시지(sense key 0x3, ASC=0x11, ASCQ=0x4)를 번역하려고 애썼습니다. (이것은 "복구되지 않은 읽기 오류 - 자동 재할당 실패"로 해석되는 것 같습니다.)
드라이브가 회전하면 "scsi0:*BusLogic BT-958이 초기화되었습니다." 메시지. Linux SCSI 드라이버인지, ESXi 드라이버인지, 아니면 드라이브 자체가 드라이브 회전을 중지하기로 결정했는지는 확실하지 않습니다. Linux 드라이버인 경우에는 스핀다운을 피하기 위한 드라이버. 전원 주기가 필요한 회전수 저하로 인해 전체 구출 프로세스가 더욱 고통스러워졌습니다.
편집 2:
관련 파일이 포함된 디렉터리를 "lsing"한 직후 "end_request: I/O 오류, dev sda, 섹터 7238859" 로그 메시지와 함께 해당 섹터에 대한 ddrescue 작업을 찾습니다. 저는 현재 기회를 잡고 성공할 경우 해당 섹터를 라이브 디스크에 다시 쓸 계획입니다. 이런 식으로 문제가 있는 파일을 천천히 다시 빌드할 수도 있습니다. 그럼에도 불구하고 대부분의 복구 가능한 불량 섹터는 20회 미만의 재시도만으로 복구됩니다... 지금까지 150회 이상의 재시도... *한숨*
편집 3:
필요한 파일에 있는 "ls"의 섹터 오류로 인해 완전히 비협조적입니다(밤새 1000번 이상 시도했지만 성공하지 못했습니다). "ls"를 실행할 때 이것이 단지 메타데이터이기를 바랍니다. :)
대부분의 ddrescue 사본을 가지고 있지만 설치할 수 없습니다(또는 파일 없이 설치할 수 없습니다). 손상된 드라이브는 대부분의 경우 올바르게 마운트됩니다. 아마도 손상된 드라이브의 IO 오류로 인해 "설치"가 작동 중인 이미지로 돌아가게 됩니까?
**편집 4:**
지금은 포기했고 추가 조언을 기다리고 있습니다. 드라이브를 제거하고 상자를 다시 만들었습니다. 혹시라도 문제가 생길 경우를 대비해 드라이브를 보관하겠습니다.
답변1
내 경험에 비추어 볼 때 몇 가지 참고할 사항이 있습니다.
- (이유)HD 액세스를 시도하는 동안 이상한 소리가 들리고 임의의 디스크 위치에 (다소) 문제가 없다면 근본 원인은 전자 장치가 아닌 디스크 표면에 있을 가능성이 높습니다. 불행하게도 이것은 슬픈 일입니다. 아이디어. "그냥" 전자 장치인 경우 데이터의 대부분 또는 전부를 복구할 수 있는 기회가 있을 수 있습니다.
- (불량 섹터)아직 수행하지 않았다면 웹에서 디스크 제조업체의 부팅 가능한 진단/복구 도구를 검색하여 다운로드하고 부팅한 후 심층 테스트를 실행하고 불량 섹터를 다시 매핑해 보십시오. 이것이 무료 방법 중 최고입니다. 불량 섹터는 커지는 경향이 있습니다. 따라서 2314번째 읽기 시도 후 파일 덩어리를 캡처하더라도 이러한 시도는 근처의 불량 섹터를 증가시켜 효과적으로 속도를 늦출 가능성이 높습니다. 다른 부분을 복구할 수 있는 기회 파일.
- (NTFS 복원)MS Windows 기본 도구처럼 NTFS 파일 시스템을 복구할 수 있는 것은 없습니다. NTFS 이미지를 탑재할 수 없는 경우(전체 디스크가 아닌 파티션을 탑재하려고 하는지도 확인하세요!)
testdisk
Linux에서 비슷한 방법을 시도해 볼 수 있지만 실패할 경우 Windows가chkdisk
도움이 될 수 있습니다. 가상 머신 아래에 Windows가 설치되어 있는 경우 획득한 원시 이미지를ddrescue
해당 가상 머신에서 지원하는 형식(예:VDI
또는VMDK
)으로 변환하고 이를 VM에 추가한 후 명령줄 모드에서 Windows를 시작하여 파일 시스템을 복구할 수 있습니다.VBoxManage convertfromraw <filename> <outputfile>
--format VDI|VMDK|VHD
VirtualBox를 사용하는 경우 해당 이미지를 변환하여 지정된 출력 형식을 얻는 명령을 선택할 수 있습니다 .
답변2
이것은 귀하의 상황에 적용될 수도 있고 적용되지 않을 수도 있지만 최후의 수단 중 하나는 "동결 방법"입니다. 바라보다손상된 하드 드라이브에서 데이터 복구: "동결 트릭"이 방법에 대해 논의해 보겠습니다.