[스토리지] 데이터 보호 - RAID와 이레이저 코드
본문 바로가기
IT 이야기/공부합시다

[스토리지] 데이터 보호 - RAID와 이레이저 코드

by 찬찬이 아빠 2023. 6. 16.
반응형

개인적으로 스토리지 공부를 위해 정리한 내용들입니다.

함께 공부하자는 취지로 내용을 공유합니다.


스토리지 시스템에 있어서 데이터 보호(data protection)는 기업 정보 자산을 보호하는 데 의의를 두고 있습니다.

그 자산은 운용 중인 핵심 어플리케이션이나 서비스에 등록된 고객 정보일 수도 있기 때문에, IT 관리자들은 스토리지 시스템을 구축하기에 앞서 자사의 인프라와 사용 목적을 파악하고 그에 따른 데이터 보호 방법을 강구해야 합니다.

스토리지의 데이터 손실을 복구할 수 있는 가장 확실한 방법은 데이터의 복제본을 만들어두고 문제 발생 시 복사본으로 복구하는 것입니다.

스냅샷(snapshot)처럼 시스템 데이터 및 설정을 복제해서 로컬 또는 원격의 다른 스토리지로 백업하는 방법이 있는가 하면, 시스템 범위 내에서 데이터 보호가 이루어 지는 방법이 있습니다.


1. RAID에 대해서

  • RAID는 스토리지 가상화 기술의 일종으로, 한 디스크가 차면 다음 디스크에 저장하는 기본적인 JBOD 방식에서 성능과 데이터 무결성을 확보하기 위해 만들어짐
  • RAID(Redundant Array of Independent Disks)라는 용어는 말 그대로 여러 개의 데이터 조각으로 배열된 각각의 디스크를 말함
  • 여기서 배열이란 한 뭉텅이인 데이터를 쪼개서 각 디스크에 저장하는 것을 의미하며, 이 배열 방식은 크게 스트라이핑(striping)과 미러링(mirroring)으로 나뉨
  • 스트라이핑(striping) : 병렬 처리
    • A라는 데이터를 하나의 디스크에서 불러오는 것보다 각 디스크에 저장된 A의 조각들을 동시에 불러와서 모으는 편이 빠르고 디스크별 부하도 줄일 수 있는 장점이 있음
    • 디스크 하나가 망가지면 해당 디스크의 데이터 조각은 없어지기 때문에 데이터의 무결성에 문제가 발생

RAID 0

 

  • 미러링(mirroring)
    • 거울에 비추듯이 같은 데이터를 복수의 디스크로 동시에 저장
    • 디스크 하나가 망가져도 다른 디스크에 같은 데이터가 존재하기 때문에 해당 데이터를 보존할 수 있지만, 그 데이터만큼의 추가 공간을 차지하기 때문에 공간 효율 측면에서는 좋지 못함

RAID 1

 

  • RAID는 패리티(parity)라는 데이터 복구 수단을 두고 있음
  • 패리티는 원본 데이터를 특정 알고리즘을 활용해 생성할 수 있는 추가 데이터를 의미
  • RAID 5 구성
    • 데이터별 패리티를 1개씩 생성하며, XOR 비트 연산이라는 계산법을 활용
    • 아래 그림과 같이 데이터 A, B, C, D가 디스크 4개에 저장되면 3개씩 나누어진 데이터를 XOR 연산으로 계산해 패리티를 생성하고 스트라이핑으로 저장
    • 만일 2번 디스크가 망가졌을 경우, 1번, 3번, 4번 디스크에 저장된 데이터 조각과 패리티를 다시 XOR 연산으로 계산해 2번 디스크의 데이터 조각을 복구
    • 다만, 아래의 RAID 5 구성처럼 4개의 디스크 중에서 2개가 망가졌을 경우 1개 패리티만으로는 전체 데이터의 복구가 불가능

RAID5

  • 이를 보완하기 위한 것이 RAID 6
    • RAID 6는 스트라이핑으로 저장하는 점에서 RAID 5와 같지만, 패리티가 1개가 아닌 2개씩 구성
    • XOR 연산이 아니라 Reed-Solomon 부호로 패리티를 생성
    • 다만, 패리티를 늘리게 되면 패리티 생성을 위한 추가 공간이 필요할 뿐 만 아니라 패리티 생성 및 복구로 인한 CPU 부하의 증가를 야기할 수 있음

