Evacuating a Volume
If you need to remove or disable a disk, you must first move any data off the disk by evacuating it. Similarly, if the whole or parts of a volume are configured on disks that are needed for other purposes, or which are not optimal or appropriate for use by the volume, you can evacuate these.
To evacuate certain disks on which a volume is configured, use either of the following commands to specify these:
# vxvoladm [-g diskgroup] [-b] evacuate disk volume \
!dmname ... [use_storage=rule[,...]] [attributes...]
# vxvoladm [-g diskgroup] [-b] evacuate disk volume \ evac_storage=rule[,...] [use_storage=rule[,...]] \ [attributes...]
The disk media names of the disks that are to be evacuated are specified as !dmname where dmname is a disk media name. Alternatively, you can also use the storage specification attribute, evac_storage, to specify rules for evacuating currently used storage. The -b option may be specified to run the evacuation as a background task. ISP allocates suitable storage according the autogrow policy of the storage pool, or you can use the storage specification attribute, use_storage, to specify rules for allocating new storage.
For example, the following command evacuates disks mydg01 and mydg02 on which volume, vol01, is configured, and specifies disks mydg03 and mydg04 as destination disks:
# vxvoladm -g mydg evacuate disk vol01 !mydg01 !mydg02 \
use_storage='allof("DM"="mydg03","DM"="mydg04")'
Not only disks can be evacuated. You can also specify subdisks, columns, logs, mirrors or entire volumes to be evacuated. In these cases, you can use the evac_storage attribute to specify which storage is to be evacuated. In the following example, all columns of the volume are evacuated that have disks on controller c1:
# vxvoladm -g mydg evacuate column vol01 \ evac_storage='"Controller"="c1"'
The next example evacuates any disks in columns 0 or 1 that lie on controller c2:
# vxvoladm -g mydg evacuate column vol01 column=0,1 \ evac_storage='"Controller"="c1"'
This command specifies that both columns 0 and 1 are to be evacuated to disks on controller c2:
# vxvoladm -g mydg evacuate column vol01 column=0,1 \ use_storage='"Controller"="c2"'
In the final example, volume data is evacuated from subdisks that are connected to controller c1 to disks on any other controller:
# vxvoladm -g mydg evacuate subdisk vol01 \
evac_storage='allof("Controller"="c1")' \
use_storage='noneof("Controller"="c1")'
If the specified volume is currently enabled, the data in enabled plexes and their component enabled plexes is moved without interrupting the availability of the volume and without changing its redundancy. Subdisks that are within detached plexes, disabled plexes, detached logs, or RAID-5 subdisks are moved without any attempt to recover the data.
If the specified volume is not currently enabled, stale or offline plexes are moved without recovery. The evacuation fails if a non-enabled volume contains other subdisks that need to be moved.
|