14 Commits

Author SHA1 Message Date
Tim Burke
13f1fc0885 Clean up EC overview docs a bit
Change-Id: I3bab2c015c63f32dcd6e4beefbcd0fcf22e91eec
2017-01-30 23:30:35 +00:00
Alistair Coles
b13b49a27c EC - eliminate .durable files
Instead of using a separate .durable file to indicate
the durable status of a .data file, rename the .data
to include a durable marker in the filename. This saves
one inode for every EC fragment archive.

An EC policy PUT will, as before, first rename a temp
file to:

   <timestamp>#<frag_index>.data

but now, when the object is committed, that file will be
renamed:

   <timestamp>#<frag_index>#d.data

with the '#d' suffix marking the data file as durable.

Diskfile suffix hashing returns the same result when the
new durable-data filename or the legacy durable file is
found in an object directory. A fragment archive that has
been created on an upgraded object server will therefore
appear to be in the same state, as far as the consistency
engine is concerned, as the same fragment archive created
on an older object server.

Since legacy .durable files will still exist in deployed
clusters, many of the unit tests scenarios have been
duplicated for both new durable-data filenames and legacy
durable files.

Change-Id: I6f1f62d47be0b0ac7919888c77480a636f11f607
2016-10-10 18:11:02 +01:00
Luong Anh Tuan
53aebba903 Fix a typo in documentation
remove redundant 'this'

Change-Id: I8860190d882b255a3d416de685f930d2b2c0ad17
2016-10-04 10:07:10 +07:00
Alistair Coles
44a861787a Enable object server to return non-durable data
This patch improves EC GET response handling:

- The proxy no longer requires all object servers to have a
  durable file for the fragment archive that they return in
  response to a GET. The proxy will now be satisfied if just
  one object server has a durable file at the same timestamp
  as fragments from other object servers.

  This means that the proxy can now successfully GET an
  object that had missing durable files when it was PUT.

- The proxy will now ensure that it has a quorum of *unique*
  fragment indexes from object servers before considering a
  GET to be successful.

- The proxy is now able to fetch multiple fragment archives
  having different indexes from the same node. This enables
  the proxy to successfully GET an object that has some
  fragments that have landed on the same node, for example
  after a rebalance.

This new behavior is facilitated by an exchange of new
headers on a GET request and response between the proxy and
object servers.

An object server now includes with a GET (or HEAD) response:

- X-Backend-Fragments: the value of this describes all
  fragment archive indexes that the server has for the
  object by encoding a map of the form: timestamp -> <list
  of fragment indexes>

- X-Backend-Durable-Timestamp: the value of this is the
  internal form of the timestamp of the newest durable file
  that was found, if any.

- X-Backend-Data-Timestamp: the value of this is the
  internal form of the timestamp of the data file that was
  used to construct the diskfile.

A proxy server now includes with a GET request:

- X-Backend-Fragment-Preferences: the value of this
  describes the proxy's current preference with respect to
  those fragments that it would have object servers
  return. It encodes a list of timestamp, and for each
  timestamp a list of fragment indexes that the proxy does
  NOT require (because it already has them).

  The presence of a X-Backend-Fragment-Preferences header
  (even one with an empty list as its value) will cause the
  object server to search for the most appropriate fragment
  to return, disregarding the existence or not of any
  durable file. The object server assumes that the proxy
  knows best.

Closes-Bug: 1469094
Closes-Bug: 1484598

Change-Id: I2310981fd1c4622ff5d1a739cbcc59637ffe3fc3
Co-Authored-By: Paul Luse <paul.e.luse@intel.com>
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
2016-09-16 11:40:14 +01:00
Thiago da Silva
886fa0822a update pyeclib and liberasurecode links
Change-Id: Ic6d04083618362778363fea1570caaa865e44557
Signed-off-by: Thiago da Silva <thiago@redhat.com>
2016-06-02 23:03:26 -04:00
Christian Schwede
043fbca6d0 Remove Erasure Coding beta status from docs
This removes notes stating support for Erasure coding as beta. Questions
regarding the stability of EC are coming up regularly, and are often referring
to the docs that state EC as still in beta.

Besides this, a note marking statsd support as beta has been removed as well.

