안녕하세요 이번 시간에는 RAID 기술에 대해 알아보는 시간을 갖도록 하겠습니다.

RAID 기술이란 여러 개의 하드디스크를 구성하고 일부에 중복된 데이터를 나눠서 저장하는 복수 배열 독립 디스크 기술입니다. 하나의 RAID는 운영체제에서 논리적으로 하나의 하드 디스크로 인식하며 이를 이용해 디스크의 성능 향상 또는 안정성을 향상시킬 수 있습니다.

RAID 기술에는 다른 여러 기술들이 사용됩니다. 크게 스트라이핑 기술과 미러링 기술이 있습니다.

스트라이핑 기술이란 디스크의 성능 향상을 위해 연속된 데이터를 여러 개의 디스크에 라운드 로빈 방식으로 기록하는 기술입니다. 여러 디스크에 데이터가 분산되어 저장되기 때문에 데이터를 읽고 쓸 때 데이터가 저장된 여러 디스크에 동시에 접근하여 데이터를 처리하기 때문에 데이터 읽기 및 쓰기 속도가 모두 높습니다.

미러링 기술이란 디스트에 에러 발생 시 디스크 운용 정지를 막기 위해 추가적으로 하나 이상의 장치에 중복 저장하는 기술입니다. 여러 디스크에 데이터가 중복되어 저장되기 때문에 데이터를 읽을 때는 데이터가 저장된 여러 디스크에 접근할 수 있어 읽기 속도는 향상되나 여러 디스크에 같은 데이터를 저장해야 하기 때문에 쓰기 속도는 향상되지 않습니다. 또한 데이터를 중복 저장하기 때문에 디스크 효율성이 50%로 감소한다는 단점이 있습니다.

미러링 기술의 단점을 보완하기 위해 오류 정정 부호와 패리티 기술을 사용합니다.

오류 정정 부호(ECC)란 데이터의 오류를 감지하고 수정하는데 사용되는 다양한 기술을 포괄하는 용어입니다. 대표적으로 해밍 코드가 있습니다. 해밍 코드란 데이터 전송이나 저장 과정에서 발생하는 오류를 감지하고 수정하기 위해 사용하는 오류 수정 코드의 일종입니다. 이를 이용하여 데이터를 복구할 수 있으나 추가 연산이 필요하기 때문에 입출력 속도가 저하된다는 단점이 있습니다.

패리티 기술은 여분의 패리티 비트가 데이터 전송 시 같이 전달하여 데이터가 손상되었는지 확인하는 기술입니다. 패리티 비트란 전송된 데이터들이 성공적으로 도착하였는지를 식별하는 목적으로만 사용되는 비트로, 전송될 데이터의 전체 데이터 비트의 합을 홀수가 되도록 만들어줍니다. 예를 들어 전송 전 전체 데이터 비트의 합이 짝수라면 패리티 비트를 1로 설정, 전체 데이터 비트의 합이 홀수라면 패리티 비트를 0으로 설정합니다. 데이터를 전송하면 수신 측에서 전송받은 비트의 총합이 홀수인지를 확인하여 짝수일 경우 데이터 손상을 파악할 수 있게 됩니다.

RAID는 크게 RAID 0부터 RAID 6까지 분류할 수 있습니다.

RAID 0이란 고성능 구현 추구 방식으로 패리티나 미러링 없이 블록 레벨의 스트라이핑 기술을 사용하여 데이터를 디스크에 분산 저장하는 방식입니다. 블록 단위 스트라이핑 기술을 사용하여 단일 디스크 및 여러 개의 디스크에서 동시에 데이터를 읽고 쓸 수 있으며 처리 속도가 빠르다는 장점이 있습니다. 하지만 미러링 기술 또는 패리티 기술을 사용하지 않기 때문에 구성된 디스크 중 하나라도 오류가 발생하면 복구가 불가하다는 단점이 있습니다.

RAID 1이란 무정지 구현 추구 방식으로 패리티나 스트라이핑 없이 미러링 기술을 사용하여 데이터를 두 개의 디스크에 동시에 기록하는 방식입니다. 미러링 기술을 사용하여 데이터 읽기 성능은 향상되나 쓰기 성능은 그대로이며 디스크 효율성이 50% 감소하는 단점이 존재합니다.

