使用 CLI 迁移数据块

要改善性能,您可以使用命令行界面 (CLI) 迁移数据块。

系统提供多种数据迁移功能。 这些功能可用于在父池内部和父池之间移动数据。 这些功能可与 I/O 操作并行使用。 您可以使用以下任一方法来迁移数据:
  1. 将数据(数据块)从一个 MDisk 迁移到另一个 MDisk(位于同一父池中)。 此方法可用于除去使用率很高的 MDisk。
  2. 将卷从一个父池迁移到另一个父池。 此方法可用于除去使用率很高的父池。 例如,您可降低 MDisk 池的使用率。 从父池接收容量的子池不能包含迁移到其中的数据块。
备注:
  1. 源 MDisk 当前不能作为任何其他迁移数据块操作的源 MDisk。
  2. 目标 MDisk 不能作为任何其他迁移数据块操作的目标 MDisk。

如果目标或源卷脱机,未定义任何定额磁盘,或者定义的定额磁盘不可用,那么迁移命令将失败。 请纠正脱机或定额磁盘状况,并重新发出该命令。

您可以通过收集有关节点、MDisk 和卷的输入/输出 (I/O) 统计信息,确定特定 MDisk 的使用率。 收集此数据后,您可以对其进行分析以确定频繁使用的 MDisk。 随后,以下过程将全程指导您查询数据块,并将其迁移到同一父池中的其他位置。 此过程只能使用命令行界面完成。

如果性能监控工具表明池中的 MDisk 已过度使用,您可将某些数据迁移到同一父池中的其他 MDisk 上。

  1. 发出以下 CLI 命令,确定 MDisk 的每个卷正在使用的数据块数:

    lsmdiskextent mdiskname

    该命令返回 MDisk 上每个卷正在使用的数据块数。 选择其中某些数据块以在池内进行迁移。
  2. 确定位于同一卷中的其他 MDisk。
    1. 要确定 MDisk 所属的父池,请发出以下 CLI 命令:

      lsmdisk mdiskname | ID

    2. 发出以下 CLI 命令以列出池中的 MDisk:

      lsmdisk -filtervalue mdisk_grp_name=mdiskgrpname

  3. 选择其中某个 MDisk 作为数据块的目标 MDisk。 您可通过发出以下 CLI 命令,确定在某个 MDisk 上存在的可用数据块数:
    lsfreeextents mdiskname
    您可以针对每个目标 MDisk 发出 lsmdiskextentnewmdiskname 命令,以确保迁移不会导致另一个 MDisk 过度使用。 检查拥有要移动的数据块集的卷是否尚未在目标 MDisk 上拥有很大的数据块集。
  4. 对于每个数据块集,发出以下 CLI 命令以将其移动到另一个 MDisk:

    migrateexts -source mdiskname | ID -exts num_extents
    -target newmdiskname | ID -threads 4 -vdisk vdiskid

    其中 num_extentsvdiskid 上数据块的数量。 newmdiskname | ID 值是要将此数据块集迁移至的 MDisk 的名称或标识。
    Note: 线程的数量表明迁移处理的优先级,其中 1 为最低优先级,4 为最高优先级。
  5. 针对要迁移的每个数据块集重复上述步骤。
  6. 您可通过发出以下 CLI 命令来检查迁移进度:

    lsmigrate