Symantec logo

Administering the Device Discovery Layer

Dynamic addition of disk arrays is possible because of the existence of the Device Discovery Layer (DDL) which is a facility for discovering disks and their attributes that are required for VxVM and DMP operations. The DDL is administered using the vxddladm utility, which can be used to perform the following tasks:

The following sections explain these tasks in more detail. For further information, see the vxddladm(1M) manual page.

Listing details of supported disk arrays

To list all currently supported disk arrays, use the following command:

# vxddladm listsupport all


  Note   Use this command to obtain values for the vid and pid attributes that are used with other forms of the vxddladm command.


To display more detailed information about a particular array library, use this form of the command:

# vxddladm listsupport libname=library_name.so

This command displays the vendor ID (VID), product IDs (PIDs) for the arrays, array types (for example, A/A or A/P), and array names. The following is sample output.

# vxddladm listsupport libname=libvxfujitsu.so

ATTR_NAME            ATTR_VALUE

=================================================

LIBNAME              libvxfujitsu.so

VID                  vendor

PID                  GR710, GR720, GR730

                     GR740, GR820, GR840

ARRAY_TYPE           A/A, A/P

ARRAY_NAME           FJ_GR710, FJ_GR720, FJ_GR730

                     FJ_GR740, FJ_GR820, FJ_GR840

Excluding support for a disk array library

To exclude all arrays that depend on a particular array library from participating in device discovery, use the following command:

# vxddladm excludearray libname=libvxenc.so

This example excludes support for disk arrays that depends on the library libvxenc.so. You can also exclude support for disk arrays from a particular vendor, as shown in this example:

# vxddladm excludearray vid=ACME pid=X1

For more information about excluding disk array support, see the vxddladm (1M) manual page.

Re-including support for an excluded disk array library

If you have excluded support for all arrays that depend on a particular disk array library, you can use the includearray keyword to remove the entry from the exclude list, as shown in the following example:

# vxddladm includearray libname=libvxenc.so

This command adds the array library to the database so that the library can once again be used in device discovery. If vxconfigd is running, you can use the vxdisk scandisks command to discover the arrays and add their details to the database.

Listing excluded disk arrays

To list all disk arrays that are currently excluded from use by VxVM, use the following command:

# vxddladm listexclude

Listing supported disks in the DISKS category

To list disks that are supported in the DISKS (JBOD) category, use the following command:

# vxddladm listjbod

Adding unsupported disk arrays to the DISKS category

Disk arrays should be added as JBOD devices if no ASL is available for the array. In VxVM 4.0 and later releases, a SEAGATE disk is added as a JBOD device by default.

JBODs are assumed to be Active/Active (A/A) unless otherwise specified. If a suitable ASL is not available, an A/A-A, A/P or A/PF array must be claimed as an Active/Passive (A/P) JBOD to prevent path delays and I/O failures.


  Caution   The procedure in this section ensures that Dynamic Multipathing (DMP) is set up correctly on an array that is not supported by Veritas Volume Manager. Otherwise, Veritas Volume Manager treats the independent paths to the disks as separate devices, which can result in data corruption.


 To add an unsupported disk array

  1. Use the following command to identify the vendor ID and product ID of the disks in the array:

    # /etc/vx/diag.d/vxdmpinq device_name

    where device_name is the device name of one of the disks in the array (for example, /dev/rdsk/c1t20d0s2). Note the values of the vendor ID (VID) and product ID (PID) in the output from this command. For Fujitsu disks, also note the number of characters in the serial number that is displayed. The following is sample output:

    # /etc/vx/diag.d/vxdmpinq /dev/rdsk/c1t20d0s2

    Vendor id (VID) : SEAGATE

    Product id (PID) : ST318404LSUN18G

    Revision : 8507

    Serial Number : 0025T0LA3H

    In this example, the vendor ID is SEAGATE and the product ID is ST318404LSUN18G.

  2. Stop all applications, such as databases, from accessing VxVM volumes that are configured on the array, and unmount all VxFS file systems and checkpoints that are configured on the array.
  3. If the array is of type A/A-A, A/P or A/PF, configure it in autotrespass mode.
  4. Enter the following command to add a new JBOD category:

    # vxddladm addjbod vid=vendorid pid=productid \

  [length=serialno_length] [policy=ap]

