iSCSI存储设备的udev绑定
针对挂载多个iSCSI设备时其设备名称可能存在变动的情况,通过使用udev规则将设备名称固定。
##############################################################################
系统环境:
RHEL 5.5 [2.6.18-192.el5]
软件环境:
lsscsi-0.17-3.el5
iscsi-initiator-utils-6.2.0.871-0.16.el5
udev-095-14.21.el5
##############################################################################
一、连接iSCSI设备
1. 查找
[root@localhost ~]# iscsiadmin -m discovery -t sendtargets -p 192.168.4.100
192.168.4.100:3260,1 iqn.2011-12.com.example:web
192.168.4.100:3260,1 iqn.2011-12.com.example:qdisk
2. 连接
依次访问,并确认当前的设备位置
[root@localhost ~]# service iscsi start
[root@localhost ~]# iscsiadm -m node -T iqn.2011-12.com.example:web --login
[root@localhost ~]# lsscsi //确认对应的新增设备
......
[1:0:0:0] storage IET Controller 0001 -
[1:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdb
[root@localhost ~]# iscsiadm -m node -T iqn.2011-12.com.example:qdisk --login
[root@localhost ~]# lsscsi //确认对应的新增设备
......
[1:0:0:0] storage IET Controller 0001 -
[1:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdb
[2:0:0:0] storage IET Controller 0001 -
[2:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdc
二、确认iSCSI设备的识别字串
用来唯一定位一个iSCSI设备。
1. 查找当前iSCSI设备的系统路径
[root@localhost ~]# udevinfo -q path -n /dev/sdb
/block/sdb
[root@localhost ~]# udevinfo -q path -n /dev/sdc
/block/sdc
2. 查看设备标记,找出具有唯一性的识别字串
[root@localhost ~]# udevinfo -q env -p /block/sdb
E:ID_VENDOR=IET
E:ID_MODEL=VIRTUAL-DISK
E:ID_REVISION=0001
E:ID_SERIAL=1IET_00010001
E:ID_TYPE=disk
E:ID_BUS=scsi
E:ID_PATH=ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:web-lun-1
[root@localhost ~]# udevinfo -q env -p /block/sdc
E:ID_VENDOR=IET
E:ID_MODEL=VIRTUAL-DISK
E:ID_REVISION=0001
E:ID_SERIAL=1IET_00020001
E:ID_TYPE=disk
E:ID_BUS=scsi
E:ID_PATH=ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:qdisk-lun-1
—— 以下方法貌似也能区分,但有说法称可能也偶有漂移
[root@localhost ~]# scsi_id -g -s /block/sdb
1IET 00010001
[root@localhost ~]# scsi_id -g -s /block/sdc
1IET 00020001
三、为iSCSI设备应用udev规则
改用自定义的固定名称 /dev/sdx、/dev/sdy
1. 建立规则
[root@localhost ~]# vi /etc/udev/rules.d/75-persist-iscsi.rules
KERNEL=="sd*", ENV{ID_SERIAL}=="1IE_00010001", NAME:="sdx%n", MODE:="0644", SYMLINK+="web%n"
KERNEL=="sd*", ENV{ID_SERIAL}=="1IE_00020001", NAME:="sdy%n", MODE:="0644", SYMLINK+="qdisk%n"
或者
[root@localhost ~]# vi /etc/udev/rules.d/75-persist-iscsi.rules
KERNEL=="sd*", ENV{ID_PATH}=="ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:web-lun-1", NAME:="sdx%n", MODE:="0644", SYMLINK+="web%n"
KERNEL=="sd*", ENV{ID_PATH}=="ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:qdisk-lun-1", NAME:="sdy%n", MODE:="0644", SYMLINK+="qdisk%n"
其中,
1)== 用来指定条件,以唯一匹配指定的设备;= 用来调整设置(名称、权限……); := 也用来调整设置,但禁止后续规则再次更改。
2)KERNEL 用来匹配内核识别的设备名称;ENV 用来检查特定的设备环境参数。
3)PROGRAM 用来执行识别程序(命令行),RESULT 用来检查PROGRAM的输出结果是否包含特定字串。
4)NAME 表示用户设置的设备名称;MODE 表示设备文件权限;SYMLINK 用来添加链接设备,例如可将/dev/sdx链接为/dev/web。
5)特殊变量 %p 表示当前匹配的设备,%n 表示内核识别设备时的序号,例如 /dev/sdx1、/dev/sdx2中的1、2 。
2. 启用规则
重启iscsi服务,或者重启系统(推荐),新的iSCSI设备名称即可生效。
##############################################################################
系统环境:
RHEL 5.5 [2.6.18-192.el5]
软件环境:
lsscsi-0.17-3.el5
iscsi-initiator-utils-6.2.0.871-0.16.el5
udev-095-14.21.el5
##############################################################################
一、连接iSCSI设备
1. 查找
[root@localhost ~]# iscsiadmin -m discovery -t sendtargets -p 192.168.4.100
192.168.4.100:3260,1 iqn.2011-12.com.example:web
192.168.4.100:3260,1 iqn.2011-12.com.example:qdisk
2. 连接
依次访问,并确认当前的设备位置
[root@localhost ~]# service iscsi start
[root@localhost ~]# iscsiadm -m node -T iqn.2011-12.com.example:web --login
[root@localhost ~]# lsscsi //确认对应的新增设备
......
[1:0:0:0] storage IET Controller 0001 -
[1:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdb
[root@localhost ~]# iscsiadm -m node -T iqn.2011-12.com.example:qdisk --login
[root@localhost ~]# lsscsi //确认对应的新增设备
......
[1:0:0:0] storage IET Controller 0001 -
[1:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdb
[2:0:0:0] storage IET Controller 0001 -
[2:0:0:1] disk IET VIRTUAL-DISK 0001 /dev/sdc
二、确认iSCSI设备的识别字串
用来唯一定位一个iSCSI设备。
1. 查找当前iSCSI设备的系统路径
[root@localhost ~]# udevinfo -q path -n /dev/sdb
/block/sdb
[root@localhost ~]# udevinfo -q path -n /dev/sdc
/block/sdc
2. 查看设备标记,找出具有唯一性的识别字串
[root@localhost ~]# udevinfo -q env -p /block/sdb
E:ID_VENDOR=IET
E:ID_MODEL=VIRTUAL-DISK
E:ID_REVISION=0001
E:ID_SERIAL=1IET_00010001
E:ID_TYPE=disk
E:ID_BUS=scsi
E:ID_PATH=ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:web-lun-1
[root@localhost ~]# udevinfo -q env -p /block/sdc
E:ID_VENDOR=IET
E:ID_MODEL=VIRTUAL-DISK
E:ID_REVISION=0001
E:ID_SERIAL=1IET_00020001
E:ID_TYPE=disk
E:ID_BUS=scsi
E:ID_PATH=ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:qdisk-lun-1
—— 以下方法貌似也能区分,但有说法称可能也偶有漂移
[root@localhost ~]# scsi_id -g -s /block/sdb
1IET 00010001
[root@localhost ~]# scsi_id -g -s /block/sdc
1IET 00020001
三、为iSCSI设备应用udev规则
改用自定义的固定名称 /dev/sdx、/dev/sdy
1. 建立规则
[root@localhost ~]# vi /etc/udev/rules.d/75-persist-iscsi.rules
KERNEL=="sd*", ENV{ID_SERIAL}=="1IE_00010001", NAME:="sdx%n", MODE:="0644", SYMLINK+="web%n"
KERNEL=="sd*", ENV{ID_SERIAL}=="1IE_00020001", NAME:="sdy%n", MODE:="0644", SYMLINK+="qdisk%n"
或者
[root@localhost ~]# vi /etc/udev/rules.d/75-persist-iscsi.rules
KERNEL=="sd*", ENV{ID_PATH}=="ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:web-lun-1", NAME:="sdx%n", MODE:="0644", SYMLINK+="web%n"
KERNEL=="sd*", ENV{ID_PATH}=="ip-192.168.4.100:3260-iscsi-iqn.2011-12.com.example:qdisk-lun-1", NAME:="sdy%n", MODE:="0644", SYMLINK+="qdisk%n"
其中,
1)== 用来指定条件,以唯一匹配指定的设备;= 用来调整设置(名称、权限……); := 也用来调整设置,但禁止后续规则再次更改。
2)KERNEL 用来匹配内核识别的设备名称;ENV 用来检查特定的设备环境参数。
3)PROGRAM 用来执行识别程序(命令行),RESULT 用来检查PROGRAM的输出结果是否包含特定字串。
4)NAME 表示用户设置的设备名称;MODE 表示设备文件权限;SYMLINK 用来添加链接设备,例如可将/dev/sdx链接为/dev/web。
5)特殊变量 %p 表示当前匹配的设备,%n 表示内核识别设备时的序号,例如 /dev/sdx1、/dev/sdx2中的1、2 。
2. 启用规则
重启iscsi服务,或者重启系统(推荐),新的iSCSI设备名称即可生效。