해결책
디스크나 서버 장애를 견디는 일반적인 방법은 여러 복사본을 유지하는 것이며, 이는 관례적으로 3배 복제된 데이터에 대해 저장 비용을 세 배로 지불하는 것을 의미한다. 백업 제공업체에게 이는 지배적인 비용이다.
리드-솔로몬 이레이저 코딩은 더 저렴한 절충안을 제공한다. Backblaze는 파일을 17개의 동일한 샤드로 분할하고, 3개의 패리티 샤드를 계산한 뒤, 20개 전부를 별도의 드라이브에 저장한다. 20개 조각 중 어느 17개로도 원본을 복원할 수 있으므로, 파일은 최대 3개의 샤드 손실을 견딘다.
이것이 설계의 핵심이다. 세 개의 완전한 복사본 대신 하나의 복사본과 소량의 패리티를 유지하여, 거의 동일한 내구성을 확보하면서 저장 공간의 일부만 사용한다.
달성한 것
중복 복사본이 아니라 패리티 수학으로 내구성을 확보하라
패리티 샤드는 완전한 중복 복사본보다 훨씬 적은 비용이 든다.
20개 조각 중 어느 17개로도 파일을 재구성할 수 있어, 여러 드라이브 손실을 견딘다.
저장 오버헤드가 낮아지면 제공업체의 단위 비용도 직접적으로 낮아진다.
데이터를 복사하여 신뢰성을 지불할 때, 당신은 비싼 전체 단위로 그것을 사는 것이다. 코딩 수학을 사용하면 고정된 오버헤드로 정확한 양을 살 수 있다.
그 후
Backblaze는 자사의 Java 리드-솔로몬 라이브러리를 오픈소스로 공개했고, 이레이저 코딩은 클라우드 제공업체와 백업 서비스 모두가 약간의 CPU를 훨씬 저렴한 내구성과 맞바꾸는 일반적인 방법이 되었다.
근거 확인하기
출처
- Backblaze open-sources Reed-Solomon erasure coding source code Backblaze · backblaze.com ·
- Erasure coding OpenStack Wiki · wiki.openstack.org