21.6. Adding a Storage Device or Path
When adding a device, be aware that the path-based device name (/dev/sd
name, major:minor
number, and /dev/disk/by-path
name, for example) the system assigns to the new device may have been previously in use by a device that has since been removed. As such, ensure that all old references to the path-based device name have been removed. Otherwise, the new device may be mistaken for the old device.
The first step in adding a storage device or path is to physically enable access to the new storage device, or a new path to an existing device. This is done using vendor-specific commands at the Fibre Channel or iSCSI storage server. When doing so, note the LUN value for the new storage that will be presented to your host. If the storage server is Fibre Channel, also take note of the World Wide Node Name (WWNN) of the storage server, and determine whether there is a single WWNN for all ports on the storage server. If this is not the case, note the World Wide Port Name (WWPN) for each port that will be used to access the new LUN.
Next, make the operating system aware of the new storage device, or path to an existing device. The recommended command to use is:
echo "c t l
" > /sys/class/scsi_host/hosth
/scan
In the previous command, h
is the HBA number, c
is the channel on the HBA, t
is the SCSI target ID, and l
is the LUN.
The older form of this command, echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
, is deprecated.
For Fibre Channel storage servers that implement a single WWNN for all ports, you can determine the correct h
,c
,and t
values (i.e. HBA number, HBA channel, and SCSI target ID) by searching for the WWNN in sysfs
. For example, if the WWNN of the storage server is 0x5006016090203181
, use:
grep 5006016090203181 /sys/class/fc_transport/*/node_name
This should display output similar to the following:
/sys/class/fc_transport/target5:0:2/node_name:0x5006016090203181
/sys/class/fc_transport/target5:0:3/node_name:0x5006016090203181
/sys/class/fc_transport/target6:0:2/node_name:0x5006016090203181
/sys/class/fc_transport/target6:0:3/node_name:0x5006016090203181
This indicates there are four Fibre Channel routes to this target (two single-channel HBAs, each leading to two storage ports). Assuming a LUN value is 56
, then the following command will configure the first path:
echo "0 2 56" > /sys/class/scsi_host/host5/scan
This must be done for each path to the new device.
For Fibre Channel storage servers that do not implement a single WWNN for all ports, you can determine the correct HBA number, HBA channel, and SCSI target ID by searching for each of the WWPNs in sysfs
.
Another way to determine the HBA number, HBA channel, and SCSI target ID is to refer to another device that is already configured on the same path as the new device. This can be done with various commands, such as lsscsi
, scsi_id
, multipath -l
, and ls -l /dev/disk/by-*
. This information, plus the LUN number of the new device, can be used as shown above to probe and configure that path to the new device.
After adding all the SCSI paths to the device, execute the multipath
command, and check to see that the device has been properly configured. At this point, the device can be added to md
, LVM, mkfs
, or mount
, for example.
If the steps above are followed, then a device can safely be added to a running system. It is not necessary to stop I/O to other devices while this is done. Other procedures involving a rescan (or a reset) of the SCSI bus, which cause the operating system to update its state to reflect the current device connectivity, are not recommended while storage I/O is in progress.