티스토리 뷰

반응형

소거 코딩이란?

소거 코딩이란? 소거 코딩은 데이터를 단편화하여 다중 데이터 조각으로 확장 및 인코딩하고 서로 다른 위치 또는 저장 매체에 저장하는 데이터 보호 방법입니다. 드라이브에 장애가 발생하거나 데이터가 손상된 경우 다른 드라이브에 저장된 세그먼트에서 데이터를 재구성할 수 있습니다. 이와 같이 EC는 RAID 구현에 따른 오버헤드나 제한 없이 데이터 중복성을 높일 수 있습니다. 소거 코딩은 어떻게 작동할까요? 소거 코딩은 파일이나 오브젝트 등의 데이터 단위를 여러 데이터 블록으로 분할한 후 데이터 복구에 사용할 수 있는 추가 패리티 블록을 생성하는 방식으로 작동합니다. 각 패리티 프래그먼트에 대해 EC 알고리즘은 원래 데이터 프래그먼트를 기반으로 패리티 값을 계산합니다. 데이터 및 패리티 조각은 여러 드라이브에 걸쳐 저장되므로 드라이브에 장애가 발생하거나 드라이브에서 데이터가 손상된 경우 데이터 손실을 방지합니다. 이러한 이벤트가 발생했을 경우 패리티 fragment를 사용하여 데이터 손실 없이 데이터 유닛을 재구축할 수 있습니다. 예를 들어 스토리지 시스템은 5 더하기 2 인코딩 구성을 사용하여 여러 물리적 드라이브에 데이터를 분산할 수 있습니다. 이 설정에서는 EC 알고리즘에 의해 각 데이터 유닛이 5개의 데이터 fragment로 분할되어 2개의 패리티 fragment가 추가됩니다. 이 fragment는 원래 데이터에서 계산됩니다. 각 fragment는 다른 물리 드라이브에 저장됩니다. 따라서 스토리지 시스템에는 최소 7개의 드라이브가 포함되어 있어야 합니다. 5 더하기 2 구성에서는 패리티 데이터가 물리적 용량의 40%를 소비합니다. 이 구성에서는 디스크에 데이터 fragment 또는 패리티 fragment가 포함되어 있는지 여부에 관계없이 최대 2개의 디스크 장애를 허용할 수도 있습니다. 그러나 EC는 다양한 구성을 지원할 수 있을 만큼 유연합니다. 예를 들어, 17+3 인코딩은 각 데이터 단위를 17개의 세그먼트로 분할한 후 3개의 패리티 세그먼트를 추가합니다. 이 구성에는 최소 20개의 물리적 드라이브가 필요하지만 최대 3개의 디스크 장애를 동시에 지원하면서 패리티 오버헤드를 18% 미만으로 줄일 수 있습니다. 데이터를 패리티 단편에서 재구성할 수 있기 때문에 데이터를 완전히 복제하지 않고도 데이터를 보호할 수 있습니다. 예를 들어 단순한 2+1 구성에서는 데이터 유닛이 2개의 세그먼트로 분할되고 보호를 위해 1개의 패리티 프래그먼트가 추가됩니다. 애플리케이션이 데이터 세그먼트 중 하나에서 데이터를 검색하려고 하고 이러한 세그먼트를 사용할 수 있는 경우 패리티 세그먼트를 사용할 수 없는 경우에도 정상적으로 작업이 진행됩니다. 단, 첫 번째 데이터 fragment를 사용할 수 있지만 두 번째 데이터 fragment를 사용할 수 없는 경우 또는 그 반대의 경우 첫 번째 데이터 fragment와 패리티 fragment에서 데이터를 읽습니다. 이 2개의 fragment를 조합해, 2번째 fragment에 있던 데이터를 재구축 해서 디스크를 재구축 하는 동안에도 데이터 조작을 계속할 수 있습니다. 다음으로 소거 코딩과 RAID에 대해서 알아보겠습니다. 삭제 코드는 순방향 에러 정정 코드라고도 불리며, 데이터 전송의 에러를 검출해 수정하기 위해서 50년 이상 전에 개발되었습니다. 이후 이 기술은 드라이브 장애 또는 데이터 손상 시 데이터를 보호하기 위해 스토리지에 채택되었습니다. 최근 EC는 대규모 객체 기반 데이터 세트에서 사용할 수 있도록 인기를 끌고 있습니다.데이터 세트가 계속 증가하고 객체 스토리지가 더욱 광범위하게 구현됨에 따라 EC는 RAID의 대안으로 점점 더 실용화되고 있습니다. RAID는 데이터를 보호하기 위해 미러링과 패리티를 사용한 스트라이핑이라는 두 가지 주요 메커니즘에 의존합니다. 미러링은 가장 기본적인 데이터 보호 형식 중 하나입니다. 단독으로 사용하는 경우는 RAID 1이라고 불립니다. 이 구성에서는 데이터의 여러 복사본이 두 개 이상의 드라이브에 저장됩니다. 한 드라이브에 장애가 발생하더라도 서비스를 중단하지 않고 다른 드라이브 중 하나에서 데이터를 검색할 수 있습니다. 미러링은 구현 및 유지보수가 용이하지만 다른 복제 형식과 마찬가지로 많은 스토리지 리소스를 사용합니다. 패리티를 사용한 스트라이핑은 여러 하드 디스크에 데이터를 스트라이핑하고 패리티 블록을 추가하여 데이터를 보호합니다. 드라이브에 장애가 발생하면 다른 디스크의 데이터를 사용하여 누락된 데이터를 재구성할 수 있습니다. 이때 RAID 5는 디스크 장애를 한 번에 1개만 지원할 수 있습니다. 이러한 이유로 일부 벤더는 최대 2개의 디스크 장애를 동시에 처리할 수 있는 RAID 6 스토리지 시스템을 제공합니다. 데이터를 보호하기 위해 패리티가 없는 디스크 미러링 및 데이터 스트라이핑을 사용하는 RAID 10과 같이 다양한 RAID 구성을 조합할 수도 있습니다. 다양한 RAID 구성은 오랫동안 데이터 센터 운영에 필수적인 요소였습니다. 왜냐하면 이 기술은 잘 알려져 있고 광범위한 워크로드에 대한 신뢰성 있는 데이터 보호 형태가 입증되었기 때문입니다. 그러나 RAID에는 중대한 과제가 있습니다. 예를 들어 미러링은 리소스 활용률 면에서 비효율적이며 패리티를 사용한 스트라이핑은 최대 두 개의 동시 디스크 장애로부터만 보호할 수 있습니다. RAID의 또 다른 문제는 용량에 관한 것입니다. 디스크 드라이브의 용량이 커짐에 따라서 문제가 발생했을 경우에 드라이브를 재구축하는 데 시간이 걸립니다. 이는 애플리케이션 성능에 영향을 미칠 뿐만 아니라 데이터 손실 위험도 높일 수 있습니다. 예를 들어 RAID 5 구성에서 드라이브에 장애가 발생하면 해당 드라이브를 재구축하는 데 며칠이 걸릴 수 있으며, 재구축이 완료될 때까지 스토리지 어레이가 취약한 위치에 있을 수 있습니다. 디스크가 비활성화되면 애플리케이션 성능에도 영향을 미칠 수 있습니다. 소거 코딩은 경우에 따라서 RAID 대신에 소거 코딩을 사용해 제한 사항을 해결할 수 있습니다. 소거 코딩은 허용 가능한 고장 드라이브 수 측면에서 RAID 6을 초과할 수 있으므로 내결함성이 향상됩니다. 10 더하기 6 삭제 코딩 구성에서는 16개의 드라이브에 16개의 데이터 및 극성 세그먼트가 분산되어 있어 최대 6개의 드라이브 장애를 동시에 처리할 수 있습니다. 삭제 코딩은 구성이 매우 엄격한 RAID보다 훨씬 유연합니다. EC를 통해 조직은 스토리지 시스템을 구현하여 특정 데이터 보호 요구사항을 충족할 수 있습니다. 또한, EC는 구성 및 디스크 수에 따라 장애가 발생한 디스크를 재구축하는 데 걸리는 시간을 줄일 수 있습니다. 이러한 이점에도 불구하고 EC에는 성능에 미치는 영향이라는 심각한 단점이 있습니다. 소거 코딩은 처리 부하가 높은 작업입니다. EC 알고리즘은 스토리지에 기록된 모든 데이터에 대해 실행되어야 하며 데이터 및 패리티 세그먼트는 참여하는 모든 디스크에 기록되어야 합니다. 디스크에 장애가 발생했을 경우 데이터를 즉시 재구성해야 하기 때문에 재구축 작업은 CPU 리소스에 더 큰 부담을 줍니다. RAID 구성은 미러링이든 패리티를 사용한 스트라이핑이든 성능에 미치는 영향이 훨씬 적으며 종종 성능을 개선할 수 있습니다. 이러한 소거 코딩이 유용한 이유는 무엇일까요? 아마존 심플 스토리지 서비스, Microsoft Azure 및 구글 클라우드와 같은 주요 클라우드 스토리지 서비스는 방대한 데이터 저장소를 보호하기 위해 삭제 코딩을 광범위하게 사용합니다. 소거 코딩은 객체 기반 스토리지 시스템과 분산 시스템을 보호하는 데 특히 유용하다는 것이 입증되어 클라우드 스토리지 서비스에 매우 적합합니다. 즉, 삭제 코딩은 ECS 객체 스토리지 플랫폼과 같은 사내 객체 스토리지 시스템에도 침투하고 있습니다. 삭제 코딩은 디스크 어레이 시스템, 데이터 그리드, 분산 스토리지 애플리케이션, 객체 저장소 및 아카이브 스토리지와 같이 장애를 견뎌야 하는 대량의 데이터 및 모든 애플리케이션 또는 시스템에 유용합니다. 오늘날 대부분의 사용 사례는 RAID가 실용적인 옵션이 아닌 대규모 데이터 세트를 중심으로 진행됩니다. EC를 지원하려면 인프라가 필요한 성능을 제공할 수 있어야 합니다. 이러한 이유로 주요 클라우드 서비스에서 주로 사용되었습니다. 소거 코딩은 백업이나 아카이브와 같은 스토리지에서 권장되는 경우가 많습니다.이것은 상당히 정적이고 쓰기 집약적이지 않은 데이터 세트 유형입니다. 즉, 삭제 코딩은 복제 비용이 많이 드는 것을 피하기 위해 다양한 시스템에서 사용되고 있습니다. 예를 들어서 현재 많은 HDFS 구현에서 EC를 사용하여 데이터 노드 전반에 걸쳐 중복 데이터를 저장하는 데 따른 오버헤드를 줄입니다. 또한, Hitachi Content Platform과 같은 객체 스토리지 플랫폼에서는 데이터 보호를 위한 삭제 코딩이 지원됩니다. 지금까지 소거 코딩의 작동원리와 유용한 이유에 대해서 설명해드렸습니다.

반응형
댓글