하드디스크는 마그네틱 코팅이 되어 있는 플래터에 데이터를 저장하며, 이 플래터는 고속으로 회전하고 있습니다.
플래터가 회전하는 속도에 따라 7200 RPM(분당 회전수), 5400 RPM, 1000RPM, 15000RPM 등의 등급이 있습니다.
물론 물리적으로 회전수가 높은 하드디스크가 더 빠릅니다.
이런 회전수는 전송속도와 데이터 시크 타임과 관계가 있기 때문입니다.
데이터를 저장하는 플래터는 일반적으로 완벽하지 않습니다. 제조공정상에서 플래터의 결함(?)을 발견하여 미리 이 위치 (섹터 정보)를 등록시켜 놓았기 때문에 실제로 하드디스크를 사용하는 사용자는 플래터에 에러가 있는지 알 수 없습니다.
하지만, 하드디스크는 물리적인 부품이 많은 제품이기 때문에 사용중에 문제가 발생할 수 있습니다. 이런 문제중의 대표적인 것이 플래터의 어느 섹터에 문제가 발생하는 배드 섹터입니다.
실제로는 배드섹터(Bad Sector) 라는 용어보다는 복구할수없는에러(Uncorrectable error)가 더 맞는 표현입니다.
하드디스크는 컨트롤러에서 리드 또는 라이트 명령을 받으면, 해당되는 섹터를 읽거나 쓰기 위해 동작을 개시합니다. 하지만 한번에 데이터가 읽혀지지 않으면, 같은 섹터에 대해 여러 패러미터를 바꿔하며 같은 작업을 반복하게 됩니다.
물론 이것은 한계치가 있어서 보통 1 ~100 또는 133번 정도가 수행됩니다.
(이것은 하드디스크에 내장된 펌웨어의 개발 방향에 따라 한계값은 차이가 있습니다.)
이런 과정중에도 문제가 해결되지 않으면, 에러 코드를 반송하게 되는데, 이것은 Uncorrectable error가 됩니다. 이 에러는 컨트롤러 입장에서는 리드 에러와 라이트 에러로 나누어집니다.
물론 플래터에 실제로 문제가 있어서 읽거나 쓰여지지 않을수도 있지만, 그당시에 일시적인 문제로 읽거나 쓰는 것이 안될수 도 있습니다.
하지만, 하드디스크나 컨트롤러 입장에서는 어쨋든 간에 Uncorrectable error입니다.
일시적인 경우였다면, 나중에 스캔 프로그램으로 하드디스크를 검사해봐도 어떤 배드섹터도 검출되지 않을 것입니다
만약 실제로 어떤 섹터가 에러가 있었다면, 이것은 하드디스크가 정상적인 상황이라면 복구될 수 있습니다.
하드디스크는 일반적으로 스패어 섹터라는 것을 가지고 있습니다. 문제가된 섹터를 인지하게 되면, 차후 같은 섹터에 라이트가 들어갔을때 해당 섹터를 스패어 섹터로 치환시킵니다.
이런 과정을 Remap또는 Reassign이라고 부릅니다. 이렇게 치환 과정이 일어난 하드디스크는 역시 스캔프로그램에서 배드섹터가 검출되지 않습니다.
RAID 컨트롤러 입장에서도 하드디스크가 이런 섹터 치환 과정을 제대로 했다면, 해당 하드디스크를 Fail시키지 않습니다.
다만, 모든 하드디스크가 이런 치환 과정이 정상적으로 일어나는 것은 아닙니다.
하드디스크에 내장된 펌웨어에 문제가 있을때도 치환 과정에 문제가 발생하며,
기타 다른 이유로 인해 이런 치환 과정이 일어나지 못하거나, 혹은 일시적인 에러 현상이 계속되면 이것은 하드디스크의 Fail 원인이 됩니다.
왜냐하면, 배드섹터가 없더라도 계속 되는 에러는 Timeout을 유발시키기 때문입니다.
컨트롤러는 하드디스크에 명령을 내린후 시간을 카운트합니다. 일정 시간 (일반적으로 5초)안에 응답이 없으면, 해당 하드가 에러가 있다고 간주됩니다.
이런 에러가 계속 누적되면 Timeout 에러 역시 계속 발생하게 되며, 한계값을 넘게되면 하드디스크는 Fail됩니다.
배드섹터는 이런 Timeout을 유발시키는 원인중의 하나에 해당됩니다.
정상적인 하드라면, 배드섹터가 있더라도 일정 시간안에 읽거나 쓰지 못한다는 에러를 리턴합니다. 따라서, Timeout을 유발시켰다는 의미는 결국 하드디스크가 다운되었거나 어떤 내부 작업에서 계속 딜레이를 일으키고 있다는 원인이 됩니다.
일반적으로 하드디스크가 배드섹터가 발견되고, 이것이 컨트롤러로 리포트되면, 컨트롤러는 복구 작업을 수행할 수 있습니다.
RAID 1 / 5 / 50 / 6 / 60 등등의 복구 레벨의 RAID볼륨은 다른 셋의 하드디스크에서 데이터 정보를 가져올 수 있습니다. 이런 정보를 가져와서 문제가 된 섹터에 라이트를 다시하면 하드디스크의 Reassign과정이 일어나기 때문입니다.
이것을 일반적인 하드디스크 단위의 리빌딩과는 달리 스팟 리빌딩(Spot Rebuilding)이라고 부릅니다.
결론 :
- 배드섹터가 하드디스크에 발생할 여지는 항상 있다.
- 스캔프로그램으로 찾을 수 없는 배드섹터가 존재한다. (그 당시에만 에러가 발생하는 경우)
- 배드섹터가 있더라도 스패어 섹터로 치환될 수 있다.
- 치환 과정이 일어나지 못하는 하드디스크만 실제로 문제가 있는 하드디스크이다.
- 하드디스크도 다운이나 일시 딜레이를 가지는 경우가 있다.
- Timeout의 주 원인은 배드섹터 발생 상황이다. (일시적인 경우도 포함)
* 인터넷 등에서 물리 또는 논리 배드섹터에 대해 이야기하는데.... 기본 원리와는 약간 맞지 않는 이야기입니다.
* 로우 포맷은 배드섹터를 치료하지 못합니다.
하드디스크를 초기화하기 때문에 적절하지 못한 상황에서는 오히려 문제가 될 수 있습니다.
* 배드섹터에 있던 데이터는 어쨋든 잃어버리게 됩니다.
단일 하드디스크일 경우 치환 과정은 섹터 매핑을 하는것이지 데이터는 살릴 수 없습니다.
복구 레벨이 지원되는 RAID와 함께 사용되었다면, 다른 셋의 하드디스크에서 데이터를 가져와서 복구할 수 있습니다.
* 스팟 리빌딩과 하드디스크 리빌딩은 다른 의미입니다.
플래터가 회전하는 속도에 따라 7200 RPM(분당 회전수), 5400 RPM, 1000RPM, 15000RPM 등의 등급이 있습니다.
물론 물리적으로 회전수가 높은 하드디스크가 더 빠릅니다.
이런 회전수는 전송속도와 데이터 시크 타임과 관계가 있기 때문입니다.
데이터를 저장하는 플래터는 일반적으로 완벽하지 않습니다. 제조공정상에서 플래터의 결함(?)을 발견하여 미리 이 위치 (섹터 정보)를 등록시켜 놓았기 때문에 실제로 하드디스크를 사용하는 사용자는 플래터에 에러가 있는지 알 수 없습니다.
하지만, 하드디스크는 물리적인 부품이 많은 제품이기 때문에 사용중에 문제가 발생할 수 있습니다. 이런 문제중의 대표적인 것이 플래터의 어느 섹터에 문제가 발생하는 배드 섹터입니다.
실제로는 배드섹터(Bad Sector) 라는 용어보다는 복구할수없는에러(Uncorrectable error)가 더 맞는 표현입니다.
하드디스크는 컨트롤러에서 리드 또는 라이트 명령을 받으면, 해당되는 섹터를 읽거나 쓰기 위해 동작을 개시합니다. 하지만 한번에 데이터가 읽혀지지 않으면, 같은 섹터에 대해 여러 패러미터를 바꿔하며 같은 작업을 반복하게 됩니다.
물론 이것은 한계치가 있어서 보통 1 ~100 또는 133번 정도가 수행됩니다.
(이것은 하드디스크에 내장된 펌웨어의 개발 방향에 따라 한계값은 차이가 있습니다.)
이런 과정중에도 문제가 해결되지 않으면, 에러 코드를 반송하게 되는데, 이것은 Uncorrectable error가 됩니다. 이 에러는 컨트롤러 입장에서는 리드 에러와 라이트 에러로 나누어집니다.
물론 플래터에 실제로 문제가 있어서 읽거나 쓰여지지 않을수도 있지만, 그당시에 일시적인 문제로 읽거나 쓰는 것이 안될수 도 있습니다.
하지만, 하드디스크나 컨트롤러 입장에서는 어쨋든 간에 Uncorrectable error입니다.
일시적인 경우였다면, 나중에 스캔 프로그램으로 하드디스크를 검사해봐도 어떤 배드섹터도 검출되지 않을 것입니다
만약 실제로 어떤 섹터가 에러가 있었다면, 이것은 하드디스크가 정상적인 상황이라면 복구될 수 있습니다.
하드디스크는 일반적으로 스패어 섹터라는 것을 가지고 있습니다. 문제가된 섹터를 인지하게 되면, 차후 같은 섹터에 라이트가 들어갔을때 해당 섹터를 스패어 섹터로 치환시킵니다.
이런 과정을 Remap또는 Reassign이라고 부릅니다. 이렇게 치환 과정이 일어난 하드디스크는 역시 스캔프로그램에서 배드섹터가 검출되지 않습니다.
RAID 컨트롤러 입장에서도 하드디스크가 이런 섹터 치환 과정을 제대로 했다면, 해당 하드디스크를 Fail시키지 않습니다.
다만, 모든 하드디스크가 이런 치환 과정이 정상적으로 일어나는 것은 아닙니다.
하드디스크에 내장된 펌웨어에 문제가 있을때도 치환 과정에 문제가 발생하며,
기타 다른 이유로 인해 이런 치환 과정이 일어나지 못하거나, 혹은 일시적인 에러 현상이 계속되면 이것은 하드디스크의 Fail 원인이 됩니다.
왜냐하면, 배드섹터가 없더라도 계속 되는 에러는 Timeout을 유발시키기 때문입니다.
컨트롤러는 하드디스크에 명령을 내린후 시간을 카운트합니다. 일정 시간 (일반적으로 5초)안에 응답이 없으면, 해당 하드가 에러가 있다고 간주됩니다.
이런 에러가 계속 누적되면 Timeout 에러 역시 계속 발생하게 되며, 한계값을 넘게되면 하드디스크는 Fail됩니다.
배드섹터는 이런 Timeout을 유발시키는 원인중의 하나에 해당됩니다.
정상적인 하드라면, 배드섹터가 있더라도 일정 시간안에 읽거나 쓰지 못한다는 에러를 리턴합니다. 따라서, Timeout을 유발시켰다는 의미는 결국 하드디스크가 다운되었거나 어떤 내부 작업에서 계속 딜레이를 일으키고 있다는 원인이 됩니다.
일반적으로 하드디스크가 배드섹터가 발견되고, 이것이 컨트롤러로 리포트되면, 컨트롤러는 복구 작업을 수행할 수 있습니다.
RAID 1 / 5 / 50 / 6 / 60 등등의 복구 레벨의 RAID볼륨은 다른 셋의 하드디스크에서 데이터 정보를 가져올 수 있습니다. 이런 정보를 가져와서 문제가 된 섹터에 라이트를 다시하면 하드디스크의 Reassign과정이 일어나기 때문입니다.
이것을 일반적인 하드디스크 단위의 리빌딩과는 달리 스팟 리빌딩(Spot Rebuilding)이라고 부릅니다.
결론 :
- 배드섹터가 하드디스크에 발생할 여지는 항상 있다.
- 스캔프로그램으로 찾을 수 없는 배드섹터가 존재한다. (그 당시에만 에러가 발생하는 경우)
- 배드섹터가 있더라도 스패어 섹터로 치환될 수 있다.
- 치환 과정이 일어나지 못하는 하드디스크만 실제로 문제가 있는 하드디스크이다.
- 하드디스크도 다운이나 일시 딜레이를 가지는 경우가 있다.
- Timeout의 주 원인은 배드섹터 발생 상황이다. (일시적인 경우도 포함)
* 인터넷 등에서 물리 또는 논리 배드섹터에 대해 이야기하는데.... 기본 원리와는 약간 맞지 않는 이야기입니다.
* 로우 포맷은 배드섹터를 치료하지 못합니다.
하드디스크를 초기화하기 때문에 적절하지 못한 상황에서는 오히려 문제가 될 수 있습니다.
* 배드섹터에 있던 데이터는 어쨋든 잃어버리게 됩니다.
단일 하드디스크일 경우 치환 과정은 섹터 매핑을 하는것이지 데이터는 살릴 수 없습니다.
복구 레벨이 지원되는 RAID와 함께 사용되었다면, 다른 셋의 하드디스크에서 데이터를 가져와서 복구할 수 있습니다.
* 스팟 리빌딩과 하드디스크 리빌딩은 다른 의미입니다.
-->