Migrating extents using the CLI

To improve performance, you can migrate extents using the command-line interface (CLI).

The system provides various data migration features. These features can be used to move the placement of data both within parent pools and between parent pools. These features can be used concurrently with I/O operations. You can use either of these methods to migrate data:
  1. Migrating data (extents) from one MDisk to another (within the same parent pool). This method can be used to remove highly used MDisks.
  2. Migrating volumes from one parent pool to another. This method can be used to remove highly used parent pools. For example, you can reduce the use of a pool of MDisks. Child pools that receive their capacity from parent pools, cannot have extents that are migrated to them.
Notes:
  1. The source MDisk must not currently be the source MDisk for any other migrate extents operation.
  2. The destination MDisk must not be the destination MDisk for any other migrate extents operation.

Migration commands fail if the target or source volume is offline, there is no quorum disk defined, or the defined quorum disks are unavailable. Correct the offline or quorum disk condition and reissue the command.

You can determine the use of particular MDisks by gathering input/output (I/O) statistics about nodes, MDisks, and volumes. After you collect this data, you can analyze it to determine which MDisks are used frequently. The procedure then takes you through querying and migrating extents to different locations in the same parent pool. This procedure can only be completed using the command-line interface.

If performance monitoring tools indicate that an MDisk in the pool is being overused, you can migrate data to other MDisks within the same parent pool.

  1. Determine the number of extents that are in use by each volume for the MDisk by issuing this CLI command:

    lsmdiskextent mdiskname

    This command returns the number of extents that each volume is using on the MDisk. Select some of these extents to migrate within the pool.
  2. Determine the other MDisks that are in the same volume.
    1. To determine the parent pool that the MDisk belongs to, issue this CLI command:

      lsmdisk mdiskname | ID

    2. List the MDisks in the pool by issuing this CLI command:

      lsmdisk -filtervalue mdisk_grp_name=mdiskgrpname

  3. Select one of these MDisks as the target MDisk for the extents. You can determine how many free extents exist on an MDisk by issuing this CLI command:
    lsfreeextents mdiskname
    You can issue the lsmdiskextentnewmdiskname command for each of the target MDisks to ensure that you are not just moving the over-utilization to another MDisk. Check that the volume that owns the set of extents to be moved does not already own a large set of extents on the target MDisk.
  4. For each set of extents, issue this CLI command to move them to another MDisk:

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

    where num_extents is the number of extents on the vdiskid. The newmdiskname | ID value is the name or ID of the MDisk to migrate this set of extents to.
    Note: The number of threads indicates the priority of the migration processing, where 1 is the lowest priority and 4 is the highest priority.
  5. Repeat the previous steps for each set of extents that you are moving.
  6. You can check the progress of the migration by issuing this CLI command:

    lsmigrate