Erasure Code API library written in C with pluggable Erasure Code backends.
Go to file
Tim Burke 5626cd5791 Be willing to write fragments with legacy crc
...if users *really* want to. They opt-in at run time by setting

    LIBERASURECODE_WRITE_LEGACY_CRC=1

in the environment; leaving it unset, set to an empty string, or set to
the string "0" continues to write zlib crcs.

UpgradeImpact
=============
This option is intended to allow a smooth upgrade from liberasurecode
1.5.0 and earlier in a system with multiple readers and writers:

  * Before upgrade, ensure the environment variable is set on all nodes.
    This will be ignored by earlier versions.
  * Upgrade liberasurecode on each node in the system, restarting any
    services that use it. Every node continues writing CRCs that are
    still usable by nodes that have not yet upgraded.
  * Now that every node is capable of reading zlib CRCs, remove the
    environment variable from each node to start writing new CRCs.

If you are already using 1.6.0 or later, just upgrade normally.

Closes-Bug: #1886088
Closes-Bug: #1867937
Related-Bug: #1666320
Needed-By: https://review.opendev.org/#/c/739164/
Change-Id: I9adfbe631a2dddc592fd08f8a325f3e8331b92f1
2020-09-30 16:38:11 -07:00
doc re-org of README 2017-06-07 10:59:01 -04:00
include 1.6.1 release 2019-05-23 16:03:58 -07:00
playbooks/unittests Install Jerasure and ISA-L libs 2018-10-22 10:40:16 -04:00
roles Use ceph's GitHub mirrors for gf-complete/jerasure 2020-03-12 23:52:20 -07:00
src Be willing to write fragments with legacy crc 2020-09-30 16:38:11 -07:00
test Be willing to write fragments with legacy crc 2020-09-30 16:38:11 -07:00
.gitignore Remove remaining m4/ references 2015-06-21 22:17:08 +00:00
.gitreview Update .gitreview following project rename 2019-06-12 10:30:14 -07:00
.mailmap Release 1.6.0 2018-09-21 10:28:15 -04:00
.zuul.yaml Build and test on centos-8 node 2020-02-06 13:36:17 +11:00
AUTHORS Release 1.6.0 2018-09-21 10:28:15 -04:00
COPYING Reformat license file 2020-03-10 18:38:10 -07:00
ChangeLog 1.6.1 release 2019-05-23 16:03:58 -07:00
Makefile.am Fix building with LD_LIBRARY_PATH set 2018-10-01 16:35:35 +02:00
NEWS Add NEWS and README back 2016-05-27 14:27:11 -04:00
README Add NEWS and README back 2016-05-27 14:27:11 -04:00
README.md re-org of README 2017-06-07 10:59:01 -04:00
Xorcode.pc.in autoconf: Add Xorcode pkgconfig, other minor fixes 2014-06-29 21:42:09 -07:00
autogen.sh Add -f argument to autoreconf to regenerate aclocal macros 2015-06-22 02:49:16 +00:00
bindep.txt Use zlib for CRC-32 2017-07-06 17:40:38 +00:00
configure.ac Merge "Stop using ceill() to compute padded data size" 2017-06-06 19:17:12 +00:00
erasurecode.pc.in Add dl to pkg-config metadata 2017-07-13 13:26:00 -07:00
erasurecode_rs_vand.pc.in Add pkg-config template for liberasurecode_rs_vand 2015-06-23 04:07:26 +00:00
get_flags_from_cpuid.c Fix get_supported_flags() arguments 2015-06-22 02:54:25 +00:00

README.md

liberasurecode

liberasurecode is an Erasure Code API library written in C with pluggable Erasure Code backends.


Highlights

  • Unified Erasure Coding interface for common storage workloads.

  • Pluggable Erasure Code backends - liberasurecode supports the following backends:

    • 'liberasurecode_rs_vand' - Native, software-only Erasure Coding implementation that supports a Reed-Solomon backend
    • 'Jerasure' - Erasure Coding library that supports Reed-Solomon, Cauchy backends [1]
    • 'ISA-L' - Intel Storage Acceleration Library - SIMD accelerated Erasure Coding backends [2]
    • 'SHSS' - NTT Lab Japan's hybrid Erasure Coding backend [4]
    • 'Flat XOR HD' - built-in to liberasurecode, based on [3]
    • 'libphazr' - Phazr.IO's erasure code backend with built-in privacy [5]
    • 'NULL' template backend implemented to help future backend writers
  • True 'plugin' architecture - liberasurecode uses Dynamically Loaded (DL) libraries to realize a true 'plugin' architecture. This also allows one to build liberasurecode indepdendent of the Erasure Code backend libraries.

  • Cross-platform - liberasurecode is known to work on Linux (Fedora/Debian flavors), Solaris, BSD and Darwin/Mac OS X.

  • Community support - Developed alongside Erasure Code authority Kevin Greenan, liberasurecode is an actively maintained open-source project with growing community involvement (Openstack Swift, Ceph, PyECLib, NTT Labs).


Active Users


Build and Install

Install dependencies -

Debian/Ubuntu hosts:

 $ sudo apt-get install build-essential autoconf automake libtool

Fedora/RedHat/CentOS hosts:

 $ sudo yum install -y gcc make autoconf automake libtool

To build the liberasurecode repository, perform the following from the top-level directory:

 $ ./autogen.sh
 $ ./configure
 $ make
 $ make test
 $ sudo make install

References

[1] Jerasure, C library that supports erasure coding in storage applications, http://jerasure.org

[2] Intel(R) Storage Acceleration Library (Open Source Version), https://01.org/intel%C2%AE-storage-acceleration-library-open-source-version

[3] Greenan, Kevin M et al, "Flat XOR-based erasure codes in storage systems", http://www.kaymgee.com/Kevin_Greenan/Publications_files/greenan-msst10.pdf

[4] Kota Tsuyuzaki tsuyuzaki.kota@lab.ntt.co.jp, "NTT SHSS Erasure Coding backend"

[5] Jim Cheung support@phazr.io, "Phazr.IO libphazr erasure code backend with built-in privacy"