Add erasure code policy support to swift
This patch is version 1 (not tested) of adding erasure code support to swift. It adds the following: - Add policy_type, ec_type, ec_num_data_fragments, ec_num_parity_fragments and ec_object_segment_size to the policy definition. - Update the ring.contents.j2 to set replica count for the ring to ec_num_parity_fragments + ec_object_segment_size, if using the erasure code policy_type. - Adds extra EC options to swift.conf for EC policies. I may have missed something and again this hasn't been tested yet. NOTE: EC in Swift is strictly _BETA_ and shouldn't be run in production, however, we do need to test it! Change-Id: If2069a95e6ea92e34fb329cb6e0027188f15f0bb
This commit is contained in:
parent
d1cd6a9617
commit
54f11a1fd3
@ -22,7 +22,11 @@
|
|||||||
{### Lets get the min_part_hours, part_power and repl_number vals #}
|
{### Lets get the min_part_hours, part_power and repl_number vals #}
|
||||||
{% set min_part_hours = item.min_part_hours | default(swift.min_part_hours | default(swift_default_min_part_hours)) %}
|
{% set min_part_hours = item.min_part_hours | default(swift.min_part_hours | default(swift_default_min_part_hours)) %}
|
||||||
{% set part_power = item.part_power | default(swift.part_power) %}
|
{% set part_power = item.part_power | default(swift.part_power) %}
|
||||||
|
{% if (item.policy_type is defined) and (item.policy_type == "erasure_coding") %}
|
||||||
|
{% set repl_number = item.ec_num_data_fragments + item.ec_num_parity_fragments %}
|
||||||
|
{% else %}
|
||||||
{% set repl_number = item.repl_number | default(swift.repl_number | default(swift_default_replication_number)) %}
|
{% set repl_number = item.repl_number | default(swift.repl_number | default(swift_default_replication_number)) %}
|
||||||
|
{% endif %}
|
||||||
{### Create the builder dict #}
|
{### Create the builder dict #}
|
||||||
{% set builder = {} %}
|
{% set builder = {} %}
|
||||||
{### This is a hacky way of updating the builder dict #}
|
{### This is a hacky way of updating the builder dict #}
|
||||||
|
@ -4,16 +4,31 @@
|
|||||||
swift_hash_path_suffix = {{ swift_hash_path_suffix }}
|
swift_hash_path_suffix = {{ swift_hash_path_suffix }}
|
||||||
swift_hash_path_prefix = {{ swift_hash_path_prefix }}
|
swift_hash_path_prefix = {{ swift_hash_path_prefix }}
|
||||||
|
|
||||||
|
|
||||||
# Storage Policies
|
# Storage Policies
|
||||||
{% for policy in swift.storage_policies %}
|
{% for policy in swift.storage_policies %}
|
||||||
|
{% set swift_policy_type = policy.policy.policy_type|default('replication') %}
|
||||||
|
|
||||||
[storage-policy:{{ policy.policy.index }}]
|
[storage-policy:{{ policy.policy.index }}]
|
||||||
name = {{ policy.policy.name }}
|
name = {{ policy.policy.name }}
|
||||||
|
policy_type = {{ swift_policy_type }}
|
||||||
|
|
||||||
|
{% if swift_policy_type == 'erasure_coding' %}
|
||||||
|
ec_type = {{ policy.policy.ec_type }}
|
||||||
|
ec_num_data_fragments = {{ policy.policy.ec_num_data_fragments }}
|
||||||
|
ec_num_parity_fragments = {{ policy.policy.ec_num_parity_fragments }}
|
||||||
|
ec_object_segment_size = {{ policy.policy.ec_object_segment_size }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if policy.policy.deprecated is defined %}
|
{% if policy.policy.deprecated is defined %}
|
||||||
deprecated = {{ policy.policy.deprecated }}
|
deprecated = {{ policy.policy.deprecated }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if policy.policy.default is defined %}
|
{% if policy.policy.default is defined %}
|
||||||
default = {{ policy.policy.default }}
|
default = {{ policy.policy.default }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
[swift-constraints]
|
[swift-constraints]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user