Browse Source

[DOCS] Re-add docs for multiple data paths (MDP) (#78342)

We deprecated support for multiple data paths (MDP) in 7.13. However,
we won't remove support until after 8.0.

Changes:

* Reverts PR #72267, which removed MDP docs
* Removes a related item from the 8.0 breaking changes.
James Rodewig 4 years ago
parent
commit
485e7deaa0

+ 3 - 3
docs/reference/commands/node-tool.asciidoc

@@ -137,10 +137,10 @@ repaired. If the cluster is still available then you can start up a fresh node
 on another host and {es} will bring this node into the cluster in place of the
 failed node.
 
-Each node stores its data in the data directory defined by the
+Each node stores its data in the data directories defined by the
 <<path-settings,`path.data` setting>>. This means that in a disaster you can
-also restart a node by moving its data directory to another host, presuming
-that that data directory can be recovered from the faulty host.
+also restart a node by moving its data directories to another host, presuming
+that those data directories can be recovered from the faulty host.
 
 {es} <<modules-discovery-quorums,requires a response from a majority of the
 master-eligible nodes>> in order to elect a master and to update the cluster

+ 0 - 97
docs/reference/migration/migrate_8_0/node.asciidoc

@@ -46,103 +46,6 @@ all the corresponding subfolders in parallel. Each node uses the same subfolder
 (e.g. `nodes/2`) across all its data paths.
 ====
 
-.Support for multiple data paths has been removed.
-[%collapsible]
-====
-*Details* +
-In earlier versions the `path.data` setting accepted a list of data paths, but
-if you specified multiple paths then the behaviour was unintuitive and usually
-did not give the desired outcomes. Support for multiple data paths is now
-removed.
-
-*Impact* +
-Specify a single path in `path.data`. If needed, you can create a filesystem
-which spans multiple disks with a hardware virtualisation layer such as RAID,
-or a software virtualisation layer such as Logical Volume Manager (LVM) on
-Linux or Storage Spaces on Windows. If you wish to use multiple data paths on a
-single machine then you must run one node for each data path.
-
-If you currently use multiple data paths in a
-{ref}/high-availability-cluster-design.html[highly available cluster] then you 
-can migrate to a setup that uses a single path for each node without downtime 
-using a process similar to a 
-{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart]: shut each
-node down in turn and replace it with one or more nodes each configured to use
-a single data path. In more detail, for each node that currently has multiple
-data paths you should follow the following process. In principle you can
-perform this migration during a rolling upgrade to 8.0, but we recommend
-migrating to a single-data-path setup before starting to upgrade.
-
-1. Take a snapshot to protect your data in case of disaster.
-
-2. Optionally, migrate the data away from the target node by using an
-{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filter]:
-+
-[source,console]
---------------------------------------------------
-PUT _cluster/settings
-{
-  "transient": {
-    "cluster.routing.allocation.exclude._name": "target-node-name"
-  }
-}
---------------------------------------------------
-+
-You can use the {ref}/cat-allocation.html[cat allocation API] to track progress 
-of this data migration. If some shards do not migrate then the
-{ref}/cluster-allocation-explain.html[cluster allocation explain API] will help 
-you to determine why.
-
-3. Follow the steps in the 
-{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process]
-up to and including shutting the target node down.
-
-4. Ensure your cluster health is `yellow` or `green`, so that there is a copy
-of every shard assigned to at least one of the other nodes in your cluster.
-
-5. If applicable, remove the allocation filter applied in the earlier step.
-+
-[source,console]
---------------------------------------------------
-PUT _cluster/settings
-{
-  "transient": {
-    "cluster.routing.allocation.exclude._name": null
-  }
-}
---------------------------------------------------
-
-6. Discard the data held by the stopped node by deleting the contents of its
-data paths.
-
-7. Reconfigure your storage. For instance, combine your disks into a single
-filesystem using LVM or Storage Spaces. Ensure that your reconfigured storage
-has sufficient space for the data that it will hold.
-
-8. Reconfigure your node by adjusting the `path.data` setting in its
-`elasticsearch.yml` file. If needed, install more nodes each with their own
-`path.data` setting pointing at a separate data path.
-
-9. Start the new nodes and follow the rest of the
-{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] for 
-them.
-
-10. Ensure your cluster health is `green`, so that every shard has been
-assigned.
-
-You can alternatively add some number of single-data-path nodes to your
-cluster, migrate all your data over to these new nodes using
-{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filters], 
-and then remove the old nodes from the cluster. This approach will temporarily 
-double the size of your cluster so it will only work if you have the capacity to 
-expand your cluster like this.
-
-If you currently use multiple data paths but your cluster is not highly
-available then the you can migrate to a non-deprecated configuration by taking
-a snapshot, creating a new cluster with the desired configuration and restoring
-the snapshot into it.
-====
-
 .Closed indices created in {es} 6.x and earlier versions are not supported.
 [%collapsible]
 ====

+ 109 - 0
docs/reference/setup/important-settings/path-settings.asciidoc

@@ -26,3 +26,112 @@ Supported `path.data` and `path.logs` values vary by platform:
 include::{es-repo-dir}/tab-widgets/code.asciidoc[]
 
 include::{es-repo-dir}/tab-widgets/customize-data-log-path-widget.asciidoc[]
+
+[discrete]
+==== Multiple data paths
+deprecated::[7.13.0]
+
+If needed, you can specify multiple paths in `path.data`. {es} stores the node's
+data across all provided paths but keeps each shard's data on the same path.
+
+{es} does not balance shards across a node's data paths. High disk
+usage in a single path can trigger a <<disk-based-shard-allocation,high disk
+usage watermark>> for the entire node. If triggered, {es} will not add shards to
+the node, even if the node’s other paths have available disk space. If you need
+additional disk space, we recommend you add a new node rather than additional
+data paths.
+
+include::{es-repo-dir}/tab-widgets/multi-data-path-widget.asciidoc[]
+
+[discrete]
+[[mdp-migrate]]
+==== Migrate from multiple data paths
+
+Support for multiple data paths was deprecated in 7.13 and will be removed
+in a future release.
+
+As an alternative to multiple data paths, you can create a filesystem which
+spans multiple disks with a hardware virtualisation layer such as RAID, or a
+software virtualisation layer such as Logical Volume Manager (LVM) on Linux or
+Storage Spaces on Windows. If you wish to use multiple data paths on a single
+machine then you must run one node for each data path.
+
+If you currently use multiple data paths in a
+{ref}/high-availability-cluster-design.html[highly available cluster] then you 
+can migrate to a setup that uses a single path for each node without downtime 
+using a process similar to a 
+{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart]: shut each
+node down in turn and replace it with one or more nodes each configured to use
+a single data path. In more detail, for each node that currently has multiple
+data paths you should follow the following process. In principle you can
+perform this migration during a rolling upgrade to 8.0, but we recommend
+migrating to a single-data-path setup before starting to upgrade.
+
+1. Take a snapshot to protect your data in case of disaster.
+
+2. Optionally, migrate the data away from the target node by using an
+{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filter]:
++
+[source,console]
+--------------------------------------------------
+PUT _cluster/settings
+{
+  "transient": {
+    "cluster.routing.allocation.exclude._name": "target-node-name"
+  }
+}
+--------------------------------------------------
++
+You can use the {ref}/cat-allocation.html[cat allocation API] to track progress 
+of this data migration. If some shards do not migrate then the
+{ref}/cluster-allocation-explain.html[cluster allocation explain API] will help 
+you to determine why.
+
+3. Follow the steps in the 
+{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process]
+up to and including shutting the target node down.
+
+4. Ensure your cluster health is `yellow` or `green`, so that there is a copy
+of every shard assigned to at least one of the other nodes in your cluster.
+
+5. If applicable, remove the allocation filter applied in the earlier step.
++
+[source,console]
+--------------------------------------------------
+PUT _cluster/settings
+{
+  "transient": {
+    "cluster.routing.allocation.exclude._name": null
+  }
+}
+--------------------------------------------------
+
+6. Discard the data held by the stopped node by deleting the contents of its
+data paths.
+
+7. Reconfigure your storage. For instance, combine your disks into a single
+filesystem using LVM or Storage Spaces. Ensure that your reconfigured storage
+has sufficient space for the data that it will hold.
+
+8. Reconfigure your node by adjusting the `path.data` setting in its
+`elasticsearch.yml` file. If needed, install more nodes each with their own
+`path.data` setting pointing at a separate data path.
+
+9. Start the new nodes and follow the rest of the
+{ref}/restart-cluster.html#restart-cluster-rolling[rolling restart process] for 
+them.
+
+10. Ensure your cluster health is `green`, so that every shard has been
+assigned.
+
+You can alternatively add some number of single-data-path nodes to your
+cluster, migrate all your data over to these new nodes using
+{ref}/modules-cluster.html#cluster-shard-allocation-filtering[allocation filters], 
+and then remove the old nodes from the cluster. This approach will temporarily 
+double the size of your cluster so it will only work if you have the capacity to 
+expand your cluster like this.
+
+If you currently use multiple data paths but your cluster is not highly
+available then the you can migrate to a non-deprecated configuration by taking
+a snapshot, creating a new cluster with the desired configuration and restoring
+the snapshot into it.

+ 39 - 0
docs/reference/tab-widgets/multi-data-path-widget.asciidoc

@@ -0,0 +1,39 @@
+++++
+<div class="tabs" data-tab-group="os">
+  <div role="tablist" aria-label="multi-data-path">
+    <button role="tab"
+            aria-selected="true"
+            aria-controls="unix-tab-multi-data-path"
+            id="unix-multi-data-path">
+      Unix-like systems
+    </button>
+    <button role="tab"
+            aria-selected="false"
+            aria-controls="win-tab-multi-data-path"
+            id="win-multi-data-path">
+      Windows
+    </button>
+  </div>
+  <div tabindex="0"
+       role="tabpanel"
+       id="unix-tab-multi-data-path"
+       aria-labelledby="unix-multi-data-path">
+++++
+
+include::multi-data-path.asciidoc[tag=unix]
+
+++++
+  </div>
+  <div tabindex="0"
+       role="tabpanel"
+       id="win-tab-multi-data-path"
+       aria-labelledby="win-multi-data-path"
+       hidden="">
+++++
+
+include::multi-data-path.asciidoc[tag=win]
+
+++++
+  </div>
+</div>
+++++

+ 26 - 0
docs/reference/tab-widgets/multi-data-path.asciidoc

@@ -0,0 +1,26 @@
+// tag::unix[]
+Linux and macOS installations support multiple Unix-style paths in `path.data`:
+
+[source,yaml]
+----
+path:
+  data:
+    - /mnt/elasticsearch_1
+    - /mnt/elasticsearch_2
+    - /mnt/elasticsearch_3
+----
+// end::unix[]
+
+
+// tag::win[]
+Windows installations support multiple DOS paths in `path.data`:
+
+[source,yaml]
+----
+path:
+  data:
+    - "C:\\Elastic\\Elasticsearch_1"
+    - "E:\\Elastic\\Elasticsearch_1"
+    - "F:\\Elastic\\Elasticsearch_3"
+----
+// end::win[]