하드 디스크 URE의 세분성 (복구 할 수없는 읽기 오류)은 무엇입니까?


8

ure; HDD에서 URE 가 발생하는 경우 1 비트, 1 바이트 또는 섹터 크기 (512 바이트 또는 4096 바이트 AF)를 느슨하게합니까? 그리고 가능하다면 그 이유를 설명해주세요.

배경 : 여기서 문제는 하드 디스크에 데이터를 읽는 데 문제가있을 때 발생합니다. 디스크가 모든 데이터를 잃어버린 상태 (DISK FAIL)로 인해 디스크가 완전히 실패하는 것은 확실하지만, 여기에서 요구 하는 경우는 디스크 의 작은 부분 만 손실되었을 때입니다 (URE, 수정할 수없는 읽기 오류).

URE 관련 정보를 찾았지만 확실하지 않습니다. 이는 드라이브 내부에서 발생하는 일, 즉 ECCs 수정과 같은 직접적인 사용자 상호 작용에서 숨겨지는 것 때문에 내가 사용자로서 액세스하는 항목 인 섹터와 관련하기가 어렵 기 때문일 수 있습니다.

hdd가 데이터를 읽는 데 문제가 있다고 상상해 봅시다.

이 상황에서 반드시 다음 중 하나를 의미해야합니다.

  • (a) 섹터의 일부 비트를 읽을 수 없거나
  • (b) 모든 비트를 읽을 수 있지만 체크섬 테스트를 통과하지 못합니다 (물론 섹터 4096 바이트는 8 * 4096 비트가 아니라 오류 검사 / 수정을위한 일부 추가 비트 / 바이트 (예 : 패리티 비트) ) (씨) ????

나는 우리가 (a)와 (b)의 조합이 발생하고 4096 섹터 바이트의 신뢰할만한 재구성을 수행 할 수없는 상황에 처할 때 반드시 그들 모두가 파산한다고 가정하는 것은 과도하다고 생각하지 않습니다 실제로, 우리가 interd hdd error correction logic을 알고 있었다면, 대신에 "뭔가는 체크 아웃되지 않은 것으로 보이고, 적어도 1,2,3, n 비트 / 바이트의 블록 데이터가 잘못되었다"고 말할 수 있습니다. ". 만약이 영역에서 "hello, hello ....., hello"ASCII 바이트 문자열을 중복 저장했다면 실제로 "hello, hello ...."를 공정하게 계승하여 "... Uellohello ... "(예 :"e "->"U ")

URE의 세분성은 무엇입니까?