RAID6

  • 기업들은 인프라의 특성에 맞는 RAID 수준을 구축해야 함
  • 이 모든 작업은 별도의 하드웨어 컨트롤러나 서버의 OS 내에서 진행할 수 있음
  • 하드웨어 RAID
    • 별도의 하드웨어인 RAID 컨트롤러 카드를 통해 RAID를 구현
    • 하드웨어 단에서 처리되는 만큼 시스템에 부담 없이 읽기/쓰기나 패리티 계산 등의 속도가 빠르지만, 별도의 하드웨어 애드온인 RAID 컨트롤러 카드의 가격이 비쌈
  • 소프트웨어 RAID
    • 단순히 메인보드에서 직접 RAID 기능을 구현
    • RAID를 적용할 디스크만 있으면 별도의 하드웨어가 필요 없어 비용은 아낄 수 있지만, 다른 작업들과 CPU 리소스를 공유하기 때문에 전반적인 작업 속도가 느림
    • 이 때문에 소프트웨어 RAID에서는 오버헤드가 가장 낮은 RAID 0이나 RAID 1을 사용하는 경우가 많음
  • RAID는 기본적으로 한 개나 두 개 정도의 디스크 오류에 대처할 수 있을 정도로만 쓰여 왔고, 디스크 용량도 크지 않아 복구 작업이 수 분에서 수 시간만 걸릴 정도였음
  • 하지만 단일 저장장치의 용량이 수TB로 커지게 되면서 RAID의 실용성에 의문이 제기되고 있음
  • 거대한 용량을 다루게 되면서 디스크 복구 작업이 며칠이나 걸리게 되고 그동안 한두 개의 디스크 오류에 대처 가능한 정도로는 부족하기 때문
  • 이 때문에 최근에 이를 보완할 수 있는 기술로서 이레이저 코딩이 대두되고 있음

2. 이레이저(소거) 코딩

  • 이레이저 코딩(erasure coding)
    • RAID와 마찬가지로 데이터 손실 시 미리 준비된 별도의 데이터(패리티)로 복구하는 기술
    • 기본적인 개념은 같아서 동일시하는 경우도 있지만, 별도의 데이터를 계산하는 방법에서 차이가 있음
  • RAID처럼 원본 데이터를 여러 데이터 조각으로 나눔
  • 이 데이터 조각을 가지고 RAID 6처럼 Reed-Solomon 부호를 사용한 변환 작업을 거쳐서 추가적인 데이터 패리티들을 생성
  • RAID와의 차이점
    • 데이터 보호 수준을 유연하게 설정할 수 있다는 점
    • ex) 10조각짜리의 블록을 인코딩해서 추가로 6조각의 패리티를 생성하는 경우, 이렇게 변환된 총 16조각의 데이터는 16군데의 노드나 디스크에 분산 저장할 수 있음
    • ex) 중요한 것은, 이 16조각의 데이터에서 원본 데이터로 복구하기 위해 필요한 조각은 10조각이라는 것
    • ex) 한마디로 16개의 디스크에 분산 저장되었다면 디스크 오류가 여섯 군데에서 발생해도 원본 데이터를 복구할 수 있다는 의미
    • ex) 이는 RAID에 비해 더 많은 디스크 오류에 대처할 수 있다는 의미
    • ex) 원본 데이터를 생성하기 위해 모든 데이터 조각을 읽을 필요도 없고, 대처 가능 오류 수에 대비해 추가공간을 적게 차지함
  • 이레이저 코딩의 단점
    • 우선 소프트웨어 RAID처럼 모든 작업이 소프트웨어로 처리되고 모든 데이터를 인코딩하는 만큼 패리티 계산에 CPU 오버헤드와 지연시간이 발생
    • 이 때문에 블록 스토리지와 같이 작은 블록 입출력이 발생하는 스토리지 시스템은 블록별 계산이 많아지기 때문에 전반적인 스토리지 성능에 영향을 줄 수 있음

3. RAID와 이레이저 코딩의 용도

(1) HCI (Hyperconverged Infrastructure)

  • 이레이저 코딩 : 여러 노드에 분산 저장할 수 있어 스케일아웃 시스템에 적합
    • 전 노드에 데이터를 분산시켜서 관리할 수 있어 적합하다고 볼 수 있음
    • 다만 쓰기가 빈번하게 일어나거나 고성능이 요구되는 경우 이레이저 코딩의 사용은 제한적일 수밖에 없음
  • RAID : 단일 스토리지 어레이에 적합
    • 도입할 수 있는 구성이 정해져 있고, 허용할 수 있는 디스크 오류 숫자가 매우 적다 보니 다수의 노드로 구성된 하이퍼컨버지드 시스템에 부적합

(2) 플래시 스토리지

  • 매우 빠른 입출력을 지원하지만, 단일 저장장치의 용량은 하드디스크에 비해 크지 않은 특성을 가지고 있음
  • 이레이저 코딩은 일반적으로 복수의 저장매체나 노드를 대상으로 데이터 보호를 제공하도록 디자인되었기 때문에 여기서 발생하는 지연시간은 플래시 스토리지의 장점을 희석시킴
  • SSD의 용량이 하드디스크만큼 커지게 된다면 RAID의 제한적인 확장성 문제를 보완하기 위해 활용될 수도 있음

(3) 오브젝트 스토리지

  • 백업이나 아카이브 등 대용량 스토리지로 주목받고 있음
  • 무엇보다 이전과는 달리 사용하는 용량의 규모가 늘어난 만큼, 데이터 재구성 시간이 오래 걸리는 RAID의 효율도 점점 낮아지고 있음
  • 거대한 비정형 데이터를 노드에 걸쳐 분산 저장할 수 있고, 심플한 확장성 때문에 이레이저 코딩과 활용이 용이함

4. 정보 출처

https://tech.gluesys.com/blog/2020/07/22/storage_6_intro.html

 

글루시스 기술 블로그

A simple yet classy theme for your Jekyll website or blog.

tech.gluesys.com

 

반응형

댓글