使用UDEV SCSI規則在Oracle Linux上配置ASM
對於使用ASM管理的磁碟來說,需要一種能夠用於一致性標識磁碟裝置及其正確的所屬關係和許可權的手段。在Linux系統中,可以使用ASMLib來執行這項任務,但是這樣做的缺點是在作業系統上增加了額外的一層,從而導致了管理的複雜性,使用ASMLib配置ASM的方式現在已經不再流行。
一種替代的解決方案是:使用Linux裝置管理器“udev”來完成這項任務。自2.6核心開始,就可以使用udev協助管理系統中各裝置名稱,udev能動態地在/dev目錄裡產生自定義的、標識性強的裝置檔案或裝置連結。本文概述瞭如何使用UDEV規則來配置ASM磁碟。
從本質上來說,UDEV是一種對已定義好的規則的應用,這個規則以檔案的形式儲存在“/etc/udev/rules.d”目錄下。規則的定義可以採用多種方式,我們需要做的是確定裝置以及說明希望UDEV用它做什麼。眾所周知,所有的磁碟裝置才採用“/dev/sd?1”的形式命名,所以我們可以使用以下的規則引數來標識裝置:
1 |
KERNEL== "sd?1" ,BUS== "scsi"
|
為每一個磁碟起一個別名,使其總是以一種一致的方式被標識,而不管Linux為它分配何種裝置名。所以在此之前需要進行一項測試,以確定該磁碟是否就是配置ASM所需要的磁碟。測試的原理是:由於每個磁碟都有一個唯一的SCSI ID,可將是否匹配這個ID作為測試規則。下列規則引數解釋瞭如何進行這種測試匹配:
1 2 3 4 5 6 7 8 |
#OL5中,測試規則如下:
PROGRAM== "/sbin/scsi_id
-g -u -s /block/$parent" ,
RESULT== "SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"
#在OL6中scsi_id命令稍有不同,測試規則如下:
PROGRAM== "/sbin/scsi_id
-g -u -d /dev/$parent" ,
RESULT== "SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"
#在OL7中,scsi_id命令被置於不同的路徑下,測試規則如下:
PROGRAM== "/usr/lib/udev/scsi_id
-g -u -d /dev/$parent" ,
RESULT== "SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"
|
一旦能夠明確標識指定的磁碟後,我們就可以指示在磁碟上的執行的動作,下列的udev引數為磁碟指定了一個別名、磁碟的所屬關係以及許可權:
1 |
NAME= "asm-disk1" ,
OWNER= "oracle" ,
GROUP= "dba" ,
MODE= "0660"
|
綜上所述,對於一個磁碟來說,完整的udev規則定義如下:
1 2 3 4 5 6 7 8 |
#OL5
KERNEL== "sd?1" ,
BUS== "scsi" ,
PROGRAM== "/sbin/scsi_id
-g -u -s /block/$parent" ,
RESULT== "SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_" ,
NAME= "asm-disk1" ,
OWNER= "oracle" ,
GROUP= "dba" ,
MODE= "0660"
#OL6
KERNEL== "sd?1" ,
BUS== "scsi" ,
PROGRAM== "/sbin/scsi_id
-g -u -d /dev/$parent" ,
RESULT== "SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_" ,
NAME=
|