歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux虛擬機的設備id與盤符不一致問題的解決

Linux虛擬機的設備id與盤符不一致問題的解決

日期:2017/2/28 14:00:05   编辑:Linux教程

當用戶掛載多個scsi磁盤時,重啟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 \\配置中的RESULTRedhat 6.5 64位操作系統,舉例:/etc/udev/rules.d/60-raw.rules配置文件。
ACTION=="add", KERNEL=="sd*", PROGRAM=="/sbin/scsi_id -g -u -s %p",
RESULT=="360022a11000be24a0004aeee0000000a", RUN+="/bin/raw /dev/raw/raw1 %N"
KERNEL=="raw1", OWNER="grid", GROUP="oinstall", MODE="777"

通過在PROGRAM中指定的/sbin/scsi_id -g -u -s %p,來獲取配置中的RESULT。例如:

如果需要使用/dev/sda作為RAC設備,可以執行:
#/sbin/scsi_id -g -u -s /block/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)。

Copyright © Linux教程網 All Rights Reserved