손상된 하드 드라이브가 전체 시스템을 정지시키는 이유는 무엇입니까?


128

HDTune 및 HDDScan에서 확인 된 불량 블록이있는 것으로 알려진 하드 드라이브가 전체 시스템을 정지시키는 이유는 무엇입니까?

OS 드라이브가 아닙니다. 다른 SATA 포트에 연결되어 있으며 파일을 다른 건강한 드라이브로 복사하려고합니다.

거의 모든 손상된 하드 드라이브와 모든 Windows PC에서이 문제가 발생했습니다.

파일을 복사하는 데 사용하는 프로그램 (Windows 탐색기 등) 에서만 정지되는 것을 볼 수 있지만 대신 전체 PC가 손상되어 손상된 드라이브에서 파일을 복사하는 동안 웹을 탐색하거나 영화를 볼 수 없습니다.

긴 이야기.

나는 전기에 문제가있는 시골 지역에 살고 있습니다. 나는 스스로 UPS를 사용하고 있으며 내 하드 드라이브는 완벽합니다. 그러나 이웃 사람들은 종종 PC 문제에 대한 도움을 요청하며, 종종 전기 문제로 인해 하드 드라이브가 손상되었음을 알게됩니다. 물론, 손상된 드라이브를 교체 한 후에는 이웃 사람들에게 UPS를 구매할 것을 제안합니다.

손상된 드라이브에서 데이터를 검색하는 동안 PC가 완전히 정지되는 이유는 항상 궁금했습니다. 하드웨어 문제입니까? OS가 데이터를 읽는 방식에 의한 것입니까? Windows 고유의 것으로, * nix에서 경험하지 않습니까?

어쨌든, 지금부터는 전체 PC를 정지시키지 않고 다르게 작동하는지 확실하지 않지만 Windows 탐색기 대신 일부 전용 소프트웨어 (예 : Roadkil의 Unstoppable Copier)를 사용합니다.

도움을 요청하는 것이 아니라 교육적인 목적을위한 것이기 때문에 일이 왜 그렇게 작동하는지 알고 있습니다.


11
결함이있는 디스크를 더 이상 시스템 SATA 컨트롤러에 연결하지 않기 때문에 외장 USB 인클로저를 사용하면 도움이됩니다. 또한 마더 보드와 결함이있는 디스크 사이에 희생 가능한 하드웨어 계층을 추가하는 것이 좋습니다.
Matteo Italia

3
SATA에만 국한된 것은 아니며 IDE 드라이브도 마찬가지입니다. 또한 디스크가 손상되었다고해서 특히 전기 고장으로 인해 디스크가 손상된 경우 컨트롤러가 작동하지 않는 것은 아닙니다.
Chris H

받아 들인 대답은 훌륭하고 내가 말하려는 내용과 그 이상을 포함합니다. 기본적으로 당신은 SATA 컨트롤러를 당황스럽게 만들고 있습니다.이 컨트롤러는 매우 중요한 시스템 장치이며 Windows를 패닉 상태로 만듭니다. BIOS에서 AHCI / "hot-swap"을 활성화하면 상황이 개선되는지 궁금합니다.
Arthur Kay

답변:


170

SATA가 차선책 인 영역 중 하나입니다. 저장 장치 상호 연결 프로토콜 수준에 문제가 있으므로 실행중인 소프트웨어와 관련이 없습니다. 다른 파일 복사기 또는 다른 운영 체제를 사용해도 문제의 영향을 줄이기 위해 다른 시간 제한 값을 설정 하려고 시도 하는 것 (하드웨어 및 펌웨어에 따라 가능하거나 불가능할 수 있음 )을 제외하고는 마술처럼 개선 되지 않습니다. 아래 참조 ).

