CentOS/RHEL 5 的单路径配置
此过程使用 udev 实现 LUN 设备持久化。
仅对未使用多路径的主机使用此过程
- 编辑 /etc/scsi_id.config 文件。
确保将带有“options=-b”的行注释掉,并将参数“options=-g”添加到此文件中。
# vi /etc/scsi_id.config # options=-b options=-g
此选项将 udev 配置为假定所有连接的 SCSI 设备都返回一个 UUID。
- 要显示给定设备的 UUID,请运行“scsi_id -g -s /block/sd*”命令。
例如:
# scsi_id -g -s /block/sd* 3600a0b800013275100000015427b625e
输出可能与上面的示例有所不同。
输出显示设备 /dev/sdc 的 UUID。
验证“scsi_id -g -s /block/sd*”命令输出的UUID与访问设备的计算机相同。
创建规则来命名设备。
在 /etc/udev/rules.d 目录中创建一个名为“20-names.rules”的文件。
向该文件添加新规则。
所有规则都使用相同的格式添加到同一个文件中。
规则遵循以下格式:
# vi /etc/udev/rules.d/20-names.rules KERNEL=="sd[a-z]", BUS=="scsi", PROGRAM="/sbin/scsi_id -g -s /block/%k", RESULT="UUID", NAME="devicename"
用上面检索到的 UUID 和设备名称替换 UUID 和设备名称。
这是上面示例的规则:
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT="3600a0b800013275100000015427b625e", NAME="rack4row16"
udev 守护进程现在在所有名为 /dev/sd* 的设备中搜索规则中的 UUID。
一旦匹配的设备连接到系统,就会根据规则为该设备分配名称。
在 UUID 为 3600a0b800013275100000015427b625e 的设备中,将显示为 /dev/rack4row16.
- 将以下行添加到 /etc/rc.local 文件:
# vi /etc/rc.local /sbin/start_udev
- 将 /etc/scsi_id.config 、 /etc/udev/rules.d/20-names.rules 和 /etc/rc.local 文件中的更改复制到所有相关主机。
/sbin/start_udev
这适用于具有外部或者网络存储的系统;也就是说,基于光纤通道或者 iSCSI 的存储设备。
建议这些系统为主机配置持久设备名称。
这有助于实时迁移以及为多个虚拟化系统提供一致的设备名称和存储。
通用唯一标识符 (UUID) 是一种用于在分布式计算环境中识别计算机和设备的标准化方法。
本节使用 UUID 来标识 iSCSI 或者光纤通道 LUN。
UUID 在重启、断开连接和设备交换后仍然存在。
UUID 类似于设备上的标签。
未运行多路径的系统必须使用单路径配置。
运行多路径的系统可以使用多路径配置。
CentOS/RHEL 6 的单路径配置
此过程使用 udev 实现 LUN 设备持久化。
仅对未使用多路径的主机使用此过程。
- 编辑 /etc/scsi_id.config 文件。
添加以下行:
# vi /etc/scsi_id.config options=--whitelisted --replace-whitespace
这将设置 scsi_id 的默认选项,确保返回的 UUID 不包含空格。
否则 IET iSCSI 目标会返回 UUID 中的空格,这可能会导致问题。
- 要显示给定设备的 UUID,请运行以下命令:
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc 1IET_00010001
输出可能与上面的示例有所不同。
此示例中的输出显示设备 /dev/sdc 的 UUID。
验证命令的 UUID 输出是否正确且符合预期。
创建规则来命名设备。
在 /etc/udev/rules.d 目录中创建一个名为“20-names.rules”的文件。
向该文件添加新规则。
所有规则都使用相同的格式添加到同一个文件中。
规则遵循以下格式:
# vi /etc/udev/rules.d/20-names.rules KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="UUID", NAME="devicename"
用上面检索到的 UUID 和设备名称替换“UUID 和设备名称”。
这是上述三个 iSCSI LUN 示例规则的示例:
KERNEL==" sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name" , RESULT=="1IET_00010001", NAME="rack4row16lun1" KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name" , RESULT=="1IET_00010002", NAME="rack4row16lun2" KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name" , RESULT=="1IET_00010003", NAME="rack4row16lun3" < pre> The udev daemon now searches all devices named /dev/sd* for a matching UUID in the rules. When a matching device is connected to the system the device is assigned the name from the rule. For example: # ls -la /dev/rack4row16* brw-rw---- 1 root disk 8, 18 Jan 25 23:35 /dev/rack4row16lun1 brw-rw---- 1 root disk 8, 34 Jan 25 23:35 /dev/rack4row16lun2 brw-rw---- 1 root disk 8, 50 Jan 25 23:35 /dev/rack4row16lun3
- 将 /etc/scsi_id.config 和 /etc/udev/rules.d/20-names.rules 中的更改复制到所有相关主机。
具有配置规则的网络存储设备现在在文件更新的所有主机上具有持久名称这意味着可以使用共享存储在主机之间迁移来宾,并且来宾可以访问其配置文件中的存储设备。