불량 섹터가있는 HDD 복구 : dd vs gddrescue


11

인터넷 어딘가에서 나는 gddrescue 가 문제가 발생한 섹터에서 수행되는 디스크 읽기의 양을 구별 할 수 있다는 점 에서 dd 보다 우수하다는 것을 읽었 습니다. 이것이 사실입니까?

시간 dd if = / dev / sda skip = 900343967 of = a.bin count = 4 iflag = direct conv = noerror, sync

dd :`/ dev / sda '읽기 :
2 + 0 레코드의 입력 / 출력 오류 2 + 0 레코드
출력
1024 바이트 (1.0 kB), 18.6057s, 0.1 kB / s 4 + 0 레코드 의
3 + 1 레코드 2048 출력 바이트 (2.0kB) 복사, 18.6707s, 0.1kB / s

실제 0m18.672s
사용자 0m0.000s
sys 0m0.004s

Btw, 직접 깃발이 정말 도움이됩니다. 그렇지 않으면 4에서 1 섹터 만 읽을 수 있습니다 (vs 3/4와 함께). 그러나 전송 속도가 눈에 띄게 느려집니다 .이 플래그가 없으면 5MB / s 대 25MB / s 입니다. 어쨌든 지금은 gddrescue (ddrescue) 부분에 대해 ..

시간 ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin

/ dev / sda에서 b.bin으로 2048 바이트를 복사하려고합니다.
시작 위치 : infile = 460976 MB, outfile = 0 B
블록 크기 복사 : 1 하드 블록
하드 블록 크기 : 512 바이트
Max_retries : 0
직접 : 예 스파 스 : 아니오 분할 : 잘라 내기 없음

Ctrl-C를 눌러
구조 중단
: 1536B, 오류 크기 : 512B , 현재 속도 : 53B / s ipos : 460976MB, 오류 : 1, 평균 속도 : 53B / s opos : 1536B,
마지막으로 읽은 시간부터 : 0 초
완료

실제 0m18.736s
사용자 0m0.004s
sys 0m0.000s

위에 표시된 것처럼 실행하는 데 정확히 동일한 시간이 걸렸습니다. 예상대로-같은 통계 : 3/4. 그러나 dd (conv = sync)에 대해 문제가있는 섹터를 0x00 으로 채울 수 있지만 gddrescue 에이 기능이없는 것 같습니다. 대신, 문제가 발생한 부분을 해당 위치에 쓰지 않고 문제가 발생한 섹터를 건너 뛰고 다음 다음 섹터로 계속 진행합니다 (출력 파일에 해당 섹터 위에 이미 데이터가 기록 된 경우 덮어 쓰지 않습니다. 때로는 바람직하지 않을 수도 있음) ). gddrescue가 있는 블록 장치 에서 -t (잘라 내기 ) 옵션 이 어떻게 작동하는지 잘 모르겠습니다.(0x00으로 완전히 덮어 쓸 것 같지만) 일반 파일에서는 예상대로 전체 파일을 오프셋 크기 (예 : -o1) 내에서 자르지 않고 잘립니다. 따라서 그것은 dd sync 와 다소 유사 하지만 전체 출력 장치 / 파일을 덮어 쓸 준비가되어 있으면 identicle 기능 만 모방하는 것과 동일합니다.

자세한 옵션이 존재하고 불량 섹터 / 블록을 기록하는 기능 덕분에 gddrescue 가 더 나은 선택 인 것 같습니다. 두 앱 모두 동일한 매개 변수로 시작되었다는 점에 유의해야합니다.

의 출력

diff? .bin

비어 있음 (종료 0). 파일이 정확히 동일 함을 의미합니다.

이제 이것은 내가 이해 하지 못하는 부분입니다 .

dd 는 작은 읽기 및 쓰기를 수행하므로 오류가없는 항목에서도 느립니다. 오류가없는 항목을 최대한 많이 읽는 대신 드라이브의 잘못된 부분을 씹는 데 많은 시간을 소비하고 다시 어려운 작업을 수행합니다.

그게 다 뭐야? 특히 " 이 부분은 오류없는 내용을 최대한 많이 읽는 것보다 드라이브의 잘못된 부분을 씹는 데 많은 시간을 소비한다 . 위의 그림과 동일한 시간이 걸렸습니다 (데이터의 아주 작은 부분을 검사했지만 중요합니까?).

gddrescue 는 "불량 섹터"에서 다시 읽기 양을 제어해야하는 -r 스위치를 제공 하지만 dd-r0 과 함께 실행되는 것 같습니다 (동일한 시간이 소요됨 ). 그렇다면이 옵션은 단지 "후 처리"를위한 것입니까? 내가에서 얻고 것은 원래 모두이다 DDgddrescue가 실행 것으로 보인다 -R0DD 하지 않는 것 씹는 더 이상 잘못된 부분을 통해 gddrescue (그들은 둘 것 정지 15 ~ 18에 대한 나쁜 블록 초는주고받습니다, 그래서 거래는 무엇입니까, 어떻게 gddrescue가빠릅니까 ???)

또한 -D 옵션 (출력 파일에 동기 쓰기 사용)은 무엇입니까? 수행 된 일부 테스트와 차이가 없습니다.

누구나 전체에 대해 의견을 말할 수 있습니까? 감사.

답변:


6

인용 저자가 어떻게 결론을 내 렸는지 잘 모르겠습니다. 그가 올바른지 아닌지 토론하고 있지 않습니다. 단지 그 경험이 없습니다.

반면에,이 진술과 관련하여 ...

gddrescue는 문제가있는 섹터에서 수행 된 디스크 읽기 양을 구별 할 수 있다는 점에서 dd보다 우수합니다.

gddrescue를 사용하는 실제 "적어도"이유는 gddrescue가 반복적 인 읽기 / 쓰기 시도에서 출력을 자르지 않기 때문입니다. gddrescue는 dd를 중지시키는 특정 읽기 오류와 관련하여 완전 자동입니다.

인용 된 저자는 정확할 수도 있지만 그렇지 않을 수도 있습니다. 그러나 전체 진술은 gddrescue의 요점을 놓치고 있습니다.

업데이트 : dd와 gddrescue의 자세한 차이점.

dd conv = noerror, 오류 발생 후 계속 진행되지만 불량 블록은 건너 뜁니다. 동기화 옵션을 추가해도 건너 뛰는 대신 0을 넣습니다. dd를 사용하여 동일한 출력을 사용하여 다른 읽기를 수행하는 경우 이전에 복구 한 모든 항목을 덮어 쓰거나 잃게됩니다.

gddrescue는 오류 후에도 계속 진행됩니다. 불량 블록에서 부분 생산량을 복구 할 수 있으며, 섹터 단위로 블록 섹터로 돌아갑니다. gddrescue는 양호한 블록, 불량 블록 및 불량 블록의 섹터 별 섹터와 함께 자세한 오류 로그를 유지합니다. 다시 읽기를 시도하면 gddrescue가 잘리고 (잘라 내기) 추가로 복구 된 데이터를 추가합니다.

전체 블록을 100 % 읽을 수없는 경우 두 도구를 사용하더라도 명심하십시오. 여전히 데이터가 없습니다. 블록의 일부 섹터를 읽을 수 있으면 gddrescue에서 더 많은 데이터를 얻을 수 있습니다.


글쎄요. gddrescue 가 완전 자동 인 것에 대해서는 dd도 conv = noerror 로 완전 자동 입니까? "반복 된 읽기 / 쓰기 시도에서 출력 자르기"부분을 자세히 설명해 주시겠습니까? gddrescue 가 처음에 읽지 못한 섹터를 재검토하라는 명령을 받았을 때 "후 처리"를 의미 합니까?
XXL

귀하의 질문을 반영하여 답변을 업데이트했습니다.
JM Becker

하드 드라이브와 광 매체에서 gddrescue를 여러 번 사용했습니다. 읽을 수없는 영역을 복구하려고 시도하는 것이 장점입니다. 또한 중지했다가 나중에 다시 실행할 수 있으며 중단 된 지점에서 바로 선택할 수 있습니다.
Chris Thompson

1
@TechZilla - gddrescue은 단지 처럼뿐만 아니라, 불량 블록을 건너 DD는 않습니다. 위에서 쓴 것처럼 0으로 패딩 (conv = sync)은 gddrescue 가 누락되고 때로는 유용한 옵션입니다 (추가 노력으로 / dev / zero를 사용하여 수동으로 수행 할 수 있습니다. gddrescue 출력 당 생성 된 불량 섹터 ). 복구 측면에서 gddrescuedd의 차이 는 없으며 gddrescue 는 그 점에서 다른 것을 수행하지 않습니다. 왜? 때문에와 동일한 블록 크기 들은 같은 양의 데이터를 복구한다.
XXL

@TechZilla – 처리 할 섹터의 양이 블록 크기 보다 더 많이 선택된 경우의 유일한 차이점입니다 . 이것은을을 비교 한 당신에게 눈에 띄게 속도 일에 대한 능력을 줄 것이다 DD 로, DD 할 수있는 정적 비 변수 섹터 크기 만 작동합니다. gddrescue , 다른 한편으로는, 당신이 그것을 지시대로 첫 번째 많은 분야로 읽을뿐만 아니라 그 덩어리를 선언합니다 나쁜 단일 블록 내부가 의심스러운 경우와이 완료되면 - 후 모드로 스위치를 혼란 영역을 검사 섹터 크기가 최소 블록 크기에 도달 할 때까지 점차 감소
XXL

2

하드 디스크가 제조 된시기와 제조업체, 그리고 최신 하드 디스크를 사용하는 펌웨어 버전에 따라 불량 섹터가 감지되면 펌웨어에서 해당 섹터가 제거되고 드라이브가 불량 섹터를 건너 뛰는 것을 알게됩니다. 따라서 불량 섹터에서 HDD를 "구출"한다는 개념은 그와 관련하여 문제가 될 수 있습니다. 현재 불량 섹터에 유효한 데이터가 있었는지 여부에 대한 질문은 당신이 찾고있는 사례 솔루션 인 것 같습니다.

grc.com에는 spinrite 6이라는 일부 소프트웨어가 있으며 불량 섹터로 HDD를 수정할 수 있다고 주장합니다. 유료 소프트웨어이며 시도한 적이 없습니다. 특히 hdd를 "복구"하려고 시도하고 실제로 설명 된대로 작동하는 경우에 대해 읽어 볼 가치가 있습니다. spinrite 6에 대한 grc.com의 FAQ는 30 일 환불 보증이 있으며 시험판이나 무료 버전이 없음을 나타냅니다. 참고 : 나는 grc.com과 제휴하지 않으며 귀하의 상황에 따라 그것을 추천하지 않습니다. 나는 그것이 존재하고 광고 된대로 작동 할 수도 있다는 것을 알고 있습니다. 단지 내 말을하지 마십시오. 주의자.

문제가 발생한 섹터에서 수행 된 디스크 읽기 양을 구별 할 수 있다는 점에서 gddrescue가 dd보다 "우수"한지 평가하는 것과 관련하여 불량 섹터에 대한 모든 읽기 수는 비 섹터로 표시되므로 펌웨어 목록에 보관 된 불량 섹터 목록의 기능 섹터)는 gddrescue 또는 dd를 정 성적으로 사용하는 데 유용하지 않은 것 같습니다.

https://secure.wikimedia.org/wikipedia/en/wiki/Gddrescue#Recovery-oriented_variants_of_dd 에서 dd (Unix) 웹 페이지를 읽는 것이 유용 할 수 있습니다.

http://www.myfixlog.com/fix.php?fid= 에서 UBCD, dd-rescue 및 P2 eXplorer를 사용하여 손상된 하드 드라이브의 이미지를 만드는 방법을 살펴 보는 것도 도움이 될 것입니다 . 21

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.