업데이트 : 불량 섹터에 대한 아이디어를 입력하는 의견이 있습니다 (이것은 URE 이벤트의 세분성을 반영한다고 제안했습니다. 그것은 의심스럽지 않고 제안하고 질문에 대답하는 데 사용될 수 있습니다. 읽을 수없는 섹터 (여기 /unix/1869/how-do-i-make-my-disk-unmap-pending-unreadable-sectors ) 에 대해 묻는 질문 으로 인해 일부에서는 시나리오는 URE의 경우 손실 된 데이터 사이에 실제로 더 희미한 선이 있습니다.


일반적으로 헤드가 파손 된 경우 한 번에 수만 개의 블록이 손상됩니다. 먼지 등으로 인해 블록 근처에 접근하면 손상이 확산 될 수 있습니다. 따라서 더 큰 영역의 일부만큼 간단하게 재구성 할 수는 없습니다.
JamesRyan

@JamesRyan 좋은 힌트, 그것은 항상 악화 될 수 있습니다. 어쩌면 나는 단지 가장 나쁜 경우에 대해 묻고 있었을 것입니다 (섹터를 느슨하게하거나 부분적으로 좋은 답변, 섹터 데이터의 일부에 따라 섹터 데이터의 일부로 해결됨). 읽을 수없는 오류 (및 그 지속성, 즉 임의의 비트 썩음, 헤드 충돌 영향)의 발생에 대해 더 잘 아는 것도 고려해야합니다. 내가 불필요하게 더 이상 질문을 복잡하게하지 않도록 그러나 우리는 여기에 대답 할 질문을합니다
humanityANDpeace

답변:


8

하드 드라이브의 오류 수정 코드는 각 하드웨어 섹터와 관련된 추가 데이터 청크입니다. 기록하는 동안 드라이브 펌웨어는이 데이터를 계산하여 사용자의 데이터와 함께 기록합니다. 펌웨어를 읽는 동안 ECC는 데이터와 함께 ECC를 읽고 함께 확인합니다.

일반적인 하드 드라이브의 경우 하드웨어 섹터는 512 바이트입니다. 고급 포맷 드라이브의 경우 4K 바이트입니다 (인터페이스에서 드라이브가 512 바이트 또는 4K 바이트 섹터를 나타내는 지 여부는 중요하지 않습니다 (예 : 512e 대 4kn)).

읽기 후 검사 결과에는 기본적으로 세 가지 가능한 결과가 있습니다.

  • 섹터를 오류없이 읽었습니다. 이것은 현대 하드 드라이브에서는 실제로 일반적이지 않습니다. 비트 밀도는 ECC 작업에 의존합니다.

  • 수정 가능한 오류로 섹터를 읽었습니다. 위에서 암시 된 것처럼 이것은 드문 일이 아닙니다. 예상됩니다. 드라이브는 오류 수정이 적용된 데이터를 사용자에게 반환합니다.

  • 섹터를 읽었지만 "잘못된 비트"가 너무 많습니다. 오류를 수정할 수 없습니다.

후자의 경우 드라이브는 일반적으로 어떤 내용도 반환하지 않습니다. 오류를 나타내는 상태 만 반환합니다. 그 값이 무엇인지는 물론 어떤 비트가 의심되는지 알 수 없기 때문입니다. 따라서 전체 섹터 (ECC 비트 및 모두)는 신뢰할 수 없습니다. 불량 섹터의 어느 부분이 나쁜지, 그 내용이 무엇인지 결정하는 것은 불가능합니다. ECC는 전체 섹터 컨텐츠에 대해 계산되는 "게스트 탈트"이며, 일치하지 않으면 일치하지 않는 전체 섹터입니다.

SpinRite는 드라이브가 "수정 불가능한 오류"라고 표시하더라도 데이터를 반환하는 "유지 관리 읽기"기능을 사용하여 불량 섹터를 계속해서 반복해서 읽습니다. DavidPostill에 의해 연결된 설명에서 말했듯이, 그것은 오류가없는 것 (실제로는 "수정 가능"일 가능성이 더 높습니다)로 성공할 수 있습니다. 또는 본질적으로 리턴 된 비트를 평균하여 섹터 내용에 대한 합리적인 추측을 추론 할 수있다. 드라이브보다 ECC를 사용하여 오류를 정확하게 수정하는 기능이 더 이상 없습니다. 수학적으로 불가능합니다.


4096Byte 페이로드 내부의 데이터 자체가 4000Bytes 페이로드와 다른 96Byte ECC의 조합 인 경우 여전히 수학적으로 불가능합니까? (예를 들어 데이터 저장소 레이아웃에서 복구 능력을 기꺼이 희생하려고했기 때문에)?
humanandANDpeace

내 추측으로는 데이터 내부에 더 이상 중복이 없다는 암시 적 가정 하에서 만 수학적으로 불가능하다는 것입니다. -그리고 좋은 답변!
humanandANDpeace

1
확실한. 이 시점에서 이는 신뢰할 수없는 또 다른 채널 일 뿐이지 만 충분한 중복이있는 경우 드라이브에서 오류를 수정할 수 없다고 생각하면 OS의 표준 디스크 드라이버가 섹터 내용을 전혀 제공하지 않습니다. RAID-5 및 유사한 패리티 체계는 기존 섹터의 데이터 필드가 아닌 "외부 계층"에서 동일한 작업을 수행합니다.
Jamie Hanrahan

os 드라이버가 "요청에 따라"모든 요청을 되돌려주는 "캐치"는 확인되지 않은 데이터조차도 문제가되지 않습니다. Windows가 아닌 사용자가이 문제에 대해 구체적으로 물어 보았습니다. unix.stackexchange.com/questions/228254/…
humanityANDpeace

3

URE의 세분성은 무엇입니까?

복구 불가능한 읽기 오류 (URE)는 섹터 읽기 오류입니다. 오류없이 섹터를 읽을 수없는 경우 섹터가 1 바이트인지 또는 모든 섹터 바이트인지는 중요하지 않습니다.

세분성은 섹터 크기 입니다.

1 바이트 만 실패하더라도 일반적으로 전문 소프트웨어를 사용하지 않고 해당 섹터에서 데이터를 가져 오지 않습니다 .


고장난 섹터의 데이터를 복구 할 수 있습니까?

SpinRite의 말 :

SpinRite는 완벽하게 읽을 수없고 다른 유틸리티 소프트웨어가 완전히 버리는 섹터의 대부분의 데이터를 복구 할 수 있습니다.

SpinRite가 읽을 수없는 데이터를 복구하는 방법을 참조하십시오 .


기권.

나는 어떤 식 으로든 SpinRite 와 제휴 하지 않았으며 결코 사용하지 않았습니다.


1
나는 이것이 좋은 대답이라고 생각하는 경향이 있습니다. URE의 경우 반드시 섹터를 완전히 풀어야한다는 데 동의하지 않기 때문에 (즉, 4k의 모든 데이터 이후) hdd가 여전히 가치가있는 "나쁜 부문". SpinWrite 인수의 표현은이 아이디어를 유지하므로 대답은 더 통찰력을 제공합니다.
humanandANDpeace

2

헤드가 올바른 트랙을 찾을 수 없거나 서보 트랙이 손상되어 올바른 섹터를 찾을 수없는 경우와 같이 정말 심각한 하드웨어 오류가없는 경우 "비트를 읽을 수 없음"과 같은 것은 없습니다. . 두 경우 모두 적어도 읽을 수없는 전체 섹터가 있어야합니다.

그렇지 않으면 항상 비트가 반환되고 잘못된 비트 일 수 있습니다. 오류 수정 코드가 나오는 곳입니다. 데이터 섹터와 ECC 비트의 올바른 조합이 일부 대수 규칙을 준수하도록 모든 섹터에 몇 가지 추가 ECC 비트를 추가합니다. 모든 비트가 올바르게 읽 히면 코드의 유효성이 검사되고 데이터를 직접 전달할 수 있습니다. 적은 수의 비트를 잘못 읽은 경우 ECC 코드를 사용하여 정확히 어느 비트를 결정하고 수정하여 모든 데이터를 올바르게 전달할 수 있습니다. 더 많은 수의 비트를 잘못 읽은 경우 ECC 코드 는 오류 가 있음 감지 할 수 있지만 더 이상 어떤 비트가 잘못된 지 알아낼 수 있는 충분한 정보가 없습니다 . 수정할 수없는 읽기 오류입니다. 만약매우 많은 수의 비트가 잘못 읽 히면 코드가 "실수로"올바르게 유효성 검사되고 드라이브가 손상된 데이터를 반환하지만 ECC 비트가 충분하면이 발생 가능성을 원하는만큼 작게 만들 수 있습니다.

따라서 부분적인 읽기 오류가 있었지만 오류가 발생한 위치를 파악하기에 충분한 정보를 사용할 수있는 경우 오류를 수정할 수 있으며 컴퓨터에 오류가 전혀 표시되지 않습니다. . 이것은 실제로 지속적으로 발생합니다. 수정되지 않은 오류는 어떤 데이터 비트가 유효하고 어떤 비트가 유효하지 않은지를 알아낼 수 없을 때 발생하며, 오류 수정 코드는 섹터에 대해 계산되므로 섹터 단위로 발생합니다.


1

대답하여 들여다 영감 데 https://superuser.com/a/969917/160771 에서 https://superuser.com/users/337631/davidpostill

나는 다소 확장 된 대안 적 답변을 제시하고 싶다. 먼저 하드 디스크와 해당 펌웨어가 URE 이벤트의 원천, 즉 데이터를 읽을 수없는 이벤트 인 것이 사실입니다. 또한, 데이터는 512 또는 4096 바이트의 사용 가능한 데이터와 50 또는 각각의 100 바이트의 추가 데이터의 섹터에서 디스크에 기록되어 오류 검사 및 수정이 가능하다는 것이 사실입니다.

따라서 URE에 대해 말하면 하드 디스크 섹터와 관련하여 자연스럽게 발생합니다. 불량 섹터 라는 용어 는 분명히 어느 정도 연결되어 있지만 URE 섹터가있을 때의 상황과 동일하지는 않습니다.

오류없이 읽을 문제가있는 섹터가 반드시 의미가있는 것은 아닙니다. 실제로 4096 개의 데이터가 모두 손상되었을 수 있지만 (각 섹터에 추가 된 중복 ECC 데이터를 통해) 안정적으로 수정 가능한 것보다 1 비트 만 손상되었을 수 있습니다.

hdd보다 약간의 바이트 만 수정할 수있는 경우에는 4096 바이트의 일부가 의미있는 데이터를 갖는 변경 사항이 있습니다.

예를 들어, 4096은 2 개의 ASCII 문자 바이트를 나타냅니다. 그러면 모자 1 문장 또는 그 이상의 문장이 완전히 손상 될 수 있습니다. 또한 모든 두 번째 또는 세 번째 문자가 생략되었을 수 있습니다. URE 이벤트에서 4096의 데이터가 손실되면 해석에 따라 다르며 데이터에 따라 다릅니다. 데이터 자체에는 ECC 셸의 다른 계층이 있었으므로 이미지를 복구 할 수 있습니다.

따라서 대부분의 펌웨어는 URE 섹터를 불량 섹터와 다르게 처리하는 것이 좋습니다.

일반적으로 섹터 자동 재 매핑은 섹터를 쓸 때만 발생합니다. 이것의 논리는 아마도 섹터를 정상적으로 읽을 수 없더라도 데이터 복구 방법으로 읽을 수 있다는 것입니다. ( https://en.wikipedia.org/wiki/Bad_sector에서 )

또는 그 범위 내에서, 섹터의 일부에는 여전히 사용 가능한 데이터가 포함되어있을 수 있습니다.


"아마도 독창적 인 연구를 포함" "전문가의 관심이 필요합니다"와 같은 글이 표시되어 있는지 참고 특정 문은 "표창장은 필요로했다"으로 표시됩니다. 그것이 쓰여진 방식 ( "아마도"??)은 또한 고품질의 소스 자료와 함께 할 수있는 것이 아니라 누군가가 추측하고있는 것처럼 들린다.
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.