此内容没有您所选择的语言版本。
Online Storage Reconfiguration Guide
For Red Hat Enterprise Linux 5
Edition 1
Abstract
Introduction
Note
sysfs
objects. Red Hat advises that the sysfs
object names and directory structure are subject to change in major Red Hat Enterprise Linux 5 releases. This is because the upstream Linux kernel does not provide a stable internal API. For guidelines on how to reference sysfs
objects in a transportable way, refer to the document Documentation/sysfs-rules.txt
in the kernel source tree for guidelines.
Warning
Chapter 1. Online Storage Reconfiguration
1.1. Fibre Channel
1.1.1. Fibre Channel API
/sys/class/
directories that contain files used to provide the userspace API. In each item, host numbers are designated by H
, bus numbers are B
, targets are T
, logical unit numbers (LUNs) are L
, and remote port numbers are R
.
Important
- Transport:
/sys/class/fc_transport/targetH:B:T/
port_id
— 24-bit port ID/addressnode_name
— 64-bit node nameport_name
— 64-bit port name
- Remote Port:
/sys/class/fc_remote_ports/rport-H:B-R/
port_id
node_name
port_name
dev_loss_tmo
— number of seconds to wait before marking a link as "bad". Once a link is marked bad, IO running on its corresponding path (along with any new IO on that path) will be failed.The defaultdev_loss_tmo
value varies, depending on which driver/device is used. If a Qlogic adapter is used, the default is 35 seconds, while if an Emulex adapter is used, it is 30 seconds. Thedev_loss_tmo
value can be changed via thescsi_transport_fc
module parameterdev_loss_tmo
, although the driver can override this timeout value.The maximumdev_loss_tmo
value is 600 seconds. Ifdev_loss_tmo
is set to zero or any value greater than 600, the driver's internal timeouts will be used instead.fast_io_fail_tmo
— length of time to wait before failing IO executed when a link problem is detected. IO that reaches the driver will fail. If IO is in a blocked queue, it will not be failed untildev_loss_tmo
expires and the queue is unblocked.
- Host:
/sys/class/fc_host/hostH/
1.1.2. Native Fibre Channel Drivers and Capabilities
lpfc
qla2xxx
zfcp
mptfc
lpfc | qla2xxx | zfcp | mptfc | |
---|---|---|---|---|
Transport port_id | X | X | X | X |
Transport node_name | X | X | X | X |
Transport port_name | X | X | X | X |
Remote Port dev_loss_tmo | X | X | X | X |
Remote Port fast_io_fail_tmo | X | X [a] | ||
Host port_id | X | X | X | X |
Host issue_lip | X | X | ||
[a]
Supported as of Red Hat Enterprise Linux 5.4
|
1.2. iSCSI
iscsiadm
utility. Before using the iscsiadm
utility, install the iscsi-initiator-utils
package first; to do so, run yum install iscsi-initiator-utils
.
service iscsi start
1.2.1. iSCSI API
iscsiadm -m session -P 3
iscsiadm -m session -P 0
iscsiadm -m session
driver [sid] target_ip:port,target_portal_group_tag proper_target_name
iscsiadm -m session
tcp [2] 10.15.84.19:3260,2 iqn.1992-08.com.netapp:sn.33615311 tcp [3] 10.15.85.19:3260,3 iqn.1992-08.com.netapp:sn.33615311
/usr/share/doc/iscsi-initiator-utils-version/README
.
1.3. Persistent Naming
- PCI identifier of the host bus adapter (HBA)
- channel number on that HBA
- the remote SCSI target address
- the Logical Unit Number (LUN)
/dev/sd
name; another is the major:minor
number. A third is a symlink maintained in the /dev/disk/by-path/
directory. This symlink maps from the path identifier to the current /dev/sd
name. For example, for a Fibre Channel device, the PCI info and Host:BusTarget:LUN
info may appear as follows:
pci-0000:02:0e.0-scsi-0:0:0:0 -> ../../sda
by-path/
names map from the target name and portal information to the sd
name.
1.3.1. WWID
0x83
) or Unit Serial Number (page 0x80
). The mappings from these WWIDs to the current /dev/sd
names can be seen in the symlinks maintained in the /dev/disk/by-id/
directory.
0x83
identifier would have:
scsi-3600508b400105e210000900000490000 -> ../../sda
0x80
identifier would have:
scsi-SSEAGATE_ST373453LW_3HW1RHM6 -> ../../sda
/dev/sd
name on that system. Applications can use the /dev/disk/by-id/
name to reference the data on the disk, even if the path to the device changes, and even when accessing the device from different systems.
/dev/mapper/wwid
, such as /dev/mapper/3600508b400105df70000e00000ac0000
.
multipath -l
shows the mapping to the non-persistent identifiers: Host:Channel:Target:LUN
, /dev/sd
name, and the major:minor
number.
3600508b400105df70000e00000ac0000 dm-2 vendor,product [size=20G][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=0][active] \_ 5:0:1:1 sdc 8:32 [active][undef] \_ 6:0:1:1 sdg 8:96 [active][undef] \_ round-robin 0 [prio=0][enabled] \_ 5:0:0:1 sdb 8:16 [active][undef] \_ 6:0:0:1 sdf 8:80 [active][undef]
/dev/sd
name on the system. These names are persistent across path changes, and they are consistent when accessing the device from different systems.
user_friendly_names
feature (of device-mapper-multipath) is used, the WWID is mapped to a name of the form /dev/mapper/mpathn
. By default, this mapping is maintained in the file /var/lib/multipath/bindings
. These mpathn
names are persistent as long as that file is maintained.
Warning
/var/lib/multipath/bindings
) must be available at boot time. If /var
is a separate filesystem from /
, then you must change the default location of the file. For more information, refer to http://kbase.redhat.com/faq/docs/DOC-17650.
Important
user_friendly_names
, then additional steps are required to obtain consistent names in a cluster. Refer to the Consistent Multipath Device Names section in the Using Device-Mapper Multipath book.
udev
rules to implement persistent names of your own, mapped to the WWID of the storage. For more information about this, refer to http://kbase.redhat.com/faq/docs/DOC-7319.
1.3.2. UUID and Other Persistent Identifiers
- Universally Unique Identifier (UUID)
- Filesystem label
/dev/disk/by-label/
(e.g. boot -> ../../sda1
) and /dev/disk/by-uuid/
(e.g. f8bf09e3-4c16-4d91-bd5e-6f62da165c08 -> ../../sda1
) directories.
md
and LVM write metadata on the storage device, and read that data when they scan devices. In each case, the metadata contains a UUID, so that the device can be identified regardless of the path (or system) used to access it. As a result, the device names presented by these facilities are persistent, as long as the metadata remains unchanged.
1.4. Removing a Storage Device
vmstat 1 100
; device removal is not recommended if:
- Free memory is less than 5% of the total memory in more than 10 samples per 100 (the command
free
can also be used to display the total memory). - Swapping is active (non-zero
si
andso
columns in thevmstat
output).
Procedure 1.1. Ensuring a Clean Device Removal
- Close all users of the device and backup device data as needed.
- Use
umount
to unmount any file systems that mounted the device. - Remove the device from any
md
and LVM volume using it. If the device is a member of an LVM Volume group, then it may be necessary to move data off the device using thepvmove
command, then use thevgreduce
command to remove the physical volume, and (optionally)pvremove
to remove the LVM metadata from the disk. - If the device uses multipathing, run
multipath -l
and note all the paths to the device. Afterwards, remove the multipathed device usingmultipath -f device
. - Run
blockdev –flushbufs device
to flush any outstanding I/O to all paths to the device. This is particularly important for raw devices, where there is noumount
orvgreduce
operation to cause an I/O flush. - Remove any reference to the device's path-based name, like
/dev/sd
,/dev/disk/by-path
or themajor:minor
number, in applications, scripts, or utilities on the system. This is important in ensuring that different devices added in the future will not be mistaken for the current device. - Finally, remove each path to the device from the SCSI subsystem. To do so, use the command
echo 1 > /sys/block/device-name/device/delete
wheredevice-name
may besde
, for example.Another variation of this operation isecho 1 > /sys/class/scsi_device/h:c:t:l/device/delete
, whereh
is the HBA number,c
is the channel on the HBA,t
is the SCSI target ID, andl
is the LUN.Note
The older form of these commands,echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi
, is deprecated.
device-name
, HBA number, HBA channel, SCSI target ID and LUN for a device from various commands, such as lsscsi
, scsi_id
, multipath -l
, and ls -l /dev/disk/by-*
.
1.5. Removing a Path to a Storage Device
Procedure 1.2. Removing a Path to a Storage Device
- Remove any reference to the device's path-based name, like
/dev/sd
or/dev/disk/by-path
or themajor:minor
number, in applications, scripts, or utilities on the system. This is important in ensuring that different devices added in the future will not be mistaken for the current device. - Take the path offline using
echo offline > /sys/block/sda/device/state
.This will cause any subsequent IO sent to the device on this path to be failed immediately. Device-mapper-multipath will continue to use the remaining paths to the device. - Remove the path from the SCSI subsystem. To do so, use the command
echo 1 > /sys/block/device-name/device/delete
wheredevice-name
may besde
, for example (as described in Procedure 1.1, “Ensuring a Clean Device Removal”).
1.6. Adding a Storage Device or Path
/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.
Procedure 1.3. Add a storage device or path
- 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, andl
is the LUN.Note
The older form of this command,echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi
, is deprecated.- In some Fibre Channel hardware, a newly created LUN on the RAID array may not be visible to the operating system until a Loop Initialization Protocol (LIP) operation is performed. Refer to Section 1.8, “Scanning Storage Interconnects” for instructions on how to do this.
Important
It will be necessary to stop I/O while this operation is executed if an LIP is required. - If a new LUN has been added on the RAID array but is still not being configured by the operating system, confirm the list of LUNs being exported by the array using the
sg_luns
command, part of the sg3_utils package. This will issue theSCSI REPORT LUNS
command to the RAID array and return a list of LUNs that are present.
For Fibre Channel storage servers that implement a single WWNN for all ports, you can determine the correcth
,c
,andt
values (i.e. HBA number, HBA channel, and SCSI target ID) by searching for the WWNN insysfs
. For example, if the WWNN of the storage server is0x5006016090203181
, 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 is56
, 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 insysfs
.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 aslsscsi
,scsi_id
,multipath -l
, andls -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 tomd
, LVM,mkfs
, ormount
, for example.
1.7. Technology Preview: Fibre-Channel Over Ethernet Interface
Important
1.8. Scanning Storage Interconnects
- All I/O on the effected interconnects must be paused and flushed before executing the procedure, and the results of the scan checked before I/O is resumed.
- As with removing a device, interconnect scanning is not recommended when the system is under memory pressure. To determine the level of memory pressure, run the command
vmstat 1 100
; interconnect scanning is not recommended if free memory is less than 5% of the total memory in more than 10 samples per 100. It is also not recommended if swapping is active (non-zerosi
andso
columns in thevmstat
output). The commandfree
can also display the total memory.
echo "1" > /sys/class/fc_host/host/issue_lip
- This operation performs a Loop Initialization Protocol (LIP) and then scans the interconnect and causes the SCSI layer to be updated to reflect the devices currently on the bus. A LIP is, essentially, a bus reset, and will cause device addition and removal. This procedure is necessary to configure a new SCSI target on a Fibre Channel interconnect.Bear in mind that
issue_lip
is an asynchronous operation. The command may complete before the entire scan has completed. You must monitor/var/log/messages
to determine when it is done.Thelpfc
andqla2xxx
drivers supportissue_lip
. For more information about the API capabilities supported by each driver in Red Hat Enterprise Linux, refer to Table 1.1, “Fibre-Channel API Capabilities”. /usr/bin/rescan-scsi-bus.sh
- This script is included in Red Hat Enterprise Linux 5.4 and all future updates. By default, this script scans all the SCSI buses on the system, updating the SCSI layer to reflect new devices on the bus. The script provides additional options to allow device removal and the issuing of LIPs. For more information about this script (including known issues), refer to Section 1.15, “Adding/Removing a Logical Unit Through rescan-scsi-bus.sh”.
echo "- - -" > /sys/class/scsi_host/hosth/scan
- This is the same command described in Section 1.6, “Adding a Storage Device or Path” to add a storage device or path. In this case, however, the channel number, SCSI target ID, and LUN values are replaced by wildcards. Any combination of identifiers and wildcards is allowed, allowing you to make the command as specific or broad as needed. This procedure will add LUNs, but not remove them.
rmmod driver-name
ormodprobe driver-name
- These commands completely re-initialize the state of all interconnects controlled by the driver. Although this is extreme, it may be appropriate in some situations. This may be used, for example, to re-start the driver with a different module parameter value.
Warning
Various problems have been seen when unloading and reloading drivers. Although some of these problems have been addressed, the problems will be present in previous releases. Additionally, current releases may have unresolved problems. Driver loading and unloading should not be done in a production environment.
1.9. iSCSI Discovery Configuration
/etc/iscsi/iscsid.conf
. This file contains iSCSI settings used by iscsid
and iscsiadm
.
iscsiadm
tool uses the settings in /etc/iscsi/iscsid.conf
to create two types of records:
- Node records in
/var/lib/iscsi/nodes
- When logging into a target,
iscsiadm
uses the settings in this file. - Discovery records in
/var/lib/iscsi/discovery_type
- When performing discovery to the same destination,
iscsiadm
uses the settings in this file.
/var/lib/iscsi/discovery_type
) first. To do this, use the following command:
iscsiadm -m discovery -t discovery_type -p target_IP:port -o delete
[1]
- Edit the
/etc/iscsi/iscsid.conf
file directly prior to performing a discovery. Discovery settings use the prefixdiscovery
; to view them, run:iscsiadm -m discovery -t discovery_type -p target_IP:port
- Alternatively,
iscsiadm
can also be used to directly change discovery record settings, as in:iscsiadm -m discovery -t discovery_type -p target_IP:port -o update -n setting -v %value
Refer toman iscsiadm
for more information on availablesetting
s and validvalue
s for each.
man
pages of iscsiadm
and iscsid
. The /etc/iscsi/iscsid.conf
file also contains examples on proper configuration syntax.
1.10. Configuring iSCSI Offload and Interface Binding
ping -I ethX target_IP
[1]
ping
fails, then you will not be able to bind a session to a NIC. If this is the case, check the network settings first.
1.10.1. Viewing Available iface Configurations
- Software iSCSI — like the
scsi_tcp
andib_iser
modules, this stack allocates an iSCSI host instance (i.e.scsi_host
) per session, with a single connection per session. As a result,/sys/class_scsi_host
and/proc/scsi
will report ascsi_host
for each connection/session you are logged into. - Offload iSCSI — like the Chelsio
cxgb3i
, Broadcombnx2i
and ServerEnginesbe2iscsi
modules, this stack allocates ascsi_host
for each PCI device. As such, each port on a host bus adapter will show up as a different PCI device, with a differentscsi_host
per HBA port.
iscsiadm
uses the iface
structure. With this structure, an iface
configuration must be entered in /var/lib/iscsi/ifaces
for each HBA port, software iSCSI, or network device (ethX
) used to bind sessions.
iface
configurations, run iscsiadm -m iface
. This will display iface
information in the following format:
iface_name transport_name,hardware_address,ip_address,net_ifacename,initiator_name
Setting | Description |
---|---|
iface_name | iface configuration name. |
transport_name | Name of driver |
hardware_address | MAC address |
ip_address | IP address to use for this port |
net_iface_name | Name used for the vlan or alias binding of a software iSCSI session. For iSCSI offloads, net_iface_name will be <empty> because this value is not persistent across reboots. |
initiator_name | This setting is used to override a default name for the initiator, which is defined in /etc/iscsi/initiatorname.iscsi |
iscsiadm -m iface
command:
iface0 qla4xxx,00:c0:dd:08:63:e8,20.15.0.7,default,iqn.2005-06.com.redhat:madmax iface1 qla4xxx,00:c0:dd:08:63:ea,20.15.0.9,default,iqn.2005-06.com.redhat:madmax
iface
configuration must have a unique name (with less than 65 characters). The iface_name
for network devices that support offloading appears in the format transport_name.hardware_name
.
iscsiadm -m iface
on a system using a Chelsio network card might appear as:
default tcp,<empty>,<empty>,<empty>,<empty> iser iser,<empty>,<empty>,<empty>,<empty> cxgb3i.00:07:43:05:97:07 cxgb3i,00:07:43:05:97:07,<empty>,<empty>,<empty>
iface
configuration in a more friendly way. To do so, use the option -I iface_name
. This will display the settings in the following format:
iface.setting = value
iface
settings of the same Chelsio video card (i.e. iscsiadm -m iface -I cxgb3i.00:07:43:05:97:07
) would appear as:
# BEGIN RECORD 2.0-871 iface.iscsi_ifacename = cxgb3i.00:07:43:05:97:07 iface.net_ifacename = <empty> iface.ipaddress = <empty> iface.hwaddress = 00:07:43:05:97:07 iface.transport_name = cxgb3i iface.initiatorname = <empty> # END RECORD
1.10.2. Configuring an iface for Software iSCSI
iface
configuration is required for each network object that will be used to bind a session.
iface
configuration for software iSCSI, run the following command:
iscsiadm -m iface -I iface_name --op=new
iface
configuration with a specified iface_name
. If an existing iface
configuration already has the same iface_name
, then it will be overwritten with a new, empty one.
iface
configuration, use the following command:
iscsiadm -m iface -I iface_name --op=update -n iface.setting -v hw_address
hardware_address
) of iface0
to 00:0F:1F:92:6B:BF
, run:
iscsiadm -m iface -I iface0 - -op=update -n iface.hwaddress -v 00:0F:1F:92:6B:BF
Warning
default
or iser
as iface
names. Both strings are special values used by iscsiadm
for backward compatibility. Any manually-created iface
configurations named default
or iser
will disable backwards compatibility.
1.10.3. Configuring an iface for iSCSI Offload
iscsiadm
will create an iface
configuration for each Chelsio, Broadcom, and ServerEngines port. To view available iface
configurations, use the same command for doing so in software iSCSI, i.e. iscsiadm -m iface
.
iface
of a network card for iSCSI offload, first set the IP address (target_IP
[1]) that the device should use. For ServerEngines devices that use the be2iscsi
driver (i.e. ServerEngines iSCSI HBAs), the IP address is configured in the ServerEngines BIOS setup screen.
iface
setting. So to configure the IP address of the iface
, use:
iscsiadm -m iface -I iface_name -o update -n iface.ipaddress -v target_IP
iface
IP address of a Chelsio card (with iface
name cxgb3i.00:07:43:05:97:07
) to 20.15.0.66
, use:
iscsiadm -m iface -I cxgb3i.00:07:43:05:97:07 -o update -n iface.ipaddress -v 20.15.0.66
1.10.4. Binding/Unbinding an iface to a Portal
iscsiadm
is used to scan for interconnects, it will first check the iface.transport
settings of each iface
configuration in /var/lib/iscsi/ifaces
. The iscsiadm
utility will then bind discovered portals to any iface
whose iface.transport
is tcp
.
-I iface_name
to specify which portal to bind to an iface
, as in:
iscsiadm -m discovery -t st -p target_IP:port -I iface_name -P 1
[1]
iscsiadm
utility will not automatically bind any portals to iface
configurations that use offloading. This is because such iface
configurations will not have iface.transport
set to tcp
. As such, the iface
configurations of Chelsio, Broadcom, and ServerEngines ports need to be manually bound to discovered portals.
iface
. To do so, use default
as the iface_name
, as in:
iscsiadm -m discovery -t st -p IP:port -I default -P 1
iface
, use:
iscsiadm -m node -targetname proper_target_name -I iface0 --op=delete
[3]
iface
, use:
iscsiadm -m node -I iface_name --op=delete
iscsiadm -m node -p IP:port -I iface_name --op=delete
Note
iface
configurations defined in /var/lib/iscsi/iface
and the -I
option is not used, iscsiadm
will allow the network subsystem to decide which device a specific portal should use.
1.11. Scanning iSCSI Interconnects
iscsiadm
utility. Before doing so, however, you need to first retrieve the proper --targetname
and the --portal
values. If your device model supports only a single logical unit and portal per target, use iscsiadm
to issue a sendtargets
command to the host, as in:
iscsiadm -m discovery -t sendtargets -p target_IP:port
[1]
target_IP:port,target_portal_group_tag proper_target_name
proper_target_name
of iqn.1992-08.com.netapp:sn.33615311
and a target_IP:port
of 10.15.85.19:3260
, the output may appear as:
10.15.84.19:3260,2 iqn.1992-08.com.netapp:sn.33615311 10.15.85.19:3260,3 iqn.1992-08.com.netapp:sn.33615311
target_ip:port
s of 10.15.84.19:3260
and 10.15.85.19:3260
.
iface
configuration will be used for each session, add the -P 1
option. This option will print also session information in tree format, as in:
Target: proper_target_name Portal: target_IP:port,target_portal_group_tag Iface Name: iface_name
iscsiadm -m discovery -t sendtargets -p 10.15.85.19:3260 -P 1
, the output may appear as:
Target: iqn.1992-08.com.netapp:sn.33615311 Portal: 10.15.84.19:3260,2 Iface Name: iface2 Portal: 10.15.85.19:3260,3 Iface Name: iface2
iqn.1992-08.com.netapp:sn.33615311
will use iface2
as its iface
configuration.
sendtargets
command to the host first to find new portals on the target. Then, rescan the existing sessions using:
iscsiadm -m session --rescan
SID
value, as in:
iscsiadm -m session -r SID --rescan
[4]
sendtargets
command to the hosts to find new portals for each target. Then, rescan existing sessions to discover new logical units on existing sessions (i.e. using the --rescan
option).
Important
sendtargets
command used to retrieve --targetname
and --portal
values overwrites the contents of the /var/lib/iscsi/nodes
database. This database will then be repopulated using the settings in /etc/iscsi/iscsid.conf
. However, this will not occur if a session is currently logged in and in use.
-o new
or -o delete
options, respectively. For example, to add new targets/portals without overwriting /var/lib/iscsi/nodes
, use the following command:
iscsiadm -m discovery -t st -p target_IP -o new
/var/lib/iscsi/nodes
entries that the target did not display during discovery, use:
iscsiadm -m discovery -t st -p target_IP -o delete
iscsiadm -m discovery -t st -p target_IP -o delete -o new
sendtargets
command will yield the following output:
ip:port,target_portal_group_tag proper_target_name
equallogic-iscsi1
as your target_name
, the output should appear similar to the following:
10.16.41.155:3260,0 iqn.2001-05.com.equallogic:6-8a0900-ac3fe0101-63aff113e344a4a2-dl585-03-1
proper_target_name
and ip:port,target_portal_group_tag
are identical to the values of the same name in Section 1.2.1, “iSCSI API”.
--targetname
and --portal
values needed to manually scan for iSCSI devices. To do so, run the following command:
iscsiadm --mode node --targetname proper_target_name --portal ip:port,target_portal_group_tag
proper_target_name
is equallogic-iscsi1
), the full command would be:
iscsiadm --mode node --targetname
\ iqn.2001-05.com.equallogic:6-8a0900-ac3fe0101-63aff113e344a4a2-dl585-03-1
\ --portal 10.16.41.155:3260,0
[5]
Note
--login
option to a discovery command. This combines the two steps of discovering target portals and logging in to them. For example, iscsiadm --mode node --targetname proper_target_name --portal ip:port,target_portal_group_tag\ --login
[5]
1.12. Logging In to an iSCSI Target
service iscsi start
init
scripts will automatically log into targets where the node.startup
setting is configured as automatic
. This is the default value of node.startup
for all targets.
node.startup
to manual
. To do this, run the following command:
iscsiadm -m node --targetname proper_target_name -p target_IP:port -o update -n node.startup -v manual
iscsiadm -m node --targetname proper_target_name -p target_IP:port -o delete
/etc/fstab
with the _netdev
option. For example, to automatically mount the iSCSI device sdb
to /mount/iscsi
during startup, add the following line to /etc/fstab
:
/dev/sdb /mnt/iscsi ext3 _netdev 0 0
iscsiadm -m node --targetname proper_target_name -p target_IP:port -l
Note
proper_target_name
and target_IP:port
refer to the full name and IP address/port combination of a target. For more information, refer to Section 1.2.1, “iSCSI API” and Section 1.11, “Scanning iSCSI Interconnects”.
1.13. Online Logical Units
1.13.1. Resizing an Online Logical Unit
Note
1.13.1.1. Resizing Fibre Channel Logical Units
echo 1 > /sys/block/sdX/device/rescan
Important
sd1
, sd2
, and so on) that represents a path for the multipathed logical unit. To determine which devices are paths for a multipath logical unit, use multipath -ll
; then, find the entry that matches the logical unit being resized. It is advisable that you refer to the WWID of each entry to make it easier to find which one matches the logical unit being resized.
1.13.1.2. Resizing an iSCSI Logical Unit
iscsiadm -m node --targetname target_name -R
[1]
target_name
with the name of the target where the device is located.
Note
iscsiadm -m node -R -I interface
interface
with the corresponding interface name of the resized logical unit (for example, iface0
). This command performs two operations:
- It scans for new devices in the same way that the command
echo "- - -" > /sys/class/scsi_host/host/scan
does (refer to Section 1.11, “Scanning iSCSI Interconnects”). - It re-scans for new/modified logical units the same way that the command
echo 1 > /sys/block/sdX/device/rescan
does. Note that this command is the same one used for re-scanning fibre-channel logical units.
1.13.1.3. Updating the Size of Your Multipath Device
multipathd
. To do so, first ensure that multipathd
is running using service multipathd status
. Once you've verified that multipathd
is operational, run the following command:
multipathd -k"resize map multipath_device"
multipath_device
variable is the corresponding multipath entry of your device in /dev/mapper
. Depending on how multipathing is set up on your system, multipath_device
can be either of two formats:
mpathX
, whereX
is the corresponding entry of your device (for example,mpath0
)- a WWID; for example,
3600508b400105e210000900000490000
multipath -ll
. This displays a list of all existing multipath entries in the system, along with the major and minor numbers of their corresponding devices.
Important
multipathd -k"resize map multipath_device"
if there are any commands queued to multipath_device
. That is, do not use this command when the no_path_retry
parameter (in /etc/multipath.conf
) is set to "queue"
, and there are no active paths to the device.
multipathd
daemon to recognize (and adjust to) the changes you made to the resized logical unit:
Procedure 1.4. Resizing the Corresponding Multipath Device (Required for Red Hat Enterprise Linux 5.0 - 5.2)
- Dump the device mapper table for the multipathed device using:
dmsetup table multipath_device
- Save the dumped device mapper table as
table_name
. This table will be re-loaded and edited later. - Examine the device mapper table. Note that the first two numbers in each line correspond to the start and end sectors of the disk, respectively.
- Suspend the device mapper target:
dmsetup suspend multipath_device
- Open the device mapper table you saved earlier (i.e.
table_name
). Change the second number (i.e. the disk end sector) to reflect the new number of 512 byte sectors in the disk. For example, if the new disk size is 2GB, change the second number to 4194304. - Reload the modified device mapper table:
dmsetup reload multipath_device table_name
- Resume the device mapper target:
dmsetup resume multipath_device
1.14. Changing the Read/Write State of an Online Logical Unit
# blockdev --getro /dev/sdXYZ
# cat /sys/block/sdXYZ/ro 1 = read-only 0 = read-write
multipath -ll
command. For example:
36001438005deb4710000500000640000 dm-8 GZ,GZ500 [size=20G][features=0][hwhandler=0][ro] \_ round-robin 0 [prio=200][active] \_ 6:0:4:1 sdax 67:16 [active][ready] \_ 6:0:5:1 sday 67:32 [active][ready] \_ round-robin 0 [prio=40][enabled] \_ 6:0:6:1 sdaz 67:48 [active][ready] \_ 6:0:7:1 sdba 67:64 [active][ready]
Procedure 1.5. Change the R/W state
- To move the device from RO to R/W, see step 2.To move the device from R/W to RO, ensure no further writes will be issued. Do this by stopping the application, or through the use of an appropriate, application-specific action.Ensure that all outstanding write I/Os are complete with the following command:
# blockdev -flushbufs /dev/device
Replace device with the desired designator; for a device mapper multipath, this is the entry for your device indev/mapper
. For example,/dev/mapper/mpath3
. - Use the management interface of the storage device to change the state of the logical unit from R/W to RO, or from RO to R/W. The procedure for this differs with each array. Consult applicable storage array vendor documentation for more information.
- Perform a re-scan of the device to update the operating system's view of the R/W state of the device. If using a device mapper multipath, perform this re-scan for each path to the device before issuing the command telling multipath to reload its device maps.This process is explained in further detail in Section 1.14.1, “Rescanning logical units”.
1.14.1. Rescanning logical units
# echo 1 > /sys/block/sdX/device/rescan
multipath -11
, then find the entry that matches the logical unit to be changed.
Example 1.1. Use of the multipath -11
command
multipath -11
above shows the path for the LUN with WWID 36001438005deb4710000500000640000. In this case, enter:
# echo 1 > /sys/block/sdax/device/rescan
# echo 1 > /sys/block/sday/device/rescan
# echo 1 > /sys/block/sdaz/device/rescan
# echo 1 > /sys/block/sdba/device/rescan
1.14.2. Updating the R/W state of a multipath device
# multipath -r
multipath -11
command can then be used to confirm the change.
1.14.3. Documentation
1.15. Adding/Removing a Logical Unit Through rescan-scsi-bus.sh
sg3_utils
package provides the rescan-scsi-bus.sh
script, which can automatically update the logical unit configuration of the host as needed (after a device has been added to the system). The rescan-scsi-bus.sh
script can also perform an issue_lip
on supported devices. For more information about how to use this script, refer to rescan-scsi-bus.sh --help
.
sg3_utils
package, run yum install sg3_utils
.
Known Issues With rescan-scsi-bus.sh
rescan-scsi-bus.sh
script, take note of the following known issues:
- A race condition requires that
rescan-scsi-bus.sh
be run twice if logical units are mapped for the first time. During the first scan,rescan-scsi-bus.sh
only addsLUN0
; all other logical units are added in the second scan. - A bug in the
rescan-scsi-bus.sh
script incorrectly executes the functionality for recognizing a change in logical unit size when the--remove
option is used. - The
rescan-scsi-bus.sh
script does not recognize ISCSI logical unit removals.
1.16. Modifying Link Loss Behavior
1.16.1. Fibre Channel
dev_loss_tmo
callback, access attempts to a device through a link will be blocked when a transport problem is detected. To verify if a device is blocked, run the following command:
cat /sys/block/device/device/state
blocked
if the device is blocked. If the device is operating normally, this command will return running
.
Procedure 1.6. Determining The State of a Remote Port
- To determine the state of a remote port, run the following command:
cat /sys/class/fc_remote_port/rport-H:B:R/port_state
- This command will return
Blocked
when the remote port (along with devices accessed through it) are blocked. If the remote port is operating normally, the command will returnOnline
. - If the problem is not resolved within
dev_loss_tmo
seconds, the rport and devices will be unblocked and all IO running on that device (along with any new IO sent to that device) will be failed.
Procedure 1.7. Changing dev_loss_tmo
- To change the
dev_loss_tmo
value,echo
in the desired value to the file. For example, to setdev_loss_tmo
to 30 seconds, run:echo 30 > /sys/class/fc_remote_port/rport-H:B:R/dev_loss_tmo
dev_loss_tmo
, refer to Section 1.1.1, “Fibre Channel API”.
/dev/sdx
will remain /dev/sdx
. This is because the dev_loss_tmo
expired. If the link problem is fixed at a later time, operations will continue using the same SCSI device and device node name.
Fibre Channel: remove_on_dev_loss
dev_loss_tmo
seconds), you can use the scsi_transport_fc
module parameter remove_on_dev_loss
. When a device is removed at the SCSI layer while remove_on_dev_loss
is in effect, the device will be added back once all transport problems are corrected.
Warning
remove_on_dev_loss
is not recommended, as removing a device at the SCSI layer does not automatically unmount any file systems from that device. When file systems from a removed device are left mounted, the device may not be properly removed from multipath or RAID devices.
1.16.2. iSCSI Settings With dm-multipath
dm-multipath
is implemented, it is advisable to set iSCSI timers to immediately defer commands to the multipath layer. To configure this, nest the following line under device {
in /etc/multipath.conf
:
features "1 queue_if_no_path"
dm-multipath
layer.
replacement_timeout
, which are discussed in the following sections.
1.16.2.1. NOP-Out Interval/Timeout
dm-multipath
is being used, the SCSI layer will fail those running commands and defer them to the multipath layer. The multipath layer then retries those commands on another path. If dm-multipath
is not being used, those commands are retried five times before failing altogether.
/etc/iscsi/iscsid.conf
and edit the following line:
node.conn[0].timeo.noop_out_interval = [interval value]
/etc/iscsi/iscsid.conf
and edit the following line:
node.conn[0].timeo.noop_out_timeout = [timeout value]
iscsiadm
to update configuration values explicitly.
iscsiadm -m node -T $target_name -p $target_ip:$port -o update -n \ node.session.timeo.replacement_timeout -v $timeout_value
SCSI Error Handler
replacement_timeout
seconds. For more information about replacement_timeout
, refer to Section 1.16.2.2, “replacement_timeout
”.
iscsiadm -m session -P 3
1.16.2.2. replacement_timeout
replacement_timeout
controls how long the iSCSI layer should wait for a timed-out path/session to reestablish itself before failing any commands on it. The default replacement_timeout
value is 120 seconds.
replacement_timeout
, open /etc/iscsi/iscsid.conf
and edit the following line:
node.session.timeo.replacement_timeout = [replacement_timeout]
1 queue_if_no_path
option in /etc/multipath.conf
sets iSCSI timers to immediately defer commands to the multipath layer (refer to Section 1.16.2, “iSCSI Settings With dm-multipath
”). This setting prevents I/O errors from propagating to the application; because of this, you can set replacement_timeout
to 15-20 seconds.
replacement_timeout
, I/O is quickly sent to a new path and executed (in the event of a NOP-Out timeout) while the iSCSI layer attempts to re-establish the failed path/session. If all paths time out, then the multipath and device mapper layer will internally queue I/O based on the settings in /etc/multipath.conf
instead of /etc/iscsi/iscsid.conf
.
iscsiadm
to update configuration values explicitly.
iscsiadm -m node -T $target_name -p $target_ip:$port -o update -n \ node.session.timeo.replacement_timeout -v $timeout_value
Important
replacement_timeout
will depend on other factors. These factors include the network, target, and system workload. As such, it is recommended that you thoroughly test any new configurations to replacements_timeout
before applying it to a mission-critical system.
iscsid.conf
settings for portals that have already been discovered and logged into. To modify the settings of a portal that has already been discovered and set up, run:
iscsiadm -m node -T $target_name -p $target_ip:$port -o update -n \ node.session.timeo.replacement_timeout -v $timeout_value
Note
iscsiadm logout
command on that session, then log back in.
iscsid.conf
. Next time the iscsiadm discovery
command is run and portals are found, the new value will be used.
1.16.3. iSCSI Root
dm-multipath
is implemented.
/etc/iscsi/iscsid.conf
and edit as follows:
node.conn[0].timeo.noop_out_interval = 0 node.conn[0].timeo.noop_out_timeout = 0
replacement_timeout
should be set to a high number. This will instruct the system to wait a long time for a path/session to reestablish itself. To adjust replacement_timeout
, open /etc/iscsi/iscsid.conf
and edit the following line:
node.session.timeo.replacement_timeout = replacement_timeout
/etc/iscsi/iscsid.conf
, you must perform a re-discovery of the affected storage. This will allow the system to load and use any new values in /etc/iscsi/iscsid.conf
. For more information on how to discover iSCSI devices, refer to Section 1.11, “Scanning iSCSI Interconnects”.
Configuring Timeouts for a Specific Session
/etc/iscsi/iscsid.conf
). To do so, run the following command (replace the variables accordingly):
iscsiadm -m node -T target_name -p target_IP:port -o update -n node.session.timeo.replacement_timeout -v $timeout_value
Important
dm-multipath
), refer to Section 1.16.2, “iSCSI Settings With dm-multipath
”.
1.17. Controlling the SCSI Command Timer and Device Status
- Abort the command.
- Reset the device.
- Reset the bus.
- Reset the host.
offline
state. When this occurs, all IO to that device will be failed, until the problem is corrected and the user sets the device to running
.
rport
is blocked. In such cases, the drivers wait for several seconds for the rport
to become online again before activating the error handler. This prevents devices from becoming offline due to temporary transport problems.
Device States
cat /sys/block/device-name/device/state
running
state, use:
echo running > /sys/block/device-name/device/state
Command Timer
/sys/block/device-name/device/timeout
. To do so, run:
echo value /sys/block/device-name/device/timeout
value
is the timeout value (in seconds) you want to implement.
udev
rule. To do so, open /etc/udev/rules.d/50-udev.rules
. You should find the following lines:
ACTION=="add", SUBSYSTEM=="scsi" , SYSFS{type}=="0|7|14", \ RUN+="/bin/sh -c 'echo 60 > /sys$$DEVPATH/timeout'"
echo 60
refers to the timeout length, in seconds; in this case, timeout is set at 60 seconds. Replace this value with your desired timeout length.
udev
is being used. If udev
is not in use, the default timeout is 30 seconds.
1.18. Troubleshooting
- Logical unit removal status is not reflected on the host.
- When a logical unit is deleted on a configured filer, the change is not reflected on the host. In such cases,
lvm
commands will hang indefinitely whendm-multipath
is used, as the logical unit has now become stale.To work around this, perform the following procedure:Procedure 1.8. Working Around Stale Logical Units
- Determine which
mpath
link entries in/etc/lvm/cache/.cache
are specific to the stale logical unit. To do this, run the following command:ls -l /dev/mpath | grep stale-logical-unit
- For example, if
stale-logical-unit
is 3600d0230003414f30000203a7bc41a00, the following results may appear:lrwxrwxrwx 1 root root 7 Aug 2 10:33 /3600d0230003414f30000203a7bc41a00 -> ../dm-4 lrwxrwxrwx 1 root root 7 Aug 2 10:33 /3600d0230003414f30000203a7bc41a00p1 -> ../dm-5
This means that 3600d0230003414f30000203a7bc41a00 is mapped to twompath
links:dm-4
anddm-5
. - Next, open
/etc/lvm/cache/.cache
. Delete all lines containingstale-logical-unit
and thempath
links thatstale-logical-unit
maps to.Using the same example in the previous step, the lines you need to delete are:/dev/dm-4 /dev/dm-5 /dev/mapper/3600d0230003414f30000203a7bc41a00 /dev/mapper/3600d0230003414f30000203a7bc41a00p1 /dev/mpath/3600d0230003414f30000203a7bc41a00 /dev/mpath/3600d0230003414f30000203a7bc41a00p1
target_IP
and port
variables refer to the IP address and port combination of a target/portal, respectively. For more information, refer to Section 1.2.1, “iSCSI API” and Section 1.11, “Scanning iSCSI Interconnects”.
man iscsiadm
.
Appendix A. Revision History
Revision History | |||
---|---|---|---|
Revision 1-26 | Tue Apr 15 2014 | ||
| |||
Revision 1-24 | Tue Oct 1 2013 | ||
| |||
Revision 1-20 | Tue May 28 2013 | ||
| |||
Revision 1-19 | Fri May 17 2013 | ||
| |||
Revision 1-17 | Wed May 15 2013 | ||
| |||
Revision 1-16 | Wed Jul 11 2012 | ||
| |||
Revision 1-15 | Fri May 25 2012 | ||
| |||
Revision 1-13 | Thu May 24 2012 | ||
| |||
Revision 1-9 | Fri Sep 16 2011 | ||
|
Index
Symbols
- /dev/disk
- persistent naming, Persistent Naming
A
- adding paths to a storage device, Adding a Storage Device or Path
- API, fibre channel, Fibre Channel API
- API, iSCSI, iSCSI API
B
- blocked device, verifying
- fibre channel
- modifying link loss behavior, Fibre Channel
C
- changing dev_loss_tmo
- fibre channel
- modifying link loss behavior, Fibre Channel
- Changing the read/write state
- Online logical units, Changing the Read/Write State of an Online Logical Unit
- command timer (SCSI)
- Linux SCSI layer, Command Timer
- controlling SCSI command timer and device status
- Linux SCSI layer, Controlling the SCSI Command Timer and Device Status
D
- determining remote port states
- fibre channel
- modifying link loss behavior, Fibre Channel
- device status
- Linux SCSI layer, Device States
- devices, removing, Removing a Storage Device
- dev_loss_tmo
- fibre channel
- modifying link loss behavior, Fibre Channel
- fibre channel API, Fibre Channel API
- dev_loss_tmo, changing
- fibre channel
- modifying link loss behavior, Fibre Channel
- disabling NOP-Outs
- iSCSI configuration, iSCSI Root
- dm-multipath
- iSCSI configuration, iSCSI Settings With dm-multipath
- drivers (native), fibre channel, Native Fibre Channel Drivers and Capabilities
E
- entries, device mapper table, Updating the Size of Your Multipath Device
F
- fast_io_fail_tmo
- fibre channel API, Fibre Channel API
- fibre channel API, Fibre Channel API
- fibre channel drivers (native), Native Fibre Channel Drivers and Capabilities
H
- host
- fibre channel API, Fibre Channel API
I
- iSCSI API, iSCSI API
- iSCSI logical unit, resizing, Resizing an iSCSI Logical Unit
- iSCSI root
- iSCSI configuration, iSCSI Root
- issue_lip
- fibre channel API, Fibre Channel API
M
- modifying link loss behavior, Modifying Link Loss Behavior
- fibre channel, Fibre Channel
N
- native fibre channel drivers, Native Fibre Channel Drivers and Capabilities
- NOP-Out requests
- modifying link loss
- iSCSI configuration, NOP-Out Interval/Timeout
- NOP-Outs (disabling)
- iSCSI configuration, iSCSI Root
O
- offline status
- Linux SCSI layer, Controlling the SCSI Command Timer and Device Status
- Online logical units, Online Logical Units
- Changing the read/write state, Changing the Read/Write State of an Online Logical Unit
P
- path to storage devices, adding, Adding a Storage Device or Path
- path to storage devices, removing, Removing a Path to a Storage Device
- persistent naming, Persistent Naming
- port states (remote), determining
- fibre channel
- modifying link loss behavior, Fibre Channel
Q
- queue_if_no_path
- iSCSI configuration, iSCSI Settings With dm-multipath
- modifying link loss
- iSCSI configuration, replacement_timeout
R
- remote port
- fibre channel API, Fibre Channel API
- remote port states, determining
- fibre channel
- modifying link loss behavior, Fibre Channel
- remove_on_dev_loss
- fibre channel
- modifying link loss behavior, Fibre Channel: remove_on_dev_loss
- removing devices, Removing a Storage Device
- removing paths to a storage device, Removing a Path to a Storage Device
- replacement_timeout
- modifying link loss
- iSCSI configuration, SCSI Error Handler, replacement_timeout
- replacement_timeoutM
- iSCSI configuration, iSCSI Root
- resized logical units, resizing, Resizing an Online Logical Unit
- resizing an iSCSI logical unit, Resizing an iSCSI Logical Unit
- resizing multipath device
- resizing online resized logical units, Updating the Size of Your Multipath Device
- resizing resized logical units, Resizing an Online Logical Unit
- running sessions, retrieving information about
- iSCSI API, iSCSI API
- running status
- Linux SCSI layer, Controlling the SCSI Command Timer and Device Status
S
- scanning storage interconnects, Scanning Storage Interconnects
- SCSI command timer
- Linux SCSI layer, Command Timer
- SCSI Error Handler
- modifying link loss
- iSCSI configuration, SCSI Error Handler
- specific session timeouts, configuring
- iSCSI configuration, Configuring Timeouts for a Specific Session
- storage interconnects, scanning, Scanning Storage Interconnects
- symbolic links in /dev/disk
- persistent naming, Persistent Naming
T
- timeouts for a specific session, configuring
- iSCSI configuration, Configuring Timeouts for a Specific Session
- transport
- fibre channel API, Fibre Channel API
U
- udev
- persistent naming, WWID
- udev rule (timeout)
- command timer (SCSI), Command Timer
- Universally Unique Identifier (UUID)
- persistent naming, UUID and Other Persistent Identifiers
- userspace API files
- fibre channel API, Fibre Channel API
- UUID
- persistent naming, UUID and Other Persistent Identifiers
V
- verifying if a device is blocked
- fibre channel
- modifying link loss behavior, Fibre Channel