HPE 3PAR Logical Disk Not Mapped to Virtual Volume

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.

     showldmap <LD_name>

     The showldmap command displays the mapping from a logical (LD) disk to
     virtual volumes (VVs).

     Any role in the system


         Specifies the logical disk name.


     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).

     removeld [options] {<LD_name>|<pattern>}...

     The removeld command removes a specified LD from the system service group.

     Super, Service, Edit
     Any role granted the ld_remove right

         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.

         Specifies that the operation is a dry run and no LDs are removed.

         Specifies that the command is forced. If this option is not used, the
         command requires confirmation before proceeding with its operation.

         Specifies that system resource LDs such as logging LDs and preserved
         data LDs are removed.

        Specifies the command to remove non-system LDs.
        This option cannot be used with the  -rmsys option.

         Specifies the LD name, using up to 31 characters. Multiple LDs can be

         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.

     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.

     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.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.