Change-Id: If4fb6a5c4cb741d42953db3cee8cb17a1d774e15
2016-03-04 14:27:23 +00:00
Kazuhiro MIYAHARA
c3201f256c Remove execute permissions from doc files and swift.conf-sample
Some doc files and swift.conf-sample were added execute permissions in past changes.
This patch remove execute permissions from them.

Change-Id: Id8844989a8321578e9207566ebd6660f5b9523f0
2016-02-18 08:52:03 +00:00
Ondřej Nový
16976a0f14 Changed EC backend from jerasure to liberasurecode in examples and docs
liberasurecode_rs_vand is build-in liberasurecode, so you don't need
another depedency libjerasure2.

liberasurecode_rs_vand is supported by pyeclib from 1.0.8
version, so bumping version up.

Closes-Bug: #1534325
Change-Id: If2d96875694df8fd48c5278395859aaa165cb566
2016-02-02 23:08:11 +01:00
Bill Huber
0bcd7fd50e Update Erasure Coding Overview doc to remove Beta version
The major functionality of EC has been released for Liberty and
the beta version of the code has been removed since it is now
in production.

Change-Id: If60712045fb1af803093d6753fcd60434e637772
2015-12-18 11:43:12 -06:00
Alistair Coles
01f9d15045 Fix EC documentation of .durable quorum
Update the doc to reflect the change [1] to ndata + 1
.durable files being committed before a success response
is returned for a PUT.

[1] Ifd36790faa0a5d00ec79c23d1f96a332a0ca0f0b

Change-Id: I1744d457bda8a52eb2451029c4031962e92c2bb7
2015-10-08 18:55:29 +01:00
Alistair Coles
167f3c8cbd Update EC overview doc for PUT path
Update the EC overview docs 'under the hood' section to reflect the
change in durable file parity from 2 to ec_nparity + 1 [1].

Also fix some typos and cleanup the text.

[1] change id I80d666f61273e589d0990baa78fd657b3470785d

Change-Id: I23f6299da59ba8357da2bb5976d879d9a4bb173e
2015-09-30 09:45:57 +01:00
Bill Huber
530102ae07 Update EC Support on how to build an EC ring with replicas count
This doc is being updated to specify the replicas count parameter
to build an EC ring that enforces both data and parity placements
for each partition.

Change-Id: I770ad268e4017e610be3357e89b89f0b7d3c18af
Closes-Bug: 1487203
2015-09-15 09:40:39 +01:00
Atsushi SAKAI
964869accc Fix six typos on swift documentation
mechanisim => mechanism
    http://docs.openstack.org/developer/swift/cors.html
overridde => override
   http://docs.openstack.org/developer/swift/deployment_guide.html
extentsions => extensions
  http://docs.openstack.org/developer/swift/development_ondisk_backends.html
reuqest => request
  http://docs.openstack.org/developer/swift/logs.html
suport => support
  http://docs.openstack.org/developer/swift/overview_architecture.html
mininum => minimum
  http://docs.openstack.org/developer/swift/overview_erasure_code.html

$ git diff | diffstat
 cors.rst | 2 +-
 deployment_guide.rst | 2 +-
 development_ondisk_backends.rst | 2 +-
 logs.rst | 2 +-
 overview_architecture.rst | 2 +-
 overview_erasure_code.rst | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

Change-Id: I8e095f4c216b2cfae48dff1e17d387048349f73c
Closes-Bug: #1477877
2015-07-24 17:11:49 +09:00
Paul Luse
8f5d4d2455 Erasure Code Documentation
This patch adds all the relevant EC documentation to
the source tree. Notable additions are:
  - Updated SAIO documentation
  - Updates to existing swift documentation; and
  - Erasure Coding overview

Co-Authored-By: Alistair Coles <alistair.coles@hp.com>
Co-Authored-By: Thiago da Silva <thiago@redhat.com>
Co-Authored-By: John Dickinson <me@not.mn>
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com>
Co-Authored-By: Samuel Merritt <sam@swiftstack.com>
Co-Authored-By: Christian Schwede <christian.schwede@enovance.com>
Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com>
Change-Id: I0403016a4bb7dad9535891632753b0e5e9d402eb
Implements: blueprint swift-ec
Signed-off-by: Thiago da Silva <thiago@redhat.com>
2015-04-14 00:52:17 -07:00