Skip to main content
Pure1 Support Portal

Solaris Recommended Settings

Pure storage recommends the following options to achieve maximum performance.  This KB documents several general configuration parameters that apply to any Solaris environment.  These best practices are collected from various customer feedback and proven results with Pure Storage Array.  This article is an overview of best practice configuration.

As per the Compatibility Matrix, Solaris 10 Update 9 is required as a minimum. 

Initial Configuration

Adding Pure Storage FlashArray LUN's to the Host

  1. Identify the WWN's on the Solaris initiator:
    # fcinfo hba-port
    HBA Port WWN: 21000024ff31e956
            OS Device Name: /dev/cfg/c2
            Manufacturer: QLogic Corp.
            Model: 371-4325-02
            Firmware Version: 05.04.03
            FCode/BIOS Version: BIOS: 2.02; fcode: 2.03; EFI: 2.01;
            Serial Number: 0402H00-1113936655
            Driver Name: qlc
            Driver Version: 20110321-3.05
             Type: N-port
             State: online
             Supported Speeds: 2Gb 4Gb 8Gb
             Current Speed: 8Gb
             Node WWN: 20000024ff31e956
    HBA Port WWN: 21000024ff31e957
             OS Device Name: /dev/cfg/c3
             Manufacturer: QLogic Corp.
             Model: 371-4325-02
             Firmware Version: 05.04.03
             FCode/BIOS Version: BIOS: 2.02; fcode: 2.03; EFI: 2.01;
             Serial Number: 0402H00-1113936655
             Driver Name: qlc
             Driver Version: 20110321-3.05
             Type: N-port
             State: online
             Supported Speeds: 2Gb 4Gb 8Gb
             Current Speed: 8Gb
             Node WWN: 20000024ff31e957
    
  2. Check to ensure that the WWN's are logged into the array: 
    root@pure-b3-ct1:~# pureport list --initiator
    Initiator WWN            Initiator Portal  Initiator IQN  Target  Target WWN               Target Portal  Target IQN
    21:00:00:0E:1E:0E:37:13  -                 -              -       -                        -              -
    21:00:00:0E:1E:0E:37:17  -                 -              -       -                        -              -
    21:00:00:0E:1E:0E:37:AB  -                 -              -       -                        -              -
    21:00:00:0E:1E:0E:37:AF  -                 -              -       -                        -              -
    21:00:00:24:FF:31:E9:56  -                 -              CT1.FC0 52:4A:93:77:6B:DF:C0:10  -              -
    21:00:00:24:FF:31:E9:57  -                 -              CT0.FC0 52:4A:93:77:6B:DF:C0:00  -              -
    21:00:00:24:FF:31:E9:57  -                 -              CT1.FC0 52:4A:93:77:6B:DF:C0:10  -              -
  3. Configure the Pure LUN's for each WWN.  Using the "OS Device Name" from step 1 run the following: 
    # cfgadm -c configure c2
    #
    # cfgadm -c configure c3
  4. Confirm the device is configured by running cfgadm and grepping for the Ap_Id: 
    # cfgadm -al | grep c2
    c2 fc-fabric connected configured unknown
    c2::21000024ff31e957 unknown connected unconfigured unknown
    c2::524a93776bdfc000 disk connected configured unknown
    c2::524a93776bdfc010 disk connected configured unknown
    
    # cfgadm -al | grep c3
    c3 fc-fabric connected configured unknown
    c3::21000024ff31e956 unknown connected unconfigured unknown
    c3::524a93776bdfc000 disk connected configured unknown
    c3::524a93776bdfc010 disk connected configured unknown
    
  5. Confirm that the Pure WWN's are showing up as connected and configured, in this example we see that they are. 
     
  6. Use devfsadm to rescan the bus and load the drivers in the system: 
    # devfsadm -Cv
    devfsadm[20722]: verbose: SUNW_port_link: port monitor ttymon0 added
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/0 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/1 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/2 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/3 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/4 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/5 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/6 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/7 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/8 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/9 added to sacadm
    devfsadm[20722]: verbose: SUNW_port_link: /dev/term/10 added to sacadm
  7. To confirm the serial number of the LUN against Pure, you can use the following: 
    luxadm display /dev/rdsk/*****
    NOTE: You need to use the "rdsk" identifier, this command will not work with /dev/dsk/***** 

If you see the error "cfgadm: Library error: report LUNs failed" please follow the steps in that KB.

Configuring MPxIO 

For full documentation on Solaris and MPxIO please reference Oracle's: Configuring Multipath Software.  Below is a summary step by step get get it working with Pure.

For Solaris 10 Update 9+ and 11 SPARC based systems

  1. Enable MPxIO, by default MPxIO is disabled.  

    Run the stmsboot -e command: 
    # stmsboot -e
    WARNING: stmsboot operates on each supported multipath-capable controller
             	detected in a host. In your system, these controllers are
    
    	/devices/pci@780/pci@0/pci@8/SUNW,qlc@0/fp@0,0
    	/devices/pci@780/pci@0/pci@8/SUNW,qlc@0,1/fp@0,0
    	/devices/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@1
    	/devices/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@1
    	/devices/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2
    	/devices/pci@7c0/pci@0/pci@9/LSILogic,sas@0
    	/devices/pci@7c0/pci@0/pci@9/LSILogic,sas@0
    
    	If you do NOT wish to operate on these controllers, please quit stmsboot
    	and re-invoke with -D { fp | mpt } to specify which controllers you wish
    	to modify your multipathing configuration for.
    
    	Do you wish to continue? [y/n] (default: y) y
    	Checking mpxio status for driver fp
    	Checking mpxio status for driver mpt
    	WARNING: This operation will require a reboot.
    	Do you want to continue ? [y/n] (default: y) y
    	The changes will come into effect after rebooting the system.
    	Reboot the system now ? [y/n] (default: y) y
    NOTE: During the reboot, which happens later in the process, /etc/vfstab and the dump configuration are updated to reflect the device name changes. 

Confirm the Number of Device Paths

# mpathadm list LU
/dev/rdsk/c4t5000C50031BFBACFd0s2
Total Path Count: 1
Operational Path Count: 1
/dev/rdsk/c4t624A9370A71D594A700C03C400014D1Dd0s2
Total Path Count: 8
Operational Path Count: 8
/dev/rdsk/c4t5000C50031C0642Bd0s2
Total Path Count: 1
Operational Path Count: 1
/dev/rdsk/c4t624A9370A71D594A700C03C400014D1Cd0s2
Total Path Count: 8
Operational Path Count: 8
/dev/rdsk/c4t624A9370A71D594A700C03C400014D1Bd0s2
Total Path Count: 8
Operational Path Count: 8
/dev/rdsk/c4t624A9370A71D594A700C03C400014D1Ad0s2
Total Path Count: 8
Operational Path Count: 8
/dev/rdsk/c4t624A9370A71D594A700C03C400014D19d0s2
Total Path Count: 8
Operational Path Count: 8

Recommended HBA I/O Timeout Settings

Pure Storage recommends a timeout of at least 60 seconds to be applied to the HBA for Pure Storage.  You can do this with the following commands.   Edit /etc/system and either add or modify (if not present) the sd setting as follows:

set sd:sd_io_time = 0x3c (which is 60 in hexadecimal)
set ssd:ssd_io_time=0x3C  (which is 60 in hexadecimal)

UNMAP

You can find more information on Space Reclamation for Solaris in this KB: Space: Reclaiming Space on Various OSes

SCSI UNMAP CONSIDERATIONS FOR FLASH DEVICES

Source: http://docs.oracle.com/cd/E26502_01/html/E29022/chapterzfs-flash.html#gentextid-4969

The Solaris 11.1 OS has a problem that resulted in excessive calls to SCSI unmap routines. This particular problem is detrimental to flash performance. The workaround is to disable the unmap feature as follows:

  • Include the following entry in the /etc/system file.

    set zfs:zfs_unmap_ignore_size=0
  • Reboot the system.

This issue has been fixed as of 11.2, and UNMAP works as expected.  You can confirm UNMAP support with the following commands: 

Fibre Channel

root@sym-orcl1:/test_15T# echo "*ssd_state::walk softstate|::print struct sd_lun un_f_is_trim_supported" |mdb -k
un_f_is_trim_supported = 0x1
un_f_is_trim_supported = 0x1
un_f_is_trim_supported = 0x1
un_f_is_trim_supported = 0x1

iSCSI

root@solaris:/iscsi# echo "*sd_state::walk softstate|::print struct sd_lun un_f_is_trim_supported" |mdb -k


un_f_is_trim_supported = 0

un_f_is_trim_supported = 0

un_f_is_trim_supported = 0x1

un_f_is_trim_supported = 0x1

un_f_is_trim_supported = 0x1

References

Oracle Man Pages for: 

Oracle Documentation: