디스크나 서버 장애를 견디는 일반적인 방법은 여러 복사본을 유지하는 것이며, 이는 관례적으로 3배 복제된 데이터에 대해 저장 비용을 세 배로 지불하는 것을 의미한다. 백업 제공업체에게 이는 지배적인 비용이다.

리드-솔로몬 이레이저 코딩은 더 저렴한 절충안을 제공한다. Backblaze는 파일을 17개의 동일한 샤드로 분할하고, 3개의 패리티 샤드를 계산한 뒤, 20개 전부를 별도의 드라이브에 저장한다. 20개 조각 중 어느 17개로도 원본을 복원할 수 있으므로, 파일은 최대 3개의 샤드 손실을 견딘다.

이것이 설계의 핵심이다. 세 개의 완전한 복사본 대신 하나의 복사본과 소량의 패리티를 유지하여, 거의 동일한 내구성을 확보하면서 저장 공간의 일부만 사용한다.

중복 복사본이 아니라 패리티 수학으로 내구성을 확보하라

패리티 샤드는 완전한 중복 복사본보다 훨씬 적은 비용이 든다.

20개 조각 중 어느 17개로도 파일을 재구성할 수 있어, 여러 드라이브 손실을 견딘다.

저장 오버헤드가 낮아지면 제공업체의 단위 비용도 직접적으로 낮아진다.

데이터를 복사하여 신뢰성을 지불할 때, 당신은 비싼 전체 단위로 그것을 사는 것이다. 코딩 수학을 사용하면 고정된 오버헤드로 정확한 양을 살 수 있다.

Backblaze는 자사의 Java 리드-솔로몬 라이브러리를 오픈소스로 공개했고, 이레이저 코딩은 클라우드 제공업체와 백업 서비스 모두가 약간의 CPU를 훨씬 저렴한 내구성과 맞바꾸는 일반적인 방법이 되었다.

근거 확인하기

출처

  1. Backblaze open-sources Reed-Solomon erasure coding source code Backblaze · backblaze.com ·
  2. Erasure coding OpenStack Wiki · wiki.openstack.org