where vendorid and productid are the VID and PID values that you found from the previous step. For example, vendorid might be FUJITSU, IBM, or SEAGATE. For Fujitsu devices, you must also specify the number of characters in the serial number as the argument to the length argument (for example, 10). If the array is of type A/A-A, A/P or A/PF, you must also specify the policy=ap attribute.

Continuing the previous example, the command to define an array of disks of this type as a JBOD would be:

# vxddladm addjbod vid=SEAGATE pid=ST318404LSUN18G

  1. Use the vxdctl enable command to bring the array under VxVM control.

    # vxdctl enable

    See Enabling discovery of new devices

  2. To verify that the array is now supported, enter the following command:

    # vxddladm listjbod

    The following is sample output from this command for the example array:

    VID PID Opcode Page Code Page Offset SNO length

    =============================================================

    SEAGATE ALL PIDs 18 -1 36 12

  3. To verify that the array is recognized, use the vxdmpadm listenclosure command as shown in the following sample output for the example array:

    # vxdmpadm listenclosure all

    ENCLR_NAME ENCLR_TYPE ENCLR_SNO STATUS

    =============================================================

    OTHER_DISKS OTHER_DISKS OTHER_DISKS CONNECTED

    Disk Disk DISKS CONNECTED

    The enclosure name and type for the array are both shown as being set to Disk. You can use the vxdisk list command to display the disks in the array:

    # vxdisk list

    DEVICE TYPE DISK GROUP STATUS

    Disk_0 auto:none - - online invalid

    Disk_1 auto:none - - online invalid

    ...

  4. To verify that the DMP paths are recognized, use the vxdmpadm getdmpnode command as shown in the following sample output for the example array:

    # vxdmpadm getdmpnode enclosure=Disk

    NAME STATE ENCLR-TYPE PATHS ENBL DSBL ENCLR-NAME

    ===============================================================

    Disk_0 ENABLED Disk 2 2 0 Disk

    Disk_1 ENABLED Disk 2 2 0 Disk

    ...

    This shows that there are two paths to the disks in the array.

    For more information, enter the command vxddladm help addjbod, or see the vxddladm(1M) and vxdmpadm(1M) manual pages.

Removing disks from the DISKS category

To remove disks from the DISKS (JBOD) category, use the vxddladm command with the rmjbod keyword. The following example illustrates the command for removing disks supplied by the vendor, Seagate:

# vxddladm rmjbod vid=SEAGATE

Adding foreign devices

DDL may not be able to discover some devices that are controlled by third-party drivers, such as those that provide multipathing or RAM disk capabilities. For these devices it may be preferable to use the multipathing capability that is provided by the third-party drivers for some arrays rather than using the Dynamic Multipathing (DMP) feature. Such foreign devices can be made available as simple disks to VxVM by using the vxddladm addforeign command. This also has the effect of bypassing DMP for handling I/O. The following example shows how to add entries for block and character devices in the specified directories:

# vxddladm addforeign blockdir=/dev/foo/dsk \
  chardir=/dev/foo/rdsk

By default, this command suppresses any entries for matching devices in the OS-maintained device tree that are found by the autodiscovery mechanism. You can override this behavior by using the -f and -n options as described on the vxddladm(1M) manual page.

After adding entries for the foreign devices, use either the vxdisk scandisks or the vxdctl enable command to discover the devices as simple disks. These disks then behave in the same way as autoconfigured disks.

The foreign device mechanism was introduced in VxVM 4.0 to support non-standard devices such as RAM disks, some solid state disks, and pseudo-devices such as EMC PowerPath. This mechanism has a number of limitations:

If a suitable ASL is available for an array, these limitations are removed, as described in Third-party driver coexistence.