SATA가 차선책 인 영역 중 하나입니다. 저장 장치 상호 연결 프로토콜 수준에 문제가 있으므로 실행중인 소프트웨어와 관련이 없습니다. 다른 파일 복사기 또는 다른 운영 체제를 사용해도 문제의 영향을 줄이기 위해 다른 시간 제한 값을 설정 하려고 시도 하는 것 (하드웨어 및 펌웨어에 따라 가능하거나 불가능할 수 있음 )을 제외하고는 마술처럼 개선 되지 않습니다. 아래 참조 ).
여기 몇 가지 중요한 사항이 있습니다.
- SATA를 사용하면 드라이브가 응답을 멈 추면 문제가있는 드라이브 하나만이 아니라 전체 스토리지 시스템을 묶을 수 있습니다. 확실히 전체 컨트롤러를 묶을 가능성이 있으며 대부분의 소비자 시스템에는 단일 디스크 컨트롤러 (마더 보드에 통합 된 컨트롤러) 만 있으므로 모든 스토리지를 의미합니다. 비표준 및 / 또는 예기치 않은 방식으로 드라이브에 장애가 발생하면 드라이브가 한계가있는 경우에 발생할 수 있습니다. 하드웨어 SATA RAID-10 어레이의 단일 디스크 가 어떻게 전체 어레이를 손상시킬 수 있습니까? 서버 결함.
- 대부분의 소비자 SATA 드라이브는 기본 시간 초과 기간 (분 단위) 이 길고 많은 소비자 SATA 드라이브에는 구성 가능한 오류 복구 제어 기능이 없습니다 . 소위 "NAS"드라이브에는 종종 구성 가능한 ERC가 있으며, 고급 드라이브는 거의 항상 있습니다. 이러한 드라이브는 기본 시간 제한이 더 짧을 수도 있습니다 (일반적인 값인 7 초). 드라이브가 유일한 데이터 사본을 보유 할 경우 시간 초과 기간이 오래 걸리는데, 이는 불행히도 소비자 시스템에서 일반적입니다. 중복 구성 또는 드라이브가 더 악화되기 전에 가능한 한 많은 드라이브를 사용하려는 경우 단점입니다.
- 드라이브는 시간 초과 임계 값에 도달하거나 중단이 호스트에 의해 신호를 보낼 때까지 불량 섹터를 계속 읽으려고 시도 합니다. 읽기가 완료 될 때까지 대기하여 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가 목표로하는 틈새), 오류 처리 기능 및 요구 (또는 보증)가 의도 된 사용 사례에 적합한 것으로 간주되었을 수 있습니다.