

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在聚合之间移动卷
<a name="moving-fg-volumes"></a>

向文件系统添加高可用性（HA）对时，需要通过向新聚合迁移卷来重新平衡现有的数据。要在聚合之间移动卷，可以使用 ONTAP CLI 中的 `volume move` 命令。

在使用 `volume move` 命令之前，应考虑以下几点：
+ 使用 `volume move` 命令会影响性能，因为该命令会消耗文件系统上的网络和磁盘资源。因此，我们建议在低活动时期进行聚合间卷移动。或者，可以在移动卷时将文件系统的网络吞吐量利用率和磁盘吞吐量利用率降低至不超过 50%。
+ 为了减少对文件系统的性能影响，我们建议每次在两个 HA 对和聚合之间移动单个卷。例如，如果文件系统有四个 HA 对，我们建议每次移动两个卷（假设不是从相同的 HA 对移动卷，也不是向同一 HA 对移动卷）。ONTAP 支持在每个 HA 对上一次最多移动八个卷，但是更多的同步卷移动会降低客户端 I/O 和任何正在进行的卷移动的性能。
+ 存储在受影响卷的 SSD 层上的任何数据以物理方式移动到不同文件服务器上的一组不同磁盘中。此操作在后台进行，需要一定的时间。传输所需的时间取决于文件系统的吞吐能力以及文件系统上的活动量。但是，可以对卷移动进行限制。有关更多信息，请参阅 [限制卷移动](#throttle-volume-moves)。
+ 存储在容量池中的数据并非以物理方式进行移动，因为 HA 对具有相同的容量池存储。相反，ONTAP 会移动能够完整描述容量池中每个数据块的元数据（合乎逻辑的移动）。请记住，文件元数据始终存储在 SSD 层。有关更多信息，请参阅 [卷数据分层](volume-storage-capacity.md#volume-data-tiering)。

## 卷移动阶段
<a name="vol-move-phases"></a>

卷移动操作分为以下两个阶段：复制阶段和割接阶段。在复制阶段，现有数据被复制到卷的新聚合中。在割接阶段，ONTAP 尝试最后一次快速传输到卷的新聚合。这包括传输在传输阶段写入的所有数据，以及将新流量重定向到卷的新聚合。默认情况下，转换窗口为 30 秒，所有音量都会暂停 I/O 。如果 ONTAP 无法在割接窗口内执行所有这些步骤，就会失败。默认情况下，ONTAP 将尝试连续进行三次割接。如果连续三次尝试均告失败，则 ONTAP 将每小时重试一次，直到成功为止。您可以通过在切换阶段开始之前减少或暂停卷 I/O 流量来减少文件系统的负载，从而确保转换阶段成功。

## 开始卷移动
<a name="start-volume-move"></a>

**启动卷移动**

1. 要访问 NetApp ONTAP CLI，请运行以下命令在 Amazon FSx for NetApp ONTAP 文件系统的管理端口上建立 SSH 会话。将 `management_endpoint_ip` 替换为文件系统管理端口的 IP 地址。

   ```
   [~]$ ssh fsxadmin@management_endpoint_ip
   ```

   有关更多信息，请参阅 [使用 ONTAP CLI 管理文件系统](managing-resources-ontap-apps.md#fsxadmin-ontap-cli)。

1. 运行 [volume move start](https://docs.netapp.com/us-en/ontap-cli-9131/volume-move-start.html#description) ONTAP CLI 命令。替换以下值：
   + 将 `vserver_name` 替换为托管当前移动卷的 SVM 的名称。
   + 将 `volume_name` 替换为卷组件的名称（例如，`vol1__0001`）。
   + 将 `aggregate_name` 替换为卷的目标聚合的名称。
   + `-enforce-network-throttling` 可限制卷移动的总吞吐量。这是可选的。

   ```
   ::> volume move start -vserver svm_name -volume volume_name --destination-aggregate aggregate_name -foreground false
   [Job 1] Job is queued: Move "vol1__0001" in Vserver "svm01" to aggregate "aggr1". Use the "volume move show -vserver svm01 -volume vol1__0001" command to view the status of this operation.
   ```

**重要**  
移动卷会消耗源和目标文件服务器的网络与磁盘资源。因此，工作负载的性能会受到任何进行中卷移动的影响。此外，在卷移动的切换阶段，您的卷 I/O 流量将暂时暂停。

## 监控卷移动
<a name="monitor-volume-move"></a>

**监控卷移动**
+ 要查看卷移动操作的状态，可使用 `volume move show` ONTAP CLI 命令。

  ```
  ::> volume move show -vserver svm_name -volume volume_name 
  
  Vserver Name: svm01
  Volume Name: vol1__0001
  Actual Completion Time: -
  Bytes Remaining: 1.00TB
  Specified Action For Cutover: retry_on_failure
  Specified Cutover Time Window: 30
  Destination Aggregate: aggr2
  Destination Node: FsxId01234567890abcdef-03
  Detailed Status: Transferring data: 12.23GB sent.
  Percentage Complete: 1%
  Move Phase: replicating
  Prior Issues Encountered: -
  Estimated Remaining Duration: 00:40:25
  Replication Throughput: 434.3MB/s
  Duration of Move: 00:00:27
  Source Aggregate: aggr1
  Source Node: FsxId01234567890abcdef-01
  Move State: healthy
  ```

  命令输出显示完成移动的估计时间。完成后，`Move phase` 将显示 `completed` 状态。

## 保持 FlexGroup 卷平衡
<a name="balanced-flexgroups"></a>

为了使工作负载以最佳方式运行，FlexGroup 卷应涵盖所有聚合，且每个聚合的组成卷数应保持平均。我们建议每个聚合有八个组件。在重新平衡 FlexGroup 卷时，应考虑以下情况：
+ **在现有聚合之间移动 FlexGroup 组件：**如果将 FlexGroup's 组成卷移动到原本平衡的 FlexGroup 的另一个聚合，则应将另一个利用率较低的组件移动到原始聚合。这样可以确保 FlexGroup 的每个聚合保持平均的组件数。

  **添加 HA 对后将 FlexGroup 组件移动到新聚合中**：如果在添加 HA 对后将 FlexGroup's 组成卷移动到新聚合，则应在丢失组件的聚合上用更多的组件来扩展 FlexGroup。这样可以确保 FlexGroup 的每个聚合保持平均的组件数。有关更多信息，请参阅 [扩展 FlexGroup 卷](expanding-fg-volumes.md)。

## 限制卷移动
<a name="throttle-volume-moves"></a>

如果要限制在文件系统上进行卷移动的带宽，可以在操作开始时添加 `-enforce-network-throttling` 选项。

**注意**  
使用此选项会影响文件系统的传入 SnapMirror 复制数据传输。跟踪如何配置文件系统的复制选项，因为设置这些选项后就无法查看。

**限制卷移动**

1. 该限制操作使用全局复制节流。要设置全局复制节流，应在 ONTAP CLI 中使用以下命令。

   ```
   ::> options -option-name replication.throttle.enable on
   ```

1. 指定复制可使用的最大总带宽，并替换以下选项：
   + 将 `kbs_throttle` 替换为用于任何复制（包括 SnapMirror 和卷移动）的所需最大吞吐量，单位为千字节/秒。

   ```
   ::> options -option-name replication.throttle.incoming.max_kbs kbs_throttle 
   ::> options -option-name replication.throttle.outgoing.max_kbs kbs_throttle
   ```