跳转到主要内容

此库提供了一个简单的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_3flat_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 (6.7 MB 查看哈希值)

上传时间 源代码

支持者