linux虚拟机的scsi设备id与盘符不一致问题的解决方法

这篇文章给大家介绍linux虚拟机的scsi设备id与盘符不一致问题的解决方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

成都创新互联企业建站,10余年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于成都网站设计、成都做网站中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。

   当用户挂载多个scsi磁盘时,重启虚拟机后虚拟机内部磁盘映射和用户配置的不一致。如图所示,用户配置的虚拟机scsi设备id与盘符对应关系。

linux虚拟机的scsi设备id与盘符不一致问题的解决方法

   当虚拟机重启以后,虚拟机的scsi设备id与盘符的对应关系与用户配置的不一致。如下图所示虚拟机的scsi设备id与盘符不一致:

 在这种情况下,Oracle RAC中所使用的盘符对应的设备发生变化时,会对业务造成一定影响。

解决办法:

使用虚拟机scsi设备时需要指定scsi设备id,此解决方法主要适用于使用整个scsi磁盘,不在虚拟机内部对scsi磁盘进行分区的情况。

环境:Redhat 6.5 64位操作系统,举例:/etc/udev/rules.d/60-raw.rules配置文件。

ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name",
RESULT=="360022a11000e085d0de717f500000003", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name",
RESULT=="360022a11000e085d0de7372c0000002e", RUN+="/bin/raw /dev/raw/raw2 %N"
KERNEL=="raw1", OWNER="grid", GROUP="oinstall", MODE="777"
KERNEL=="raw2", OWNER="grid", GROUP="oinstall", MODE="777"

我们可以通过/sbin/scsi_id -g -u -d /dev/$name,来获取配置中的RESULT。例如:

当你需要使用/dev/sda作为RAC设备,可以执行:
#/sbin/scsi_id -g -u -d /dev/sda
得到的结果是:
#360022a11000e085d0de717f500000003     \\配置中的RESULT

Redhat 6.5 64位操作系统,举例:/etc/udev/rules.d/60-raw.rules配置文件。

ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -d  /dev/$name",
RESULT=="360022a11000be24a0004aeee0000000a", RUN+="/bin/raw /dev/raw/raw1 %N"
KERNEL=="raw1", OWNER="grid", GROUP="oinstall", MODE="777"

通过在PROGRAM中指定的/sbin/scsi_id -g -u -d  /dev/$name,来获取配置中的RESULT。例如:

如果需要使用/dev/sda作为RAC设备,可以执行:
#/sbin/scsi_id -g -u -d  /dev/sda
得到的结果是:
#360022a11000be24a0004aeee0000000a     \\配置中的RESULT

原因分析:

Oracle RAC在安装过程中配置scsi磁盘时,传统方式是指向具体的盘符,如下/etc/udev/rules.d/60-raw.rules配置文件的内容,其中KERNEL字段代表指向的具体盘符。

ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="sdd",RUN+="/bin/raw /dev/raw/raw3 %N"
KERNEL=="raw1", OWNER="grid", GROUP="oinstall", MODE="777"
KERNEL=="raw2", OWNER="grid", GROUP="oinstall", MODE="777"
KERNEL=="raw3", OWNER="grid", GROUP="oinstall", MODE="777"

物理设备映射中呈现给虚拟机的设备id与盘符(如sda\sdb)的对应关系在虚拟机重启后有可能发生变化,原因如下:

Linux生成sda、sdb、sdc的规则是由Linux内核决定的。Linux内核对于这种磁盘设备的映射基本上取决于三个顺序,一是磁盘驱动程序的加载;二是主机PCI插槽的监测;三是磁盘本身的监测,先来是sda,以此类推。

物理机在设备热插拔后重启,也会面临盘符的变化问题。比如启动前是sda,sdb,sdc,把sdb设备拔掉后重启,呈现的设备号是sda,sdb(原来的sdc)。

关于linux虚拟机的scsi设备id与盘符不一致问题的解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


标题名称:linux虚拟机的scsi设备id与盘符不一致问题的解决方法
分享地址:http://scyanting.com/article/joicgo.html