vxsd(ADM)


vxsd - perform Volume Manager operations on subdisks

Synopsis

vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -l offset ] assoc plex subdisk ...
vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -l column[/offset] ] assoc
plex subdisk[:column[/offset]] ...

vxsd[ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] aslog plex subdisk
vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -p plex ] dis subdisk ...
vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -p plex ] -s size split subdisk newsd
[ newsd2 ]
vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -p plex ] join sd1 sd2 ... newsd
vxsd [ -Vf ] [ -g diskgroup ] [ -U usetype ] [ -o useopt ] [ -v volume ] [ -p plex ] mv oldsd newsd [ newsd ... ]

Description

The vxsd utility performs Volume Manager operations on subdisks and on plex-and-subdisk combinations. The first operand is a keyword that determines the specific operation to perform. The remaining operands specify the configuration objects to which the operation is to be applied.

Each operation can be applied to only one disk group at a time, due to internal implementation constraints. Any plex or subdisk name operands will be used to determine a default disk group, according to the standard disk group selection rules described in vxintro(ADM). A specific disk group can be selected with -g diskgroup.

If a vxsd operation is interrupted by a signal, then an attempt is made to restore the disk group configuration to a state that is roughly equivalent to its original state. If this attempt is interrupted, such as through another signal, then the user may need to perform some cleanup. The specific cleanup actions that are needed are written to the standard error before vxsd exits.

These are the recognized operation keywords:

assoc
Associate each named subdisk operand with the specified plex. The first form applies to concatenated plexes (i.e., with a layout of concat). The offset within the plex for the association can be specified with -l, which takes a standard Volume Manager length number (see vxintro(ADM)). If no offset is specified, then the default is to associate the subdisk at the end of the plex, thus extending the length of the plex by the length of the new subdisk.

For striped plexes, a column number for the subdisk association may be specified. The offset is interpreted as the column offset for the subdisk. If only one number is specified with -l for striped plexes, the number is interpreted as a column number and the subdisk is associated at the end of the column.

The column or column/offset at which a subdisk is to be associated can also be specified as part of the subdisk name in the same manner as subdisks associations are specified for plex creations in vxmake (see vxmake(F)). When specifying multiple subdisks, if no column or column/offset is specified for a subdisk, it is associated after the previous subdisk.

A subdisk cannot be associated to overlap with an another associated subdisk in the same plex.

If the named plex is associated with a volume, then the rules for performing the operation depend upon the usage type of the volume. A subdisk cannot be associated to a plex if the putil0 field for the subdisk is not empty. Creating a subdisk with the putil0 field set to a non- empty value is a sufficient means of ensuring that no Volume Manager operation will write to the region of disk blocks allocated to the subdisk because the subdisk cannot be associated through any means to a plex, and because subdisks cannot be used directly to read from or write to a disk.

aslog
Associate the named subdisk with the named plex as a log area for the plex. At most, one log subdisk can be associated with a plex at any given time. Currently, log subdisks can be used only with the dirty region logging feature, as defined by the DRL volume logging type. If the named plex is associated with a volume, then the rules for performing the operation depend upon the usage type of the volume. A subdisk cannot be associated if the putil0 field is set on the subdisk, just as with vxsd assoc.

dis
Dissociate each specified subdisk from the plex that it is associated with. If a subdisk is associated (through its plex) with a volume, then the rules for performing the operation depend upon the usage type of the volume.

Subdisk dissociation can be used as part of tearing down a plex, or as part of reorganization of disk space usage. Typically, the subdisk is no longer needed after dissociation. To support this type of use, -o rm can be specified to remove the named subdisks after successful dissociation.

split
Split the subdisk subdisk into two subdisks that reside on the same section of the same device, and that have contiguous plex associations (if the named subdisk is associated). The first of the two resultant subdisks will have a length of size, and the second will take up the remainder of the space used by the original subdisk. If both newsd and newsd2 are specified, then the resultant subdisks are newsd and newsd2. If no newsd2 operand was specified, then the resultant subdisks are named subdisk and newsd.

If the named subdisk is associated with an associated plex, then the rules for performing the operation depend upon the usage type of the volume. Log subdisks cannot be split.

