EC: Add support for policy types, 'erasure_coding' policy

Bug #1357139 reported by OpenStack Infra
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Fix Released
Undecided
Vishal
openstack-api-site
Invalid
Medium
Vishal
openstack-manuals
Fix Released
High
Alexandra Settle

Bug Description

https://review.openstack.org/103644
commit ef81d2ff1f1fc50bbe651c495d5fef6667ea6f48
Author: Tushar Gohad <email address hidden>
Date: Mon Jun 30 11:14:28 2014 -0700

    EC: Add support for policy types, 'erasure_coding' policy

    This patch extends the StoragePolicy class for non-replication storage
    policies, the first one being "erasure coding".

    Changes:

     - Add 'policy_type' support to base StoragePolicy class
     - Disallow direct instatiation of StoragePolicy class

     - Subclass StoragePolicy

       - "ReplicationStoragePolicy":
         . Replication policy, default
         . policy_type = 'replication'

       - "ECStoragePolicy":
         . Erasure Coding policy
         . policy_type = 'erasure_coding'
         . Private member variables
           ec_type (EC backend),
           ec_num_data_fragments (number of fragments original
             data split into after erasure coding operation),
           ec_num_parity_fragments (number of parity fragments
           generated during erasure coding)
         . Private methods
           EC specific metadata and ring validator methods.

     - Swift will use PyECLib, a Python Erasure Coding library,
       for erasure coding operations. This patch adds PyECLib to
       Swift requirements.txt. PyECLib is already an approved
       OpenStack core requirement.
       (https://bitbucket.org/kmgreen2/pyeclib/)

     - Add test cases for
       - 'policy_type' StoragePolicy member
       - policy_type == 'erasure_coding'

     - Make default policy type for StoragePolicy tests cases
       'ReplicationStoragePolicy'

    DocImpact

    Implements: blueprint ec-proxy-work
    Change-Id: I605719bd9ab26b36310a06dbf518efc69ba41172

Tags: swift
Changed in openstack-manuals:
status: New → Confirmed
importance: Undecided → High
Revision history for this message
Anne Gentle (annegentle) wrote :

To write about erasure coding as a storage policy option in swift, these topics should be written:

Concept: What is erasure coding? What are the benefits over replication?
Preparation: What hardware might I need for erasure coding that's different from what I have now? Do my proxy server specs need to change?
Upgrade Considerations: Can I convert my entire cluster to erasure coding rather than replication?
How-to: What configuration settings do I need to enable erasure coding? What are some good default settings for a starting point? What considerations are there for amount of reads and writes and those ratios?

Since swift typically writes their documentation in their repo, it may make sense for these topics to be written there. However I think this type of information could go into the Cloud Admin Guide.

Revision history for this message
Anne Gentle (annegentle) wrote :

Relevant blog post, but mostly not useful for tech docs: https://swiftstack.com/blog/2013/07/10/erasure-codes-with-openstack-swift/

Revision history for this message
Anne Gentle (annegentle) wrote :

For placement in the Cloud Admin Guide, I'd suggest writing a section parallel to this one:

http://docs.openstack.org/admin-guide-cloud/content/section_objectstorage-replication.html

Revision history for this message
Anne Gentle (annegentle) wrote :

Source file for replication pointed to above can be found in https://github.com/openstack/openstack-manuals/tree/master/doc/common

Changed in openstack-manuals:
status: Confirmed → Triaged
Revision history for this message
paul luse (paul-e-luse) wrote :

FYI as part of the EC development effort we are tracking tasks, including docs, at https://trello.com/b/LlvIFIQs/swift-erasure-codes

Changed in openstack-manuals:
assignee: nobody → Alexandra Settle (alexandra-settle)
Revision history for this message
Alexandra Settle (alexandra-settle) wrote :

Thanks for everything there, Anne :)

As erasure coding is still in BETA form, I will form a draft for this in the swift docs repo.
Will reconsider movement to the Cloud Admin guide after the Liberty release.

Information regarding the recommendations and hardware loads etc are still being determined.

Revision history for this message
Alexandra Settle (alexandra-settle) wrote :

The beta information for the Swift documentation currently resides here: http://docs.openstack.org/developer/swift/overview_erasure_code.html

This information can be moved across into the cloud-admin-guide shortly :)

Revision history for this message
Lana (loquacity) wrote :

Please go ahead and add concept info in now, with a note that the feature is still in beta in Kilo.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to openstack-manuals (master)

Fix proposed to branch: master
Review: https://review.openstack.org/219983

Changed in openstack-manuals:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to openstack-manuals (master)

Reviewed: https://review.openstack.org/219983
Committed: https://git.openstack.org/cgit/openstack/openstack-manuals/commit/?id=c70650a45e4d9b85b7e74f329dd98a90445c7f68
Submitter: Jenkins
Branch: master

commit c70650a45e4d9b85b7e74f329dd98a90445c7f68
Author: asettle <email address hidden>
Date: Thu Sep 3 13:59:25 2015 +1000

    Adding concept info for erasure coding

    Change-Id: If3264d05312133e50e7d6034b80a9075182d139c
    Partial-bug: #1357139

Revision history for this message
Alexandra Settle (alexandra-settle) wrote :

Transcribing a comment from the duplicate bug:

Atsushi SAKAI (sakaia) wrote on 2015-08-01: #1

From seeing swift document, storage_policy is defined in configuration file.
Of course, storage-policy "name" can be selected, but erasure-code itself cannot be selected.
So I think it is relate to manual, no relation to api-site.
Is my understanding is incorrect?

Configuring Policies
https://github.com/openstack/swift/blob/2.3.0/doc/source/overview_policies.rst

Changed in swift:
status: New → Confirmed
Changed in openstack-api-site:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
paul luse (paul-e-luse) wrote :

This doesn't look like a bug to me - or if it is it's not clear what the suspected issue is?

Revision history for this message
Alexandra Settle (alexandra-settle) wrote :

This is still open as we're awaiting the development of EC to move from beta.

Concept info has been added to the docs in the cloud admin guide (see here: http://docs.openstack.org/admin-guide-cloud/objectstorage_EC.html)

Once EC has been released properly, we will be working on using this bug to document the following:

Preparation: What hardware might I need for erasure coding that's different from what I have now? Do my proxy server specs need to change?
Upgrade Considerations: Can I convert my entire cluster to erasure coding rather than replication?
How-to: What configuration settings do I need to enable erasure coding? What are some good default settings for a starting point? What considerations are there for amount of reads and writes and those ratios?

Vishal (vishaldhanopia)
Changed in openstack-api-site:
assignee: nobody → Mark (rocky-asdf)
Changed in swift:
assignee: nobody → Mark (rocky-asdf)
Changed in openstack-manuals:
status: In Progress → Won't Fix
status: Won't Fix → Fix Released
Revision history for this message
Atsushi SAKAI (sakaia) wrote :

The new API-ref is maintained by each project (like swift not doc).

Changed in openstack-api-site:
status: Confirmed → Invalid
Revision history for this message
Alistair Coles (alistair-coles) wrote :

changed to released in swift because in my opinion we have released sufficient docs related to erasure coding

Changed in swift:
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.