expandarray

Use the expandarray command to add new drive capacity to an existing distributed array MDisk.

Syntax

Read syntax diagramSkip visual syntax diagram expandarray -totaldrivecount resulting_drive_count -driveclassdrive_class_id-totalrebuildareasresulting_rebuild_area_countmdisk_idmdisk_name

Parameters

totaldrivecount
(Required) The resulting drive count after expansion is completed. This value must be an integer in the range of 5 and 128. For distributed RAID 1 arrays, this value must be an integer in the range of 3 and 16.
  • Up to 48 NVMe drives in a distributed RAID 6 array.
  • For (any) distributed RAID 6 arrays it is not allowed to add more than 42 members drives in one expandarray invocation.
  • For (any) distributed RAID 1 arrays it is not allowed to add more than 12 member drives in one expandarray invocation.
driveclass
(Optional) The drive class (as specified by lsdriveclass) to be used for selecting new member drives. If you do not specify a drive class, the default drive class is the one quoted in lsarray for the distributed array.
totalrebuildareas
(Optional) The resulting rebuild area count after expansion is completed. The additional rebuild area value must be included in totaldrivecount. This value must be an integer in the range of 1 and 4. For distributed RAID 1 arrays, this value must be 1. Values 2, 3, and 4 are not supported. If you do not specify a value, the rebuild area count for the array remains unchanged, even if the total drive count exceeds a threshold where the default array creation behavior would result in creating an extra rebuild area.
Note: You cannot expand a distributed RAID array of compressing drives to have more than one rebuild area.
mdisk_id
(Optional) The identity of the array MDisk. Required if mdisk_name is not specified.
mdisk_name
(Optional) The name of the array MDisk. Required if mdisk_id is not specified.

Description

This command starts the array expansion task.

Important: The -totaldrivecount value includes any extra drives that are added as rebuild areas.
This list describes some items to be aware of when you expand an array:
  • Multiple expansions are not configured and queued. The maximum number of active expansions in the system is four and there can be only one in a pool at one time.
  • The command uses the totaldrivecount/totalrebuildareas to ensure that if a mistake occurs and the current size of the array is entered then the command has no effect.
  • If no drive class is specified, then the drive class of the array you are expanding is used. If a drive class is specified, then it is validated to ensure it is equivalent or superior to the drive class of the array you are expanding.
  • The array must have no used rebuild areas or background tasks in progress or the command fails.
  • The progress of the expansion can be monitored by using the lsarrayexpansionprogress command.
  • An expansion cannot be canceled.
  • Volume copies with sequential (seq) policy that are allocated from the expanding MDisk change to striped as part of the expansion migration.
  • Expansion can have an impact on host performance and latency when performed on an array that has over 50% load.
An expansion is suspended if any of the following conditions exist:
  • The expanding MDisk goes offline.
  • There is a read error during migration activity.
  • It is necessary (but not possible) to record a virtual medium error.
  • An out of space condition occurs on an MDisk that is used as an expansion migration target.

Invocation examples

svctask expandarray -totaldrivecount 8 mdisk3                      // Expand mdisk3 to 8 drives from the array's driveclass
svctask expandarray -totaldrivecount 6 -totalrebuildareas 2 32     // Expand mdisk 32 to 6 drives, 2 of which being rebuild areas
svctask expandarray -driveclass 0 -totaldrivecount 16 48           // Expand mdisk 48 to 16 drives from drive class 0

The resulting output:

None