The scsi_vhci driver is a SCSA compliant pseudo nexus driver that supports Solaris operating system I/O multipathing services for SCSI-3 devices. This driver introduces a fundamental restructuring of the Solaris device tree to enable a multipath device to be represented as single device instance rather than as an instance per physical path as in earlier Solaris versions.
The logical units (LUNs) associated multipath SCSI target devices managed by this driver are identified and represented by using the SCSI-3 VPD page (0x83) LUN global unique identifier (GUID) represented as hexadecimal number (64/128 bits)
Symbolic links in /dev/[r]dsk continue to adhere to the cNtNdNsN format. cN is the logical controller number assigned to this driver instance. tN is the GUID.
The following is an example of a system with an A5000 storage array:
... /dev/rdsk/c4t200000203709C3F5d0s0 -> ../../devices/ scsi_vhci/[email protected]:a,raw ... /dev/rdsk/c4t200000203709C3F5d0s7 -> ../../devices/ scsi_vhci/[email protected]:h,ra ...
The following is an example of a system with a T300 storage array:
... /dev/rdsk/c1t60020F200000033939C2C2B60008D4AEd0s0 -> ../../devices/scsi_vhci/ [email protected]:a,raw ... /dev/rdsk/c1t60020F200000033939A2C2B60008D4AEd0s7 -> ../../devices/scsi_vhci/ [email protected]:h,raw
The scsi_vhci driver receives naming and transport services from one or more physical HBA (host bus adapter) devices. To support multi-pathing, a physical HBA driver must have its multipathing enabled and comply with the multipathing services provided by this driver.
The scsi_vhci driver supports the standard functions provided by the SCSA interface.
For each candidate SCSI target device, the scsi_vhci code must identify a failover module to support the device. If a failover module can't be identified, the device will not function under scsi_vhci multipathing control. For SCSI target devices that support the standard Target Port Group Select, no special vendor/product knowledge is needed. For other SCSI target devices, each failover module understands which devices it supports.
When autoconfiguration does not result in the desired configuration, a vendor/product specific override mechanism is available. This scsi_vhci.conf base mechanism can be used to direct a device to a specific failover module (or to indicate that a device should not be under scsi_vhci multipathing control by way of "NONE"). In scsi_vhci.conf, the property 'scsi-vhci-failover-override' defines overrides in scsi_get_device_type_string(9F) form. To add a third-party (non-Sun) symmetric storage device to run under scsi_vhci (and thereby take advantage of scsi_vhci multipathing), you add the vendor ID and product ID for the device, as those strings are returned by the SCSI Inquiry command. For example, to add a device from a vendor with the ID of "Acme" and a product ID of "MSU", you would add:
device-type-scsi-options-list = "Acme MSU", "f_sym",
In addition to "Acme", you also might want to add another entry, for example, a device from "XYZ" vendor with a product ID of "ABC":
scsi-vhci-failover-override = "Acme MSU", "f_sym", "XYZ ABC", "f_sym";
As a last override, you might add an entry so that no devices from "ABC" vendor use scsi_vhci multipathing:
scsi-vhci-failover-override = "Acme MSU", "f_sym", "XYZ ABC", "f_sym", "ABC ", "NONE";
See attributes(5) for descriptions of the following attributes:
eeprom(1M), prtconf(1M), stmsboot(1M), attributes(5), fcp(7D), fctl(7D), fp(7D), mpt(7D), ssd(7D), scsi_abort(9F), scsi_get_device_type_scsi_options(9F), scsi_get_device_type_string(9F), scsi_ifgetcap(9F), scsi_reset(9F), scsi_transport(9F), scsi_inquiry(9S), scsi_extended_sense(9S), scsi_pkt(9S)
Writing Device Drivers
Small Computer System Interface-3 (SCSI-3)
In previous releases, the scsi_vhci.conf file supported the mpxio-disable property, which allowed you to disable Solaris I/O multipathing on a system-wide basis. This property is not present in the current release of the Solaris operating system. Multipathing is always enabled in scsi_vhci. If you want to disable multipathing, use the mechanisms provided by the HBA drivers. See fp(7D) and mpt(7D).
In previous releases, the override mechanism was based on the scsi_get_device_type_scsi_options(9F) defined "device-type-scsi-options-list" property. During upgrade, scsi_vhci.conf is converted to the new form. After upgrade, a scsi_vhci.conf modification based on the old mechanism is silently ignored.
In previous releases, Solaris I/O multipathing was also known as MPxIO and Sun StorEdge Traffic Manager (STMS).