SW/면접

RAID5 Data Recovery 관련 개념

얇은생각 2019. 1. 22. 07:30
반응형

이번 포스팅은 RAID5 어레이의 데이터 복구에 관한 것이다. 이 포스팅을 최대한 활용하려면 RAID5 어레이의 작동 방식을 기본적으로 이해해야 한다. 아래 정보의 정확성에 대한 보증은 없다. 만약 불안하다면, 전문적인 데이터 복구 회사에 의해 데이터를 복구하기 위해 돈을 지불해야 한다.


데이터 복구를 시도하기 전에 어레이에 있는 Disk의 복사본을 가져와 복사본에서 작업하십시오. 그렇지 않으면 상황이 훨씬 더 악화될 위험이 있습니다. 하드웨어 RAID가 있는 경우 모든 디스크에 액세스할 수 있도록 디스크를 일반 SCSI 또는 IDE 컨트롤러에 연결하십시오.



RAID5 어레이의 문제

RAID5 어레이가 견고한 신뢰성이라고 가정하는 것은 데이터 손실의 일반적인 원인인 단일 Disk 장애에 대처할 수 있다. 반면에 드라이브 컨트롤러에 장애가 발생하면 전체 어레이에 장애가 발생할 수 있다. 어레이의 데이터는 또한 (하드웨어 RAID 컨트롤러의 펌웨어를 잊어버리지 않음), 악성 RAM 및 사람의 실수로 인한 손상에 취약하다.


RAID는 백업을 대신할 수 없다.


안타깝게도, 온라인 스토리지를 제공하기 위한 시간과 자금을 얻는 것이 하드웨어에서 데이터를 백업하는 것보다 더 쉽다.



잠복 디스크 오류


디스크 블록에는 데이터가 있을 수 있다. 이 데이터는 일반적인 방법으로 읽을 수 있다.

디스크 블록은 알려진 오류를 가질 수 있다. 즉, 운영체제는 블록을 읽을 수 없고 다른 디스크의 블록에서 재구성해야 한다는 것을 알고 있다.

디스크 블록에는 알 수 없는 오류가 있을 수 있다. 이는 OS가 아직 발견하지 못한 블록을 읽을 수 없게 만드는 잠재적인 오류들이다.


어려움을 일으키는 것은 후자의 범주다.


파일 시스템에서 사용하지 않거나 거의 변경되지 않는 영역에 대한 패리티 블록인 Disk 일부에 잠재적 Disk 오류가 있다고 가정하십시오. 정상 작동 중에는 이 오류가 존재해도 아무런 어려움이 없을 것이다. 두 번째 디스크 오류로 인해 다른 디스크가 불량으로 표시된다면, 그 디스크의 데이터는 예비 디스크에 재구성될 것이다. 재구성은 활성 디스크의 모든 디스크 블록을 읽어 잠복 디스크 오류를 감지하여 디스크도 오프라인으로 표시한다. 


정상적인 표면 검사는 잠재적인 디스크 오류를 감지하는 데 필수적이다.


표면 검사를 수행하지 않고 RAID5 어레이에 장애가 발생하고 핫 스페어 Disk가 없으면 어레이가 성능 저하 모드로 작동하는 동안 데이터를 백업할 수 있는 기회를 잡으십시오.


Disk에서 사용하지 않는 부분의 잠재적 오류는 백업에 영향을 미치지 않아야 하지만 결함이 있는 Disk를 교체하면 어레이가 손상될 수 있다.



컨트롤러 오류

하나의 SCSI 또는 RAID 컨트롤러에 여러 개의 디스크를 사용하여 RAID를 수행하는 경우, 컨트롤러 문제로 인해 Disk에 대한 요청이 시간 초과되는 경우 나쁜 영향을 받을 수 있다. 콘트롤러에게 디스크 장치에 문제가 있는 것처럼 보이기 때문에, 디스크는 오프라인으로 표시되어 있다.


고장난 컨트롤러가 여전히 디스크를 구동하고 있으므로 다른 디스크에도 동일한 문제가 발생할 수 있다. 그런 다음 어레이를 구동하기에 충분한 디스크가 있다.


디스크에 실제로 문제가 없고 메타데이터의 구조를 알고 있다면 두 번째 드라이브가 "실패"되었을 때와 마찬가지로 메타데이터를 다시 저장할 수 있다.


이렇게 하려면 모든 디스크의 메타데이터를 검사하십시오. 다음 항목을 찾으십시오.


드라이브에 장애가 없음을 나타내는 메타데이터 블록 하나.

드라이브 하나가 고장 났다는 메타데이터 블록 하나.

어레이가 불완전하다는 여러 메타데이터 블록.


메타데이터의 타임스탬프는 단 몇 초 간격으로 있을 가능성이 있다. (만약 그렇지 않다면, 복구를 시도하기 전에 무엇이 잘못되었는지 더 잘 생각해 보십시오.) 하나의 장애가 있는 메타데이터 블록은 두 번째 드라이브에서 장애로 이어진다. 이 디스크에 해당하는 다른 디스크에 대해 새 메타데이터 블록을 생성하면 대부분의 데이터가 손상되지 않은 성능 저하된 어레이가 생성될 것이다. 



RAID5 배열 구조

RAID5 어레이를 구성하려면 먼저 데이터를 동일한 길이의 블록으로 분할하십시오. 블록 크기는 일반적으로 기본 디스크의 블록 크기보다 크며 64K는 일반적인 그림이다.


datablock


이제 디스크를 통해 회전하는 디스크 중 하나를 제외한 모든 블록에 순서대로 정렬하십시오. 다른 Disk에서 해당 비트의 보완(xor)을 취하여 나머지 Disk에 있는 패리티 블록(P)의 각 비트를 계산하십시오. 모든 디스크에 대한 보충 합계는 0이 된다. 아래의 그림에서는 각 행이 하나의 디스크에 해당한다.



4raid


배열에서 블록을 읽으려면 위치를 계산하고 적절한 Disk에 읽기를 실행하십시오.


블록에 쓰려면 데이터 블록과 해당 패리티 블록의 위치를 계산하십시오. 데이터(OD)와 패리티(OP) 블록을 메모리에 저장하십시오. 새로운 데이터 블록(ND)은 일반적인 방법으로 작성된다.


배열에서 블록을 읽으려면 위치를 계산하고 적절한 Disk에 읽기를 실행하십시오.


블록에 쓰려면 데이터 블록과 해당 패리티 블록의 위치를 계산하십시오. 데이터(OD)와 패리티(OP) 블록을 메모리에 저장하십시오. 새로운 데이터 블록(ND)은 일반적인 방법으로 작성된다. 새 패리티 블록은 NP = OP^ND^OD로 계산되며, 여기서 ^는 1의 보수 추가 연산자(xor)이다. 그런 다음 새 패리티 블록이 디스크에 쓰여진다.


고장 난 디스크에서 블록을 읽으려면 위치를 취소하고 다른 모든 디스크에서 해당 블록을 읽으십시오. 데이터 블록은 이러한 블록들의 보충물이 될 것이다.


여기서 멈추면, RAID4가 나온다. 이것은 쓰기 중에 성능 문제를 겪는다. 모든 쓰기는 패리티 Disk를 업데이트해야 하므로 Disk가 병목 현상을 일으킨다. (일부 시스템에서는 다른 시스템과 병렬로 Disk를 추가하여 어레이를 확장할 수 있도록 RAID4를 사용한다. RAID5로 훨씬 더 어렵다.


RAID5는 패리티 블록을 데이터 블록과 연동하여 병목 현상을 방지한다.


5raid


손상된 RAID 어레이를 복구하려면 다음 매개 변수를 알아야 한다.


RAID 어레이가 켜져 있는 디스크와 순서를 선택하십시오.

첫 번째 패리티 블록이 있는 Disk는 무엇인가? 

그 블록은 얼마나 큰가?


스트라이프 크기 x 디스크 수보다 큰 데이터 구조를 찾아보십시오. 데이터의 불연속성을 찾아 스트라이프 크기와 패리티 레이아웃을 추론할 수 있다. 만약 당신이 LVM1을 사용하고 있다면, PE 할당표는 이 목적에 적합하다.


원시 데이터를 검사할 때 패리티 블록에서 외관상 실제 데이터를 확인해도 놀라지 마십시오. 다음과 같은 경우 정상이다.


모든 디스크의 데이터는 매우 유사하며 홀수 디스크일 때

하나의 데이터 디스크를 제외한 모든 디스크에는 NUL이 포함

반응형