join
Join the subdisks named by the sd operands to form a new subdisk named newsd. The sd operands must specify subdisks that represent contiguous sections of the same device, and of the same plex (if they are associated). For a striped plex, the sd operands must be in the same column. At least two sd operands are required. At the end of the operation, the sd configuration objects are removed. The newsd operand can have the same name as one of the sd operands, or it can have a different name.

If the sd operands are associated with an associated plex, then the rules for performing the operation depend upon the usage type of the volume.

mv
Move the contents of oldsd onto the new subdisks and replace oldsd with the new subdisks for any associations. If multiple new subdisks are specified, they are associated starting where the old subdisk began and placed consecutively with no space between them. The operation requires that oldsd be associated with an associated plex and that all new subdisks be dissociated. The operation can be used on a subdisk that is used by an active volume, and will ensure that data is copied and associations are changed without loss or corruption of data. The rules for performing the operation depend upon the usage type of the volume.

Moving a subdisk is the normal means of reorganizing disk space. For example, move regions of disk used by one volume to another disk to reduce contention on the original disk. Typically, once the operation completes, the original subdisk is no longer needed and can be removed. To support this use of the operation, -o rm can be specified to remove oldsd after successful completion of the operation.

Options

-g diskgroup
Specify the disk group for the operation, either by disk group ID or by disk group name. By default, the disk group is chosen based on the name operands.

-U usetype
Limit the operation to apply to this usage type. Attempts to affect volumes with a different usage type will fail.

-o useopt
Pass in usage-type-specific options to the operation. A certain set of operations are expected to be implemented by all usage types:

slow[=iodelay]
Reduce the system performance impact of copy operations. Copy operations are usually a set of short copy operations on small regions of the volume (normally from 16 kilobytes to 128 kilobytes). This option inserts a delay between the recovery of each such region. A specific delay can be specified with iodelay as a number of milliseconds, or a default is chosen (normally 250 milliseconds).

iosize=size
Perform copy operations in regions with the length specified by size, which is a standard Volume Manager length number (see vxintro(ADM)). Specifying a larger number typically causes the operation to complete sooner, but with greater impact on other processes using the volume. The default I/O size is typically 32 kilobytes.

rm
Remove the subdisks after successful completion of a vxsd dis operation. Remove the source subdisk after successful completion of vxsd mv.

-V
Write a list of utilities that would be called from vxsd, along with the arguments that would be passed. The -V performs a ``mock run'' so the utilities are not actually called.

-s size
Specify the size for the subdisk split operation. This option takes a standard Volume Manager length number (see vxintro(ADM)).

-l [column/]offset
Specify the offset of a subdisk within a plex address space for the vxsd assoc operation. For striped plexes a column number may be optionally specified. If one number is given for striped plexes the number is interpreted as a column number and the subdisk is associated at the end of the column. The offset is a standard Volume Manager length number (see vxintro(ADM)).

-v volume
Require that a named plex be associated with this volume, or that a named subdisk (source subdisk for vxsd split, join, and mv) be associated with a plex that is associated with this volume.

-p plex
Require that a named subdisk (source subdisk for vxsd split, join, and mv) be associated with this plex.

-f
Force an operation that the Volume Manager considers potentially dangerous or of questionable use. This permits a limited set of operations that would otherwise be disallowed. Some operations may be disallowed even with this flag.

Fsgen and gen usage types

The fsgen and gen usage types provide identical semantics for all operations of the vxsd utility.

In addition to the standard -o options required for all usage types, the fsgen and gen usage types provide the following additional option:

force
Force an operation that the Volume Manager considers potentially dangerous or of questionable use. This applies to attempts to dissociate subdisks (making a plex sparse) and to attempts to move subdisks onto subdisks that have a different size. This flag is the same as -f.

Limitations and extensions for the fsgen and gen usage types consist of the following:

assoc
If the named plex is enabled, and is associated with an enabled plex, then the named plex must be ACTIVE or EMPTY. Subdisks can be associated with a non-enabled plex only if the utility state of the plex is EMPTY, STALE, or OFFLINE, or if the plex is CLEAN and no other plexes associated with the volume are CLEAN or ACTIVE.

If the subdisk is associated with a non-enabled plex, or if it is associated with the only enabled, read- write plex in a volume, then the operation completes without copying any data onto the subdisk. If the subdisk is associated with an enabled plex in a mirrored volume, then the operation may have to copy data from the volume onto the new subdisk before the operation can complete.

