2021-05-12 14:32:11
Linux虛擬機器的裝置id與碟符不一致問題的解決
當使用者掛載多個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與碟符(如sdasdb)的對應關係在虛擬機器重新啟動後有可能發生變化,原因如下:
Linux生成sda、sdb、sdc的規則是由Linux核心決定的。Linux核心對於這種磁碟裝置的對映基本上取決於三個順序,一是磁碟驅動程式的載入;二是主機PCI插槽的監測;三是磁碟本身的監測,先來是sda,以此類推。
物理機在裝置熱插拔後重新啟動,也會面臨碟符的變化問題。比如啟動前是sda,sdb,sdc,把sdb裝置拔掉後重新啟動,呈現的裝置號是sda,sdb(原來的sdc)。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-07/120139.htm
相關文章