여기 몇 가지 중요한 사항이 있습니다.

  1. SATA를 사용하면 드라이브가 응답을 멈 추면 문제가있는 드라이브 하나만이 아니라 전체 스토리지 시스템을 묶을 수 있습니다. 확실히 전체 컨트롤러를 묶을 가능성이 있으며 대부분의 소비자 시스템에는 단일 디스크 컨트롤러 (마더 보드에 통합 된 컨트롤러) 만 있으므로 모든 스토리지를 의미합니다. 비표준 및 / 또는 예기치 않은 방식으로 드라이브에 장애가 발생하면 드라이브가 한계가있는 경우에 발생할 수 있습니다. 하드웨어 SATA RAID-10 어레이의 단일 디스크어떻게 전체 어레이를 손상시킬 수 있습니까? 서버 결함.
  2. 대부분의 소비자 SATA 드라이브는 기본 시간 초과 기간 (분 단위) 이 길고 많은 소비자 SATA 드라이브에는 구성 가능한 오류 복구 제어 기능이 없습니다 . 소위 "NAS"드라이브에는 종종 구성 가능한 ERC가 있으며, 고급 드라이브는 거의 항상 있습니다. 이러한 드라이브는 기본 시간 제한이 더 짧을 수도 있습니다 (일반적인 값인 7 초). 드라이브가 유일한 데이터 사본을 보유 할 경우 시간 초과 기간이 오래 걸리는데, 이는 불행히도 소비자 시스템에서 일반적입니다. 중복 구성 또는 드라이브가 더 악화되기 전에 가능한 한 많은 드라이브를 사용하려는 경우 단점입니다.
  3. 드라이브는 시간 초과 임계 값에 도달하거나 중단이 호스트에 의해 신호를 보낼 때까지 불량 섹터를 계속 읽으려고 시도 합니다. 읽기가 완료 될 때까지 대기하여 SATA 버스를 묶을 수 있으므로 OS에서 스토리지 수준 명령 중단을 알리지 못할 수 있으며 극단적 인 경우 드라이브가 SATA 버스 재설정에 제대로 응답하지 않을 수도 있습니다. 그런 상황에서.

포인트 # 1은 서버 에서 SAS 의 주요 판매 포인트 중 하나입니다 . SAS는 SATA보다 오류 처리 기능 이 훨씬 뛰어납니다. 포인트 # 2는 드라이브 펌웨어 제한이며, # 3은 실제로 # 2 때문에 문제가됩니다.

따라서 OS에서 디스크에 "섹터 읽기"명령을 실행하면 특정 섹터가 어떻게 든 손상됩니다. 따라서 디스크는 재시도 모드로 들어가 플래터에서 데이터를 가져 와서 디스크 자체 오류 수정 ( FEC )이 나머지 오류를 정정 할 수있을 만큼 충분한 데이터를 얻을 때까지 다시 읽기를 시도 합니다. 운이 좋지 않다면 결코 그렇지 않을 수 있지만 드라이브는이 읽기가 성공하지 않기로 결정하기 전에 상당히 오랜 시간 동안 계속 시도합니다.

운영 체제가 읽기를 기다리고 있기 때문에 복사 프로세스를 크롤링하는 속도가 매우 느려질 수 있으며 정확한 OS 아키텍처에 따라 OS가 지연되거나 지속되는 동안 정지 될 수 있습니다. 이 시점에서 디스크는 원래 읽기 작업을 수행 중이므로 현재 실행중인 명령이 종료 (성공 또는 실패) 할 때까지 추가 읽기 명령에 응답하지 않으며 다른 소프트웨어는 일반적으로 운영 체제보다 성능이 좋지 않습니다. 실행 중입니다.

따라서, 다른 곳에서 ( 이상적으로 는 손상된 드라이브에서만) 읽기를 트리거하는 것은 손상된 드라이브가 문제의 섹터를 읽거나 읽을 수없는 것으로 판단 될 때까지 줄을 서서 기다려야합니다. SATA가 응답하지 않는 드라이브를 최적으로 처리 하지 못하기 때문에 복사하려는 드라이브의 I / O가 지연되는 것은 아닙니다. 운영 체제가 대처할 수 있더라도 소프트웨어가 다른 I / O 요청이 완료 될 때까지 대기하기 때문에 다른 소프트웨어도 느리게 응답하거나 응답하지 않을 수 있습니다.

또한 디스크의 파일에 명시 적으로 액세스하지 않아도 디스크 I / O가 발생할 수 있다는 점에 유의해야합니다. 이에 대한 두 가지 주요 원인은 주문형로드 실행 코드 및 스왑입니다. 시스템에 메모리가 부족하지 않은 경우에도 스왑이 사용되는 경우가 많으며 최신 시스템과 최신 실행 파일 형식에서는 주문형로드 실행 코드가 일반적이므로 일반적으로 사용하는 동안 의도하지 않은 디스크 읽기 작업이 실제로 가능합니다.

Matteo Italia 의 질문에 대한 의견에서 지적한 것처럼 완화 전략 중 하나는 다른 스토리지 상호 연결을 사용하는 것입니다. 이는 "USB 인클로저에 디스크를 넣습니다"라는 복잡한 방법입니다. 이는 USB 대용량 스토리지 프로토콜을 통해 추상화함으로써 문제가있는 SATA 부분을 나머지 시스템과 분리합니다. 즉 , 이론상 특정 디스크의 I / O 만 해당 디스크의 I / O 문제에 영향을받습니다.

