답변:
RAID-1은 두 드라이브 중 하나의 완전한 장애로부터 보호합니다. 드라이브가 실패한 것으로 표시되지 않으면 내용이 정확한 것으로 간주됩니다. 그러나 어떤 이유로 든 두 드라이브 중 하나가 일치하지 않는 데이터를 반환하면 RAID 시스템에서 해당 오류를 감지하지 못하고 응용 프로그램의 데이터가 잘못 될 수 있습니다.
많은 컨트롤러에는 주기적으로 실행되는 확인 프로세스가 있지만이 작업의 목적은 데이터 무결성이 아닌 디스크 오류를 테스트하는 것입니다. 하드 드라이브는 불량 섹터를 발견하는 데 사용하는 자체 데이터 무결성 테스트 및 체크섬을 구현하지만이 알고리즘은 빠르고 컴팩트하며 철저하지 않고 설계되어 오류가 발생할 수 있습니다.
데이터 손상은 규칙이 아니라 예외이지만 전례도 없습니다. 예를 들어, ZFS 팀의 구성원은 인터뷰에서 ZFS가 해당 파일 시스템 수준에서 체크섬을 구현한다는 사실로 인해 하이 엔드 RAID-5 장치에 의해 손상된 데이터가 제공되는 것을보고했습니다.
부패의 원인에 따라 다릅니다. RAID 1 미러의 드라이브가 불완전하고 넌센스로 쓰는 경우 RAID 미러가 저하되고 양호한 드라이브가 사용 중이며 양호한 파일을 갖게됩니다. RAID 5의 경우 이는 2 개의 데이터 드라이브와 패리티 드라이브 (가장 간단한 형식)로 수행되며 3 개의 드라이브 중 하나가 올바른 파일을 쓰지 못하면 실패하고 2 개의 데이터가 남게됩니다 드라이브 또는 1 개의 데이터 드라이브 및 패리티 드라이브
이제 바이러스 나 프로그램의 버그로 인해 손상이 발생한 경우 어떻게되는지 살펴 보겠습니다. RAID 1 및 RAID 5에서는 드라이브가 올바르게 쓰기 때문에 드라이브가 작동하지 않습니다. 아무것도 실패하지 않았습니다. 그러나 바이러스 나 버그가 정크를 쓰고 있기 때문에 파일이 손상되며 RAID 1 미러의 드라이브와 RAID 5 시스템의 3 개의 드라이브 모두에 파일을 씁니다.
이것이 RAID가 백업이 아닌 이유입니다. 디스크 오류 일 가능성이 가장 높은 오류를 방지하지만 다른 많은 시나리오를 설명하지는 않습니다.
다른 사람들이 지적했듯이, raid1 시스템은 두 섹터 중 어느 섹터가 나쁜지를 알 수있는 방법이 없습니다.
더 높은 엔드 레이드 시스템은 백그라운드에서 스크럽 작업을 실행하여 사본과 플래그 차이를 비교합니다. 더 좋은 방법은 매번 드라이브에서 두 블록을 모두 읽고 시스템을 읽는 시간에 비교하는 시스템입니다. 그러나 이러한 차이점을 해결하는 것은 RAID 컨트롤러에서는 불가능합니다.
mdadm 하의 Unix 시스템에서 "sync_action"을 사용하여 스크럽 검사를 시작할 수 있습니다.
장치의 sysfs 디렉토리에있는 md / sync_action 파일에 check 또는 repair를 작성하여 md 배열을 제거 할 수 있습니다.
스크럽을 요청하면 md는 어레이의 모든 장치에서 모든 블록을 읽고 데이터가 일치하는지 확인합니다. RAID1 및 RAID10의 경우 이는 사본이 동일한 지 확인하는 것을 의미합니다. RAID4, RAID5, RAID6의 경우 이는 패리티 블록이 올바른지 (또는 블록이 올바른지) 확인하는 것을 의미합니다.
raid1은 갑작스러운 전체 드라이브 장애로부터 보호하는 것입니다. 부패 방지를 위해 다른 곳을 찾으십시오. Raid1은 "히스토리"를 제공하지 않으므로 사람 또는 소프트웨어 오류에서 복구 할 수 없습니다. 손상으로부터 보호하기 위해 ZFS와 같은 파일 시스템 또는 Hammer와 같은 파일 시스템을 보존하십시오.
실제로는 그렇습니다. 대부분의 하드 드라이브 오류는 전혀 또는 전혀 발생하지 않습니다. (a) 케이블이 분리되었거나 드라이브 마이크로 컨트롤러에 오류가 발생하여 RAID 컨트롤러가 전혀 응답하지 않습니다. 명백히 실패한 드라이브입니다. 또는 (b) 케이블 및 드라이브 마이크로 컨트롤러는 양호하지만 섹터를 읽으려고하면 내부 ECC 체크섬이 실패하여 내부 드라이브 마이크로 컨트롤러가 데이터 손상을 감지하고 해당 섹터를 반복적으로 읽으려고 시도합니다 (일시적인 읽기 결함 인 경우) ) 결국 시간이 초과되어 RAID 컨트롤러는 정중 한 "죄송한"응답을 얻습니다. 명백히 실패한 드라이브입니다. 어느 쪽이든, RAID-1 또는 RAID-5 컨트롤러에게는 드라이브가 고장 났음을 알 수 있습니다.
원칙적으로 하드 드라이브가 넌센스를 작성하는 중 심하게 잘못된 일이 있었지만 넌센스에 대한 올바른 내부 ECC 코드를 작성하기에 충분한 정도로 작동하는 경우 RAID-1은 어느 드라이브가 올바른지 알 수 없습니다. RAID-1 시스템은 재 동기화에서 손상된 데이터로 양호한 데이터를 겹쳐 쓰게됩니다. RAID-5는 낫지 않습니다. 액티브 쓰기 중 "RAID-5 쓰기 홀"정전은 드문 일이지만 불가능하지 않은 경우입니다.
내가 아는 한, 이러한 손상을 피할 수있는 유일한 방법은 파일 미러링 (ZFS 또는 Btrfs)의 일부로 자동으로 또는 주기적으로 또는 수동으로 (rsync 체크섬 재 계산, 간단한 파일 확인, Parchive 파일 세트 등); SHA-256과 같은 암호화 해시에 이상적입니다.