Volume Plex Object

[Beginning with Windows 8 and Windows Server 2012, the Virtual Disk Service COM interface is superseded by the Windows Storage Management API.]

A volume plex object models a volume plex that is contained by a volume. Only a mirrored volume can have multiple plexes; all other volume types have one plex. Each plex contains a copy of the data on the volume. VDS supports four volume plex types: simple, spanned, striped, and striped with parity. For a description of each of these volume types, see the Volume Object.

There are two ways to create a volume with multiple plexes. You can use the IVdsPack::CreateVolume method to create the mirrored volume directly, or use the IVdsVolume::AddPlex method to add one volume to another volume. The volumes (and the underlying disks) must be in the same pack. The following illustration shows an example of adding one volume (B) as a plex to another volume (A), and the resulting multiplexed volume (A). The data on volume A remains intact, while the data on volume B becomes a mirrored copy of the data on volume A.

Diagram that shows two single plexes, one with simple volume A and one with simple volume B, equal to multiple plexes with mirrored volume A.

You can query for volume plexes by invoking the IVdsVolume::QueryPlexes method. You can get a pointer to a specific volume plex by selecting the desired plex object from the enumeration that is returned by QueryPlexes. With the exception of the last plex, existing plexes can be broken or removed. Use the IVdsVolume::BreakPlex to split a plex from a volume and convert the broken plex object into a volume object. Use the IVdsVolume::RemovePlex to delete the plex altogether. You can attempt to repair a fault-tolerant plex by calling the IVdsVolumePlex::Repair method, which moves bad members to good disks.

In addition to an object identifier and plex type, volume plex object properties include the status, health, and transition state of the plex. This object has no flags.

The following table lists related interfaces, enumerations, and structures.

Type Element
Interfaces that are always exposed by this object IVdsVolumePlex.
Associated enumerations VDS_VOLUME_PLEX_STATUS, VDS_VOLUME_PLEX_TYPE, and VDS_DISK_EXTENT_TYPE.
Associated structures VDS_VOLUME_PLEX_PROP.

 

Software Provider Objects

Volume Object