scsi_vhci

- SCSI virtual host controller interconnect driver

Description

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

Configuration

For each candidate SCSI target device, the scsi_vhci code must identify a
failover module to support the device. If a failover module cannot 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:

scsi-vhci-failover-override =
"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":

In every entry of scsi-vhci-failover-override, if the vendor ID is less than
8 characters, it must be padded with spaces (ASCII 0x0a) to 8
characters. The product ID contains at most sixteen left-adjusted ASCII characters. The
product ID has an implicit wild card rule. The product ID in the
returned SCSI inquiry string is considered a match if that has the
specified product ID as its prefix. For example,

Notes

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