Problem
Excluding a device sometimes does not always work correctly for VERITAS DMP (Dymanic Multi-Pathing ) devices. The command `vxdmpadm exclude vxvm dmpnodename=<device>` will suppress all paths, but after a reboot paths may become visible when viewed via command `vxdisk list`.
Error Message
Cause
Storage Foundation 5.1SP1RP1 introduced enhanced device suppression functionality, which tracks the hardware physical device path as well as the sd (scsi device) name. If the OS (Operating System) device sd name changes on reboot VxVM (Veritas Volume Manager) will track the hardware physical device path; thus still suppress the device excluded, irrespective of the sd name which may change on reboots. VxVM tracks the hardware physical path by creating directory "/dev/vx/.dmp/", which contains symbolic links between sd names and hardware paths.
example,
# ls -al /dev/vx/.dmp
total 0
drwxr-xr-x 2 root root 800 Nov 19 19:32 .
drwxr-xr-x 6 root root 380 Nov 19 19:29 ..
lrwxrwxrwx 1 root root 82 Nov 19 19:32 sda -> /dev/disk/by-path/pci-0000:02:08.0-sas-0x500188b12ff5f300:1:0-0x500000e0127f9d62:0
lrwxrwxrwx 1 root root 75 Nov 19 19:32 sdaa -> /dev/disk/by-path/pci-0000:0d:00.1-fc-0x5006016030216f40:0x0006000000000000
lrwxrwxrwx 1 root root 75 Nov 19 19:32 sdab -> /dev/disk/by-path/pci-0000:0d:00.1-fc-0x5006016030216f40:0x0007000000000000
lrwxrwxrwx 1 root root 75 Nov 19 19:32 sdac -> /dev/disk/by-path/pci-0000:0d:00.1-fc-0x5006016030216f40:0x0008000000000000
The problem is `/lib/udev/vxpath_links` script is not working correctly. The script is responsible for creating the ".dmp" directory and links and is ran during boot up of the server. On reboot the `/lib/udev/vxpath_links` script is not creating the "/dev/vx/.dmp" directory resulting in device exclusion issues.
[ Side affects of the issue ]
a. After reboot directory "/dev/vx/.dmp" is not created.
b. After a reboot since directory "/dev/vx/.dmp" does not exist if the user attempts to exclude devices it will default to pre 5.1SP1RP1 device exclusion where hardware physical path is no longer used and instead only sd device paths are included in /etc/vx/vxvm.exclude.
example,
paths
sdak /dev/sdak emc_clariion0_127
sdt /dev/sdt emc_clariion0_127
#
controllers
#
product
#
pathgroups
#
b. If a device other than the boot disk is excluded the boot disk will also inadevertently be excluded. If the user attempts to encapsulate the boot disk as the bootdisk is not visible in `vxdisk list`, then encapsulation will fail.
example,
# df -k|grep "sda1"
/dev/sda1 29753556 18630228 9587516 67% /
# vxdmpadm listexclude
Devices excluded from VxVM:
--------------------------
Paths : sdak sdt
Controllers : None
VID:PID : None
Devices excluded from multipathing by vxdmp:
-------------------------------------------
Paths : None
Controllers : None
VID:PID : None
Pathgroups : None
----------
# Yet command `vxdisk list` will not show device sda.
Solution
Workarounds:
a. After the system has been rebooted, you can manually run `/sbin/udevtrigger`. This should generate the missing /dev/vx/.dmp/ directory which should fix the issue.
b. Includ the `/sbin/udevtrigger` in /etc/rc.d/rc.local file so that on reboot the `/sbin/udevtrigger` automatically gets ran and directory "/dev/vx/.dmp" gets created along with associated sd links to hardware path.
example,
# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/sbin/udevtrigger
Applies To
Storage Foundation on Linux environments.