此库提供了一个简单的Python接口来实现纠删码。为了获得最佳性能,底层的纠删码算法是用C语言编写的。
项目描述
此库提供了一个简单的Python接口来实现纠删码,并且已知与Python v2.6、2.7和3.x兼容。为了获得最佳性能,该库使用了liberasurecode,这是一个基于C的纠删码库。
PyECLib支持多种纠删码后端,包括由Jerasure [1]、liberasurecode [3]、Intel的ISA-L [4]和Phazr.IO的libphazr提供的标准Reed-Solomon实现。它还提供了对基于平展XOR的编码器和解码器的支持(liberasurecode的一部分)——这是基于IEEE MSST 2010[2]中“存储系统中的平展XOR纠删码:构造、高效恢复和权衡”的HD组合码类。这些代码非常适合归档用途,结构简单,在单盘重建过程中需要参与的最小磁盘数量最少(类似于基于XOR的LRC码)。
安装
安装先决条件
Python 2.6、2.7或3.x(包括开发包)、argparse、setuptools
liberasurecode v1.3.1或更高版本 [3]
纠删码后端库,gf-complete和Jerasure [1]、[2]、ISA-L [4]等
安装依赖项
Debian/Ubuntu主机
$ sudo apt-get install build-essential python-dev python-pip liberasurecode-dev $ sudo pip install -U bindep -r test-requirements.txt
RHEL/CentOS主机
$ sudo yum install -y redhat-lsb python2-pip python-devel liberasurecode-devel $ sudo pip install -U bindep -r test-requirements.txt $ tools/test-setup.sh
如果您想确认所有依赖包已成功安装,请尝试
$ sudo bindep -f bindep.txt
注意:目前,对于Ubuntu,软件仓库中的liberasurecode-dev版本低于v1.2.0。对于CentOS,请确保安装最新的Openstack Cloud SIG仓库,以便安装最新可用的liberasurecode-devel版本。
安装PyECLib
$ sudo python setup.py install
运行包含的测试套件
$ ./.unittests
如果测试套件失败,因为它找不到任何共享库,那么您可能需要将/usr/local/lib添加到加载库时搜索的路径。在Linux上的最佳做法是在以下位置添加‘/usr/local/lib’
/etc/ld.so.conf
并确保运行
$ sudo ldconfig
入门
在“工具”目录中提供了PyECLib的使用示例
命令行编码器
tools/pyeclib_encode.py
命令行解码器
tools/pyeclib_decode.py
确定重建丢失片段所需内容的实用程序
tools/pyeclib_fragments_needed.py
配置实用程序,以帮助比较性能和冗余方面的可用EC方案
tools/pyeclib_conf_tool.py
PyEClib初始化
ec_driver = ECDriver(k=<num_encoded_data_fragments>, m=<num_encoded_parity_fragments>, ec_type=<ec_scheme>))
支持的ec_type值
liberasurecode_rs_vand => Vandermonde Reed-Solomon编码,仅由liberasurecode [3]实现的软件后端
jerasure_rs_vand => Vandermonde Reed-Solomon编码,基于Jerasure [1]
jerasure_rs_cauchy => Cauchy Reed-Solomon编码(Jerasure变体),基于Jerasure [1]
flat_xor_hd_3、flat_xor_hd_4 => 基于平展XOR的HD组合码,liberasurecode [3]
isa_l_rs_vand => Intel存储加速库(ISA-L)- SIMD加速纠删码后端 [4]
isa_l_rs_cauchy => Cauchy Reed-Solomon编码(ISA-L变体) [4]
shss => 日本NTT实验室的纠删码库 [5]
libphazr => 带内置隐私的Phazr.IO纠删码库 [6]
代码维护
该库目前主要由Openstack Swift社区维护。有关问题或任何其他帮助,请前往OFTC上的#openstack-swift询问。
参考文献
[1] Jerasure,支持存储应用中纠删码的C库,http://jerasure.org
[2] Greenan,Kevin M等,“存储系统中的平展XOR纠删码”,http://www.kaymgee.com/Kevin_Greenan/Publications_files/greenan-msst10.pdf
[3] liberasurecode,纠删码后端的C API抽象层,https://opendev.org/openstack/liberasurecode
【4】英特尔(R)存储加速库(开源版),https://01.org/intel%E2%84%A2-storage-acceleration-library-open-source-version
【5】Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp>,"NTT SHSS Erasure Coding 后端"
【6】Jim Cheung <support@phazr.io>,"Phazr.IO libphazr 带内置隐私的纠删码后端"
项目详情
pyeclib-1.6.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3a364cefb59c06d0b57e87f0ab7a184b28828220d1c218c4c1c594d5af6ceb9d |
|
MD5 | fc8321029af26ed31fc8c0e0760f2909 |
|
BLAKE2b-256 | c89a3c4362db5f46d5b1391b5fe827d070fe247674d503f98938aef0805f249d |