RAID 0과 1의 장점을 취하기 위해 RAID 0+1과 RAID 1+0 방식이 존재합니다. RAID 0+1이란 디스크 2개를 스트라이핑 기술을 사용하는 RAID 0으로 구성하고 이렇게 구성한 RAID 0 세트를 미러링 기술을 사용하는 RAID 1로 구성하는 방식입니다. RAID 1+0이란 반대로 디스크 2개를 RAID 1로 구성하고 이 세트를 RAID 0으로 구성하는 방식입니다. 이는 RAID 1보다 높은 성능을 제공하지만 가격이 비싸다는 단점이 있습니다.

RAID 2의 경우 비트 레벨의 스트라이핑 기술을 사용하여 최소 3개의 디스크에 데이터를 분산 저장하는 방식입니다. 데이터가 개별 비트로 나뉘고 각 비트가 별도의 데이터 디스크에 기록되며, 미러링 기술을 사용하는 대신 해밍 코드를 사용합니다. 이로 인해 해밍 코드를 기록하는 전용 디스크가 필요하며 해밍 코드의 입출력 속도 저하 문제와 함께 비트 단위로 쪼개기 때문에 많은 수의 디스크가 필요하고 비트 레벨로 쪼개져 병렬 처리가 제한되어 있어 비효율적입니다.

RAID 3의 경우 바이트 수준의 스트라이핑 기술을 사용하여 데이터를 분산 저장하는 방식입니다. 이 때부터 미러링 기술 대신 패리티 기술을 사용합니다. 한 번 읽거나 쓸 때 각 디스크에 동시에 접근 가능하여 순차적 쓰기 및 읽기 성능이 우수합니다.

RAID 4의 경우 블록 레벨의 스트라이핑 기술을 사용하여 데이터를 분산 저장하는 방식입니다. 모든 드라이브에 데이터를 분산하지 않고 하나의 디스크는 패리티 정보만을 전담하여 저장합니다. 이 때문에 데이터를 쓸 때마다 패리티 정보가 저장된 패리티 디스크에 접근해야 하기 때문에 쓰기 성능은 좋지 않습니다.

RAID 5의 경우 블록 레벨의 스트라이핑을 통해 데이터를 분산 저장하지만 패리티 정보도 별도의 디스크가 아닌 모든 디스크에 나누어 저장하는 방식입니다. 고성능과 무정지 둘 다 추구하는 방식이며 패리티 정보가 하나의 디스크에 저장되어 있지 않고 모든 디스크에 패리티 정보가 분산되어 저장되어 있습니다. (예 데이터 1 + 패리티 블록 A / 데이터 2 + 패리티 블록 B, 이 때 패리티 블록 A와 B는 다르다.) 이로 인해 하나의 디스크에 장애가 발생 시 나머지 디스크의 패리티 블록들을 통해 복구할 수 있으나 두 개 이상의 디스크에 장애 발생 시 두 개 이상의 패리티 블록들이 장애를 입어 복구가 불가능하다는 단점이 있습니다. 성능 면에서는 RAID 0보다 떨어지지만 안정성 및 용량 등이 뛰어나 현업에서 많이 사용합니다.

RAID 6의 경우 RAID 5 구성에 2차 패리티 정보를 추가한 방식입니다. 고성능과 무정지 둘 다 추구하는 방식으로 모든 디스크에 패리티 정보가 분산되어 저장되어 있을 뿐 아니라 같은 패리티 블록이 모든 드라이브에 저장됩니다. (예 데이터 블록 1 + 패리티 블록 A + 패리티 블록 P / 데이터 블록 2, 패리티 블록 B, 패리티 블록 P) 이 때 두 개의 디스크가 손상되었을 때 수학적 알고리즘을 통해 패리티 블록 P와 나머지 패리티 블록 이렇게 2세트를 이용하여 데이터 복구가 가능합니다. RAID 5의 경우 1개의 디스크 오류만 대처 가능했지만 RAID 6의 경우 2개의 디스크 오류에 대처 가능합니다.

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글