이 점을 제외하면 SATA (특히 드라이브 레벨 ERC가없는 SATA)가 RAID (특히 중복성을 가진 RAID 레벨 , RAID 0을 제외한 모든 RAID 레벨 )에 권장되지 않는 이유가 많습니다 . 시간 초과 기간이 길고 오류 처리가 불량하면 단일 불량 섹터에 대해 전체 장치를 어레이에서 쉽게 버릴 수 있습니다. 중복성이 존재하는 경우 RAID 컨트롤러는 잘 처리 할 수 ​​있으며 스토리지 컨트롤러는 이것이 문제임을 단순히 알고 있습니다. SAS는 대형 스토리지 배열 용으로 설계 되었기 때문에 때때로 여러 드라이브에 문제가 발생할 것으로 예상되어 단일 문제가있는 드라이브 또는 I / O 요청의 경우를 정상적으로 처리하도록 설계되었습니다드라이브가 없어도. 문제가있는 디스크는 많은 디스크가 설치되지 않은 경향이 있고 사실상 설치된 디스크는 결코 중복성을 갖지 않기 때문에 소비자 시스템에서 흔하지 않습니다. SATA는 SCSI가 아닌 PATA / IDE를 대체하려고했기 때문에 (후자는 SAS가 목표로하는 틈새), 오류 처리 기능 및 요구 (또는 보증)가 의도 된 사용 사례에 적합한 것으로 간주되었을 수 있습니다.


19
실제로 진행 상황을 설명하는 현명한 답변을 게시 해 주셔서 감사합니다. 이것은 "시스템이 드라이브를 기다리고 있기 때문에"또는 "그런 방식으로 설계 되었기 때문에"와 같은 모호한 답변을 보는 일반적인 질문입니다.
Mehrdad

4
@kasperd : 거의. 그것의 일부는 Windows의 "오류"이기도하지만 여러 컨트롤러에서 쉽게 발생할 수 있습니다. IMO이 답변은 엔터프라이즈 SAS 컨트롤러 가이 문제에 영향을받지 않는 것으로 보아 의도적으로 모호 합니다. 실제로 특정 차단 I / O 요청으로 요약됩니다. 일부 하드 드라이브 작업을 수행하려면 Y 작업 전에 X 작업을 완료해야합니다. X가 끝나지 않으면 Y를 시작할 수 없습니다. Y도 멈 추면 드라이브, 컨트롤러, 드라이버 또는 OS 상태에 관계없이 결점.
qasdfdsaq

2
@JustAMartin 사실 거의 모든 비동기 화가 이루어지고 있습니다. 요즘 DMA를 지원하는 모든 주변 장치는 비동기식으로 가득합니다. 커널은 요청을 예약하고 요청이 완료되었음을 알리는 인터럽트를 처리합니다. 문제는 때로는이다 있어야 하고 그 과정에서 그들은 중요한 것을 차단할 수 있습니다 - 작업이 완료 될 때까지 기다립니다. user20574가 지적했듯이 가상 메모리는 그중 하나이지만 몇 가지 보장이 필요합니다. 커널의 일부는 비동기 적이 지 않으며 물론 일부 드라이버 / 장치는 단순히 짜증납니다.
Luaan

2
@ MichaelKjörling "운영 체제가 읽기를 기다리고 있기 때문에 복사 프로세스를 크롤링하는 데 속도가 매우 느려질 수 있으며 정확한 OS 아키텍처에 따라 OS가 지연되거나 정지 될 수도 있습니다." -보조 (시스템이 아닌) 드라이브에서 읽을 때 OS가 왜 정확히 변하지 않습니까? SATA 컨트롤러의 오류 처리 동작으로 인해 문제가 발생한 것은 아닙니다. 이 답변은 Windows가 디스크 하위 시스템의 오류를 처리하는 방법에 대한 정보를 활용할 수 있다고 생각합니다.
Jordan Rieger

1
@ MichaelKjörling Fair 충분히. 대답에는 좋은 정보가 많이 있지만 OP의 특정 시나리오를 잘 설명하지 못한다고 생각합니다. 다른 각도에서 시작하려면 포인트 1을 백업하기위한 참고 문헌을 인용 할 수 있습니다. "SATA를 사용하면 드라이브가 응답을 멈 추면 문제가있는 드라이브가 아니라 전체 스토리지 시스템을 묶을 수 있습니다 "컨트롤러 전체를 묶을 가능성이 있습니다." ? 이것은 끔찍한 디자인처럼 보입니다. OS 디스크 하위 시스템이 범인이 아닐까요? 즉, 컨트롤러가 비동기식이지만 OS 드라이버가 불필요하게 차단되는 경우가 있습니다.
Jordan Rieger