aslog
If a log subdisk is associated with a plex that is associated with a volume that has a logging type of UNDEF, then the logging type of the volume is converted to DRL. Logging of volume changes is not enabled until there are at least two read-write mode plexes attached to the volume.

dis
Dissociating a subdisk requires use of -f if it would cause an enabled plex in an enabled volume to become sparse relative to the volume. Even with -f, it is not possible to make two plexes sparse if no complete, enabled, read-write plexes would remain associated. For disabled volumes, a similar check is made with respect to ACTIVE and CLEAN plexes.

split and join
The fsgen and gen usage types apply no additional restrictions and add no extensions to the split and join operations.

mv
If the total size of the destination subdisks differs from that of the source subdisk, then the -f option must be specified. The operation still fails if the total size of the destination subdisks is larger than the source subdisk and if the address range of any destination subdisk would conflict with another subdisk that is associated with the plex. The total size of the destination subdisks cannot be larger than the source subdisk if the kernel state of the volume or plex is detached.

The operation fails if the total size of the destination subdisks is smaller than the source subdisk and the operation would cause the total number of complete, enabled, read-mode plexes in the volume to drop to zero, while leaving more than one sparse, enabled, read-write plex.

RAID-5 usage type

In addition to the standard -o options required for all usage types, the raid5 usage type provides the following additional options:

force
Force an operation that the Volume Manager considers potentially dangerous or of questionable use. This applies to attempts to move a subdisk in a RAID-5 plex if the volume the plex is associated with does not have a log plex. This flag is the same as -f.

The raid5 usage type supports the following keywords:

assoc
Associate the named subdisks with the named RAID-5 plex. If plex is enabled and is associated with an enabled volume, then any data that maps onto the subdisk will be regenerated from the other columns of the RAID-5 plex. This is done by marking the subdisk as stale and writeonly, regenerating the data via VOL_R5_RECOVER ioctls, and then turning off the stale and writeonly flags.

If the RAID-5 plex is not associated or the RAID-5 volume is not ENABLED, the subdisk is associated and marked as stale. The subdisk's contents will be recovered when the volume is started.

The assoc operation may not be used on a log plex.

dis
Dissociate the named subdisks from the named RAID-5 plex. If removing the subdisk would make the volume unusable (because other subdisks in other columns at the same altitude are unusable or missing) and the volume is not disabled and EMPTY, the operation is not allowed. If the volume is disabled and non-EMPTY the operation requires use of -f.

The dis operation may not be used on a log plex.

split and join
The raid5 usage type applies no additional restrictions and adds no extensions to the split and join operations. These operations may not be used on a log plex.

mv
If the old subdisk is associated with a RAID-5 plex that is associated to a RAID-5 volume, the volume must be enabled for the move operation to complete. The mv operation is not allowed if the volume has stale parity or has missing or stale subdisks at the same altitude as the subdisk being replaced.

The mv operation first dissociates the old subdisk and then associates the new subdisk in its place. It then recovers the data using VOL_R5_RECOVER ioctls, as is done for the assoc operation. If the RAID-5 volume has no valid logs, the operation requires use of -f. This is necessary because if a crash were to occur while the data on the new subdisks was being recovered, the parity could become stale while some of the new subdisks are marked stale, thus rendering the volume unusable.

The mv operation may be used on a log plex. Similar rules as those defined for the fsgen and gen usage type plexes apply to log plexes. The force or -f must be used to make a log plex sparse.

Note that there is no aslog operation for the raid5 usage type. Logging is done on a plex level and therefore vxsd aslog is not needed. Log plexes can be associated with RAID-5 volumes using the vxplex att command.

Files

/etc/vx/type/usetype/vxsd
The utility that performs vxsd operations for a particular volume usage type.

Exit codes

The vxsd utility exits with a nonzero status if the attempted operation fails. A nonzero exit code is not a complete indicator of the problems encountered, but rather denotes the first condition that prevented further execution of the utility. See vxintro(ADM) for a list of standard exit codes.

References

vxintro(ADM), vxplex(ADM), vxsd(ADM), vxvol(ADM), vxmake(F)



Copyright © 2005 The SCO Group, Inc. All rights reserved.