13579: Admin documentation about storage classes
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Jun 2018 19:24:46 +0000 (15:24 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Jun 2018 19:30:14 +0000 (15:30 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

doc/_config.yml
doc/admin/storage-classes.html.textile.liquid
doc/install/configure-azure-blob-storage.html.textile.liquid
doc/install/configure-fs-storage.html.textile.liquid
doc/install/configure-s3-object-storage.html.textile.liquid
doc/install/install-keepstore.html.textile.liquid

index 49b9a3b4a62941caf55cc86f500b6e532893d9c5..17073347c1b5d523aa984cc9c07cdf6f9e2ecfd6 100644 (file)
@@ -168,6 +168,7 @@ navbar:
       - install/install-shell-server.html.textile.liquid
       - install/create-standard-objects.html.textile.liquid
       - install/install-keepstore.html.textile.liquid
+      - install/configure-fs-storage.html.textile.liquid
       - install/configure-s3-object-storage.html.textile.liquid
       - install/configure-azure-blob-storage.html.textile.liquid
       - install/install-keepproxy.html.textile.liquid
index eed202d361f29fd3614dbccea1bb13de8e93bad6..b518502c70ad50e5b356af5e3136896683d2059b 100644 (file)
@@ -10,4 +10,58 @@ Copyright (C) The Arvados Authors. All rights reserved.
 SPDX-License-Identifier: CC-BY-SA-3.0
 {% endcomment %}
 
-Storage classes (sometimes also called "storage tiers") allow you to control which volumes should be used to store particular collection data blocks.  This can be used to implement data storage policies such as moving data to archival storage.
+Storage classes (alternately known as "storage tiers") allow you to control which volumes should be used to store particular collection data blocks.  This can be used to implement data storage policies such as moving data to archival storage.
+
+h3. Configuring storage classes
+
+The storage classes for each volume are set in the per-volume "keepstore configuration":{{site.baseurl}}/install/install-keepstore.html
+
+<pre>
+Volumes:
+ - ... Volume configuration ...
+   #
+   # If no storage classes are specified, will use [default]
+   #
+   StorageClasses: null
+
+ - ... Volume configuration ...
+   #
+   # Specify this volume is in the "archival" storage class.
+   #
+   StorageClasses: [archival]
+
+</pre>
+
+Names of storage classes are internal to the cluster and decided by the administrator.  Aside from "default", Arvados currently does not define any standard storage class names.
+
+h3. Using storage classes
+
+Desired storage classes are specified by setting the "storage_classes_desired" field of a Collection.  For example, at the command line:
+
+<pre>
+$ arv collection update --uuid zzzzz-4zz18-dhhm0ay8k8cqkvg --collection '{"storage_classes_desired": ["archival"]}'
+</pre>
+
+By setting "storage_classes_desired" to "archival", the blocks that make up the collection will be preferentially moved to keepstore volumes which are configured with the "archival" storage class.
+
+You may also specify the desired storage class when using @arv-put@:
+
+<pre>
+$ arv-put --storage-classes=hot myfile.txt
+</pre>
+
+Collection blocks will be in the "default" storage class if not otherwise specified.
+
+A collection may have only specify one desired storage class.
+
+A user with write access to a collection may set any storage class.
+
+h3. Storage management notes
+
+The "keep-balance":{{site.baseurl}}/install/install-keep-balance.html service is responsible for deciding which blocks should be placed on which keepstore volumes.  As part of the rebalancing behavior, it will determine where a block should go in order to satisfy the desired storage classes, and issue pull requests to copy the block from its original volume to the desired volume.  The block will subsequently be moved to trash on the original volume.
+
+If a block appears in multiple collections with different storage classes, the block will be stored in separate volumes for each storage class, even if that results in overreplication, unless there is a volume which has all the desired storage classes.
+
+If a collection has a desired storage class which is not available in any keepstore volume, the collection's blocks will remain in place, and an error will appear in the @keep-balance@ logs.
+
+This feature does not provide a hard guarantee on where data will be stored.  Data may be written to default storage and moved to the desired storage class later.  If controlling data locality is a hard requirement (such as legal restrictions on the location of data) we recommend setting up multiple Arvados clusters.
index d2c4e709df1bed64aba4f3416353498778dbba84..41f86f9ba0e2f76cdaa9170ce8eeb3f152cbe384 100644 (file)
@@ -76,8 +76,8 @@ Volumes:
   # environment.  See below for an example of an alternate cloud environment.
   StorageBaseURL: ""
 
-  # Storage classes to associate with this volume.  See "Configuring
-  # storage classes" in the "Admin" section of doc.arvados.org.
+  # Storage classes to associate with this volume.  See "Storage
+  # classes" in the "Admin" section of doc.arvados.org.
   StorageClasses: null
 
 - # Example configuration to use Azure China.
index 730eed6653b554dd52beddf09d95a6bbc8839de8..ddd54c3f0c7f3e8d0c885d1f0fe99f06081bffcd 100644 (file)
@@ -42,8 +42,8 @@ Volumes:
   # don't want this.
   Serialize: false
 
-  # Storage classes to associate with this volume.  See "Configuring
-  # storage classes" in the "Admin" section of doc.arvados.org.
+  # Storage classes to associate with this volume.  See "Storage
+  # classes" in the "Admin" section of doc.arvados.org.
   StorageClasses: null
 
   # Example of a second volume section
index b4d9e929cba46c4932f0551014095dbdad0b398b..88172fa9f7c04bf67e18e3697d9742fbc6cec285 100644 (file)
@@ -71,8 +71,8 @@ Volumes:
   # This is used to inform replication decisions at the Keep layer.
   S3Replication: 2
 
-  # Storage classes to associate with this volume.  See "Configuring
-  # storage classes" in the "Admin" section of doc.arvados.org.
+  # Storage classes to associate with this volume.  See
+  # "Storage classes" in the "Admin" section of doc.arvados.org.
   StorageClasses: null
 
   # Enable deletion (garbage collection) even when TrashLifetime is
@@ -88,7 +88,7 @@ h3. Example config for Google cloud storage
 
 See previous section for documentation of configuration fields.
 
-</pre>
+<pre>
 Volumes:
 - # Example configuration using alternate storage provider
   # Configuration for Google cloud storage
index 402d15cb53d0ac754083f7985ed5ad1b5c2143f9..05a6a0d5381cbb2577fdc3545871e54d414a4a39 100644 (file)
@@ -166,7 +166,7 @@ When a block is newly written, it is protected from deletion for the duration in
 
 If keep-balance instructs keepstore to trash a block which is older than @BlobSignatureTTL@, and @EnableDelete@ is true, the block will be moved to "trash".  A block which is in the trash is no longer accessible by read requests, but has not yet been permanently deleted.  Blocks which are in the trash may be recovered using the "untrash" API endpoint.  Blocks are permanently deleted after they have been in the trash for the duration in @TrashLifetime@.
 
-Keep-balance is also responsible for balancing the distribution of blocks across keepstore servers by asking servers to pull blocks from other servers (as determined by their storage class and "rendezvous hashing order":{{site.baseurl}}/api/storage.html).  Pulling a block makes a copy.  If a block is overreplicated (i.e. there are excess copies) after pulling, it will be subsequently trashed on the original server.
+Keep-balance is also responsible for balancing the distribution of blocks across keepstore servers by asking servers to pull blocks from other servers (as determined by their "storage class":{{site.baseurl}}/admin/storage-classes.html and "rendezvous hashing order":{{site.baseurl}}/api/storage.html).  Pulling a block makes a copy.  If a block is overreplicated (i.e. there are excess copies) after pulling, it will be subsequently trashed on the original server.
 
 h3. Configure storage volumes