3

위에서 언급 한 바와 같이, 하드 드라이브 불량으로 인한 시스템 정지 문제는 주로 드라이브가 불량 섹터에서 읽을 수없는 데이터를 복구하려는 오랜 시도로 인한 것입니다. 엔터프라이즈 드라이브의 판매 포인트 중 하나는 실패한 섹터에 대한 매우 짧은 읽기 시간 초과입니다. 엔터프라이즈 드라이브를 사용하면 문제를 어느 정도 완화 할 수 있지만 해결되지는 않습니다.

가장 좋은 대답은 복구가 필요하지 않도록 적절한 백업을 유지하는 것입니다. 복구 소프트웨어를 변경해도 펌웨어 시간 초과 문제이므로 차이가 없습니다.


2

손상된 하드 드라이브가 전체 시스템을 정지시키는 이유는 무엇입니까?

그들은 (일반적으로) 필요하지 않습니다. 실제로 디스크 오류를 처리하는 방법은 특정 파일 시스템에 따라 다릅니다.

내결함성을 다루기 위해 처음부터 설계된 ZFS를 고려하십시오. 여기의 데모 비디오 (그리고 더 설명 하나 가 모루에서 실행 드라이브를 배치), 썰매 망치로 스윙을하고 다른 드라이브를 드릴. ZFS가 계속 실행되는 동안


2
실제로 ZFS가 제대로 처리하지 못하는 디스크 오류가 있습니다. 예를 들어, 중복 또는 비 중복 설정에서 I / O 요청 시간이 초과되기 전에 읽기 시간이 매우 깁니다. (중복이없는 방식으로 ZFS를 쉽게 설정할 수 있습니다.) 이는 ZFS의 어레이에서 드라이브를 버리게 할 수 있습니다. 이로 인해 중복 임계 값 아래로 떨어지면 전체 어레이가 발생할 수 있습니다. 사용할 수 없게됩니다. failmode = wait로 설정하면 유사한 결과가 표시 될 수 있습니다. 모든 스토리지 서브 시스템의 경우 전체 디스크 장애가 발생 하기 쉽습니다 . 그건 한계 문제를 제기 드라이브를.
CVn

그리고 다른 생각을하기 전에 실제로 ZFS (거의 독점)를 직접 실행합니다. 신중하고 수행중인 작업을 알고 있다면 훌륭한 파일 시스템이자 훌륭한 볼륨 관리자 입니다. 그러나 엔터프라이즈 급 시스템 (하이 엔드 워크 스테이션 및 서버)을 위해 설계되었으며 관리자는 자신이하는 일을 알기 위해 비용을 지불했습니다. RAM 문제 및 I / O 요청에서 돌아 오는 데 시간이 너무 오래 걸리는 드라이브를 포함하여 상용 하드웨어에서 볼 수있는 일부 오류 모드를 잘 처리하도록 설계되지 않았으며, 가정 사용자 나 내부 사용자가 쉽게 사용할 수 있도록 설계되지 않았습니다 가정 사용자 사용 사례.
CVn

비디오를 제외하고 ZFS는 계속 실행되지 않습니다. 드라이브 연결을 끊은 후 다시 실행을 시작합니다.
Christoffer Hammarström

-2

나는 당신이 겪고있는 문제가 OS의 저수준 부분이라고 생각하기 전에 여러 번 나쁜 블록을 읽으려고합니다. 이 루틴은 부팅 또는 기타 독립형 작업 중에 필요할 경우를 대비하여 하위 수준에서 구현되므로 다시 입력하기가 어렵습니다. 운영 체제는 정상 작동 중에 지속적으로 페이징되며 하위 수준 시스템은 페이징 요청을 소유 한 프로세스의 우선 순위를 알지 못하므로 경쟁 요청에 우선 순위를 부여하기가 어렵습니다.


6
'저수준 시스템' 페이지를 요청하는 프로세스의 우선 순위를 알고 있습니다. 이러한 정보는 페이지 테이블 에 보관되지만 구현은 우선 순위 처리 방식에 따라 시스템에 따라 다릅니다. 이것은 질문에 대한 정답이 아닙니다. 이것은 OS 문제가 아니라 하드웨어 문제입니다.
크리스 Cirefice

1
이 질문에 대한 정답은 고장난 드라이브 사용을 거부하는 것입니다. 그러나 이것은 가능한 많은 데이터를 이해하기 원하는 사용자에게는 만족스럽지 않습니다.
jrrk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.