[T Series]A Capacity Management Mechanism Defect in Solaris10U9forX86 Led to a Failure to Update Disk Capacities

Publication Date:  2012-07-19 Views:  161 Downloads:  0
Issue Description

Product and version information:

  • S5500T V100R001 V100R002
  • S5600T V100R001 V100R002
  • S5800T V100R001 V100R002
  • S6800T V100R001 V100R002
  • Host operating system: Solaris10U9 For X86

The host and the storage array were properly connected through a direct connection or SAN network. Log in to the storage array management system and map two LUNs, for example 10 GB LUN0 and 20 GB LUN1, to the host. Log in to the host, scan for the mapped LUNs, and check the LUN status, quantity, and capacities. On the storage array management system, delete the two LUNs mapped to the host, and map another two LUNs to the host, which have different capacities from the forementioned LUNs, for example 30 GB LUN2 and 40 GB LUN3. On the host, scan for the newly mapped LUNs. There is a possibility that the capacities of the mapped LUNs appear to be different from their actual capacities, even after the host is restarted.

Alarm Information
None
Handling Process

To update the capacity information, perform the following steps:
 1. Run the reboot command to restart the Solaris10U9ForX86 host.
 2. Run the cfgadm -al command to scan for LUNs.
 3. Use the format tool to delete the disk partition information of former LUNs. The disk partition information is retained on the location of the host LUN IDs of the mapped LUNs.The following uses host LUN ID 2 as an example. Perform the following steps: 
      a. Run the format command, and enter 2 at the cursor. The output is shown in Figure1.
    Figure 1 Selecting disk 2

 

      b. Enter fdisk at the cursor. The output is shown in Figure2.
    Figure 2 fdisk command

 

      c. Enter 3 at the cursor to delete the fdisk partition. In the same way as previously described, delete all fdisk partitions. The output is shown in Figure3.
    Figure 3 Deleting fdisk partitions

 

      d. Enter 5 at the cursor to exit fdisk and update disk settings. The output is shown in Figure4.
    Figure 4 Exiting fdisk

 

4. Use the format tool to create disk partition information about the newly mapped LUNs.
   Use the host LUN IDs of the newly mapped LUNs in this step. Perform the following steps:

      a. Run the format command, and enter 2 at the cursor. The output is shown in Figure5.
    Figure 5 Selecting disks

 

      b. Enter fdisk at the cursor. The output is shown in Figure6.
    Figure 6 fdisk command

 

      c. Enter 1 at the cursor to create the fdisk partition. It is recommended that only one fdisk partition be created though more can be created. The output is shown in Figure7.
    Figure 7 Creating a fdisk partition

 

      d. Enter 5 at the cursor to exit fdisk and update disk settings. The output is shown in Figure8.
    Figure 8 Exiting fdisk

 

      e. Enter verify at the cursor to view partition information and verify that the capacities are the same as the actual values. The output is shown in Figure9.
    Figure 9 Viewing partition information

 

Root Cause

The capacities appeared to be different from actual values as long as the following conditions were met:

  • The newly mapped LUNs were not formatted (The related disks had no FDISK partitions).
  • The newly mapped LUNs' host LUN IDs had been used by other mapped LUNs.

The root cause is that the Solaris10U9ForX86 operating system has a defect.

Suggestions

Solaris10U9ForX86 considers disk information such as capacities to be permanent once the disk is created. If the capacity appear to be different from the actual value, Solaris10U9ForX86 may fail to read/write disk data properly. Therefore, do not unnecessarily change LUN mappings. Meanwhile, use host LUN IDs that have never been used when mapping new LUNs.

When mapping a new LUN, consider the following three situations:
 1. If the newly mapped LUN is a LUN on which no FDISK partition is created, and its host LUN ID has been used by other mapped LUNs, its capacity appears to be different from the actual value.
 2. If the host LUN ID of the newly mapped LUN has not been used by other mapped LUNs, even if no FDISK partition is created on the LUN, there is no capacity inconsistency issue.
 3. If any FDISK partitions are created on the LUN, there is no capacity inconsistency issue.

When creating FDISK partitions on a disk, Solaris10U9ForX86 stores its capacity information in its disk tag, and then writes the capacity information to the first sector. Solaris10U9ForX86 considers the disk capacity to be permanent once the disk is created. The following explains how Solaris10U9ForX86 identifies a LUN:
 1. Solaris10U9ForX86 cannot properly obtain the capacity information from the first sector if no FDISK partition is created on the newly mapped LUN.

  • Solaris10U9ForX86 uses either of the following two methods to obtain disk information based on the host LUN ID:Solaris10U9ForX86 obtains disk capacity information from the system cache if the disk information is stored in the system cache. This causes capacity inconsistency.
  • Solaris10U9ForX86 requests users to create FDISK partitions if no information is stored in system cache. In this case, the capacity appeared is the same as the actual value.

 2. If the newly mapped LUN has FDISK partitions, Solaris10U9ForX86 read the capacity information from the first sector of the disk and update the disk information in system cache. In this case, the capacity appeared is the same as the actual value.

END