바이너리 리드-솔로몬 인코딩
Binary Reed–Solomon encodingRS 코드에 속하는 BRS(Binary Reed-Solomon Coding)는 분산 스토리지 환경에서 노드 데이터 손실을 해결할 수 있는 인코딩 방법입니다.MDS(Maximum Distance Separable) 인코딩 속성이 있습니다.인코딩 및 디코딩 속도는 기존 RS 코딩과 최적의 CRS 코딩을 능가합니다.
배경
RS 코딩은 분산 스토리지 환경을 위한 내결함성 인코딩 방법입니다.예를 들어 하드웨어 RAID 설정과 같이 스토리지 용량 또는 대역폭을 개선하기 위해 k개의 개별 장치에 데이터를 분산한다고 가정합니다.이러한 구성은 장치 장애 발생 시 상당한 데이터 손실 위험이 있습니다.리드-솔로몬 인코딩은 m 노드의 모든 하위 집합의 동시 실패에 강한 스토리지 코딩 시스템을 생성합니다.이를 위해 총 n = k + m 스토리지 노드에 대해 m개의 노드를 시스템에 추가합니다.
전통적인 RS 인코딩 방법은 Vandermonde 행렬을 코딩 행렬로 사용하고 그 역행렬을 디코딩 행렬로 사용합니다.기존의 RS 인코딩 및 디코딩 작업은 모두 대규모 유한 도메인에서 수행됩니다.
BRS 인코딩 및 디코딩은 시프트 및 XOR 작업만 사용하기 때문에 기존 RS 코딩보다 훨씬 빠릅니다.BRS 코딩 알고리즘은 베이징 대학의 첨단 네트워크 기술 연구소에서 제안하고 BRS 코딩의 오픈 소스 구현도 공개했습니다.실제 환경 테스트에서 BRS의 인코딩 및 디코딩 속도는 CRS보다 빠릅니다.분산 스토리지 시스템의 설계 및 구현에서 BRS 코딩을 사용하면 시스템이 내결함성 재생의 특성을 가질 수 있습니다.
원리
BRS 인코딩 원리
전통적인 리드-솔로몬 코드의 구조는 유한 필드를 기반으로 하며, BRS 코드는 시프트와 XOR 연산을 기반으로 하며, BRS 인코딩은 반데르몽드 행렬을 기반으로 하며, 구체적인 인코딩 단계는 다음과 같습니다.
1、원래 데이터 블록을 k개의 블록으로 균등하게 분할하고, 각 데이터 블록에는 L-bit 데이터가 있으며, 다음과 같이 기록됩니다.
여기서 , .. - {{}= i k - {{ i=, ...,
2보정 데이터 블록 MM} , 에는 총n -의 이 있습니다.
여기서 = k - j ( {\ _{=0}^{}( i = - - { i=
여기에 추가된 모든 XOR 연산은 가 원래 데이터 j 앞에 추가된 "0"의 비트 수를 나타냅니다.따라서 패리티 데이터 는 다음과 같은 방식으로 제공됩니다.
서 a . - a = 1, ...
3、각 노드는 데이터를 저장하고 노드 . - {{displaystyle = ..., {\ -, m- - m - k - 1 - 1, { - 1}, - k - 1, m - 1, m - 1,m - 1, m - 1, m - 1, m - 1, m - 1, m - 1 m - 1, - 1 m -
BRS 인코딩 예제
, 3 {\n 6, k 이면 0( 0 0 \{0}(, 2 {0} ( , 4 ( s, 원본 입니다L -({ 서 i -({ i 1, ..., }), 각 블록에 대한 보정 는 m 1 x + i( - - ={i_ { i_1 i_m_1, , i_m_1, - i
보정 데이터 블록의 계산은 다음과 같습니다. 추가 작업은 비트 XOR 작업을 나타냅니다.
0 0 ( 1( ⊕ ( \}=oplus ( 0, 1 ,5 \ =( 0, 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1 0 ( ( ⊕ ( \}= 1 ( m1 \1} = ( 1, 1, 0 7
0 ( ( ⊕ ( \}= 2 ( \=( 0m2, 0m2, , 0m2,
BRS 디코딩 원리
BRS 코드의 구조에서 원래 데이터 블록을k{k}개의 으로 나눕니다. ( 0 ,. , - ){ S=({1{k-1입니다. 인코딩은n 블록 보정 데이터 블록이며, m1.,- -1 ) {- k - k -1 M =( . -1)입니다.
디코딩 프로세스 중에 다음과 같은 조건이 필요합니다.손상되지 않은 교정 데이터 블록의 수는 누락된 원래 데이터 블록의 수보다 크거나 같아야 합니다. 누락되지 않은 경우 복구할 수 없습니다.
다음은 디코딩 프로세스 분석입니다.
n { n }, = 3 {= 3}으로 만드는 이 좋습니다. 그러면
이(가) 손상되지 것으로 합니다s s 2({}} 누락, m1({ 2({를 하여 복구합니다.
, 0({{이 ({{1}^{*}) ({{2가 알려져 .하도록
위의 반복 공식에 따르면, 각 사이클은 두 개의 비트 값( s 2 {{을 알아낼 수 있습니다.각각의 원래 데이터 블록 길이{ L비트)를 L L회 하면 원래 데이터 블록에서 알 수 없는 모든 비트를 해결할 수 있습니다. 추론의 패리티로 데이터 디코딩을 완료할 수 있습니다.
성능
일부 실험에 따르면 인코딩 속도를 고려할 때 단일 코어 프로세서에서 BRS 인코딩 속도는 RS 인코딩 속도의 약 6배, CRS 인코딩 속도의 약 1.5배로 RS 인코딩과 비교할 때 200% 이상으로 인코딩 속도가 업그레이드됩니다.
동일한 조건에서 삭제 횟수가 다른 경우 BRS 디코딩 속도는 RS 인코딩 속도의 약 4배, CRS 디코딩 속도의 약 1.3배로 RS 인코딩에 비해 디코딩 속도가 100% 향상됩니다.
적용들
현재 상황에서는 분산 시스템의 적용이 일반적으로 사용됩니다.삭제 코드를 사용하여 분산 스토리지 시스템의 하단에 데이터를 저장하면 시스템의 내결함성을 높일 수 있습니다.동시에 기존 복제 전략에 비해 소거 코드 기술은 동일한 중복성에 대한 시스템의 안정성을 기하급수적으로 향상시킬 수 있습니다.
BRS 인코딩은 분산 스토리지 시스템에 적용할 수 있습니다. 예를 들어 HDFS를 사용하는 동안 BRS 인코딩을 기본 데이터 인코딩으로 사용할 수 있습니다.성능의 이점과 인코딩 방법의 유사성으로 인해 BRS 인코딩을 사용하여 분산 시스템의 CRS 인코딩을 대체할 수 있습니다.
사용.
C로 작성된 BRS 인코딩을 구현하기 위한 오픈 소스 코드가 있으며 GitHub에서 사용할 수 있습니다.분산 스토리지 시스템의 설계 및 구현에서는 BRS 인코딩을 사용하여 데이터를 저장하고 시스템 자체의 내결함성을 달성할 수 있습니다.
레퍼런스
- H. Hou, K. W. Shum, M.Chen과 H. Li, BASIC Regeneration Code: 정확한 수리를 위한 이진 추가 및 이동, IEEE ISIT 2013.
- Jun Chen, Hui Li, Hanxu Hou, Bing Zhu, Tai Zhou, Lijia Lu, Yumeng Zhang, 최적의 인코딩과 효율적인 디코딩을 갖춘 새로운 지그재그 MDS 코드 [C]//Big Data (Big Data), 2014 IEEE International Conference on.IEEE, 2014.