I came across this issue while reviewing the output of the checkhealth –detail command run from the 3PAR command line. This command provides a more detailed view (as per the switch) of any health issues including those experienced in the Logical Disk (LD) subsystem. The specific error ‘LDs not mapped to a volume’ may happen when a Virtual Volume (VV) is deleted without the underlying Logical Disks being deleted. It could also happen during a 3PAR tunesys which is aborted during run where the Logical Disk becomes disassociated/orphaned.
It is important to note that some of the commands in this post are ‘destructive’ and incorrect usage can result in potential data loss so tread carefully.
Below is the output from a 3PAR array running the checkhealth command, if we add the –detail switch we not only see a LD issue but the output also gives us the LD name which will be required later on.
BSA-3PAR01 cli% checkhealth -detail Checking alert Checking ao Checking cabling Checking cage Checking cert Checking dar Checking date Checking file Checking fs Checking host Checking ld Checking license Checking network Checking node Checking pd Checking pdch Checking port Checking qos Checking rc Checking snmp Checking task Checking vlun Checking vv Checking sp Component ---------------Summary Description---------------- Qty Alert New alerts 1 LD LDs not mapped to a volume 1 ---------------------------------------------------------------- 2 total 2 Component -----Identifier------ --------------------------------------------------Detailed Description-------------------------------------------------- Alert sw_task:19542 Task 19542 (type "scheduled_task", name "Compact_CPG_All") has failed (Task Failed). Please see task status for details. LD ld:media-fail.52.2577 LD is not mapped to a volume -------------------------------------------------------------------------------------------------------------------------------------------------------- 23 total BSA-3PAR01 cli%
Having identified an issue exists with a LD mapping the next step is to verify whether this LD is actually mapped to any Virtual Volumes. To do this we will leverage the showldmap command. As always if we want to understand the command options the help command can be used as follows.
BSA-3PAR01 cli% help showldmap showldmap - Show mapping from a logical disk to virtual volumes. SYNTAX showldmap <LD_name> DESCRIPTION The showldmap command displays the mapping from a logical (LD) disk to virtual volumes (VVs). AUTHORITY Any role in the system OPTIONS None. SPECIFIERS <LD_name> Specifies the logical disk name. NOTES None. EXAMPLES The following example displays the region of logical disk v0.usr.0 that is used for a virtual volume: cli% showldmap v0.usr.0 Area Start(MB) Length(MB) VVId VVName VVSp VVOff(MB) 0 0 512 0 v0 usr 0 Use the following to get a description of each column in the above examples: clihelp -col showldmap BSA-3PAR01 cli%
From the help output we see the command simply requires a LD identifier, thankfully we have this from the checkhealth –detail command output.
BSA-3PAR01 cli% showldmap media-fail.52.2577 Ld space not used by any vv BSA-3PAR01 cli%
In this instance the LD is not used by any of the VVs in my environment which means we can safely remove it and resolve the alert as well as returning the LD space to the array for future use. To remove the unused LD we can make use of the removeld command. Again we can leverage the help option to get a complete breakdown of the command as demonstrated below.
BSA-3PAR01 cli% help removeld removeld - Remove logical disks (LD). SYNTAX removeld [options] {<LD_name>|<pattern>}... DESCRIPTION The removeld command removes a specified LD from the system service group. AUTHORITY Super, Service, Edit Any role granted the ld_remove right OPTIONS -pat Specifies glob-style patterns. All LDs matching the specified pattern are removed. By default, confirmation is required to proceed with the command unless the -f option is specified. This option must be used if the pattern specifier is used. -dr Specifies that the operation is a dry run and no LDs are removed. -f Specifies that the command is forced. If this option is not used, the command requires confirmation before proceeding with its operation. -rmsys Specifies that system resource LDs such as logging LDs and preserved data LDs are removed. -unused Specifies the command to remove non-system LDs. This option cannot be used with the -rmsys option. SPECIFIERS <LD_name> Specifies the LD name, using up to 31 characters. Multiple LDs can be specified. <pattern> Specifies a glob-style pattern(see help on sub,globpat). Multiple LDs can be specified. If this specifier is not used, the <LD_name> specifier must be used. NOTES System resource LDs are required for correct operation of the HP 3PAR StoreServ Storage system. Removal of system resource LDs should be performed by qualified service personnel. Incorrect use of the -rmsys option can result in data loss. If the LD is mapped to a virtual volume, the LD is not removed and the command stops at that LD. Issuing the removeld command with the -pat option specified returns a request for confirmation to remove LDs, unless the -f option is specified. Do not issue the removeld command while a movech, movechtospare, movepd, movepdtospare, or moverelocpd operation is being executed. Issue the showldch command to view operations currently running on the system. Verify the removal of LDs by issuing the showld command. EXAMPLES The following example removes LD nf_vv_1.0.usr.1: cli% removeld -f nf_vv_1.0.usr.1 BSA-3PAR01 cli%
Now that we are ready to remove the LD we enter the removeld command followed by the LD identifier.
BSA-3PAR01 cli% removeld media-fail.52.2577 Removing ld media-fail.52.2577 select q=quit y=yes n=no: y BSA-3PAR01 cli%
At this point the disassociated LD has been removed and the space used returned to the array. Hopefully this post has been useful to you. If you have any suggestions or questions drop them in the comments below.