UDEV簡介及配置過程

hxw2ljj發表於2015-10-30

Linux環境下安裝Oracle11g RAC時,OS層面配置好多路徑軟體後(multipath),下一步就需要配置udevasmlib來處理共享分割槽(Lun),以便Orace ASM能夠看到這些分割槽(Lun)。Linux6後,UDEV配置比asmlib配置起來相對簡單。關於Multipath的配置說明,在上一文章(Linux MultiPath多路徑軟體實施說明 )已經進行了說明。接下來將要說明UDEV的配置操作。

 

udev 簡介

     簡單的講,透過UDEV配置,能夠讓Oracle對磁碟名進行持久化並改變磁碟訪問許可權為grid:asmadmin。這樣在ASM的配置過程中能夠看到磁碟。今後增加磁碟也不會改變原有的磁碟名稱。

           在儲存行業中,使用者總是有這樣的要求:linux系統中原來有一塊SCSI硬碟,系統分配的裝置檔案是/dev/sda。現在新增加了一個外接的磁碟陣列,透過SCSI卡連線。在接上這個磁碟陣列後,/dev/sda變成了磁碟陣列的硬碟了,原來內建的SCSI硬碟變成了 /dev/sdb,如何將裝置檔名固定下來呢?

         linux kernel 2.6核心之前,我們只能和使用者說,這個比較麻煩,因為/dev/sda等檔案都是linux核心自動分配的。很難固定下來,除非你更改載入SCSI卡驅動程式的順序,而且對於其他的即插即用裝置,如USB裝置等都不適用。

升級到linux kernel 2.6核心後,這個問題已經可以透過linux kernel 2.6核心新的sysfs檔案系統和udev程式來解決了。udev是一種工具,它能夠根據系統中的硬體裝置的狀態動態更新裝置檔案,包括完成對裝置檔案的建立、刪除和重新整理。

 

udev原理和結構

1. 當udev從kernel收到裝置add/remove 事件後, udev 將解析:

§        /etc/udev/rules.d目錄中的使用者自定義規則檔案

§        使用自定義規則輸出(可選的)

§        從/sys中查詢相應資訊

2. 根據解析的資訊,udev彙集了處理裝置命名:

§        確定將建立什麼裝置檔案(device file)或符號連結(symlink)

§        確定如何設定裝置檔案屬性

§        確定後續操作

 

配置udev

          所有的udev配置檔案被放置在/etc/udev目錄下,所有的配置檔案均採用文字格式方便使用者配置修改,在udev讀取過程中將忽略配置檔案中以#號開頭的行。

udev的全域性控制配置檔案是/etc/udev/udev.conf,它定義了udev的全域性配置引數。/etc/udev/udev.conf檔案配置專案前只有3個:

  • udev_root ── 定義在那個目錄中建立所需的裝置檔案,預設位置為/dev目錄。
  • udev_rules ── 定義從那個配置檔案或配置目錄中讀取udev規則,預設位置為 /etc/udev/rules.d目錄
  • udev_log ── 定義在傳遞logsyslog系統日誌時的優先順序,在除錯udev的時候也可以run-time的使用udevcontrol命令修改這個優先順序。 預設優先順序為err,其它可選優先順序為infodebug

 

udev規則

1. 檔名位置及命名方法

  • 預設放置在/etc/udev/rules.d目錄下
  • 命名為<rule_name>.rules,例如
  1. 40multipath.rules
  2. 60net.rules
  3. bluetooth.rules

2. 規則結構

  • <matchkey><op>value[,....]<assignmentkey><op>value[,....]

例如:

ACTION=="add",SUBSYSTEM=="mmc", UN+="modprobe mmc_block"

ACTION=="add", KERNEL=="sda", RUN+="/bin/raw  /dev/raw/raw1 %N"

3. 規則檔案將在第一次預讀後緩衝

  • 當規則檔案被修改後時間戳的更新會強制udev從讀規則檔案,如果想強制重讀可以使用touch命令更新時間戳。

udev透過讀取規則檔案來決定如何命名或重新命名裝置和執行附加操作。一般情況下,規則檔案放置在/etc/udev/rules.d目錄下以 .rules 結尾的方式命名。如果配置檔案不止一個,udev將按其檔名的詞彙順序讀取每個規則配置檔案。通常,我們以兩位的數字開頭定義udev規則檔案,比如:

40multipath.rules60net.rules40multipath.rules 規則檔案會在60net.rules規則檔案之前被讀取,因為按照詞彙順序46之前。預設的udev規則存放在/etc/udev/rules.d/50udev.rules檔案中。它包含一些例子,和一些預設的規則以提供一種devfs風格的/dev層。通常,我們希望自定義的規則先於預設的規則被執行,所以我建議你新增。

 

關於/etc/udev/rules.d/下新增配置檔案的具體內容,與多路徑配置時形成磁碟分割槽名稱、型別、uuid等有關聯,在此引用Deploying Oracle RAC 11g R2 Database on Red Hat EnterpriseLinux 6 的相關介紹,最後以生產系統為例進行說明:

 

99-oracle-asmdevices.rules檔案的配置過程

 

1. On the first node of the Oracle RAC cluster, as the root user, identify the Device

Mapper Universally Unique IDentifier (DM_UUID) for each device mapper volume. The

example below shows the DM_UID for the partitions of the volumes labeled

ocrvote1,ocrvote2,ocrvote3,db1,db2,fra, and redo.

 

# for i in ocrvote1p1 ocrvote2p1 ocrvote3p1 db1p1 db2p1 frap1 redop1; do

printf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/$i |grep -i dm_uuid)"; done

 

其中ocrvote1p1 ocrvote2p1 ocrvote3p1 db1p1 db2p1 frap1 redop1multipath形成的裸裝置分割槽名。在OS下執行以上檔案後,會生成如下內容(根據實際環境有所不同):

 

ocrvote1p1 E: DM_UUID=part1-mpath-3600c0ff000dabfe596a0f65101000000

ocrvote2p1 E: DM_UUID=part1-mpath-3600c0ff000dabfe5a2a0f65101000000

ocrvote3p1 E: DM_UUID=part1-mpath-3600c0ff000dabfe5b4a0f65101000000

db1p1 E: DM_UUID=part1-mpath-3600c0ff000d7e7a854a0f65101000000

db2p1 E: DM_UUID=part1-mpath-3600c0ff000dabfe562a0f65101000000

frap1 E: DM_UUID=part1-mpath-3600c0ff000d7e7a874a0f65101000000

redop1 E: DM_UUID=part1-mpath-3600c0ff000dabfe585a0f65101000000

 

2. Create a file labeled 99-oracle-asmdevices.rules within /etc/udev/rules.d/

 

3. Within 99-oracle-asmdevices.rules file, create rules for each device similar to the

example below:

/etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="dm-*",ENV{DM_UUID}=="part1-mpath-

3600c0ff000dabfe5f4d8515101000000",OWNER="grid",GROUP="asmadmin",MODE="06

60"

To understand the rule above, it can be read as follows:

If any dm- device matches the DM_UUID of part1-mpath-

3600c0ff000dabfe5f4d8515101000000, assign to that dm- device to be owned by the

grid user and part of the asmadmin group with the permission mode set to 0660.

The 0660 value provides read and write permissions to the user grid and owner

asmadmin.

 

4. Save the file labeled 99-oracle-asmdevices.rules

 

5. Copy the 99-oracle-asmdevices.rules file to each node within the Oracle RAC

Database 11g Release 2 cluster using the scp command and enter the appropriate

password credentials for the other nodes. The example below shows how to copy the

file to node two of the Oracle RAC Database 11g Release 2 cluster.

# scp /etc/udev/rules.d/99-oracle-asmdevices.rules db-oraclenode2:/

etc/udev/rules.d/

Warning: Permanently added 'db-oracle-node2,10.16.142.52' (RSA) to the

list of known hosts.

root@db-oracle-node2's password:

99-oracleasmdevices.rules 100% 833 0.8KB/s 00:00

 

6. On each node within the Oracle RAC Database cluster, locate the dm- device for each

Oracle related partition. An example of how to find the dm- device for each partition is

to run the following command:

# for i in db1p1 db2p1 frap1 redop1 ocrvote1p1 ocrvote2p1 ocrvote3p1; do

printf "%s %s\n" "$i" "$(ls -ll /dev/mapper/$i)"; done

db1p1 lrwxrwxrwx. 1 root root 8 Aug 1 15:21 /dev/mapper/db1p1 -> ../dm-14

db2p1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/db2p1 -> ../dm-15

frap1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/frap1 -> ../dm-17

redop1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/redop1 -> ../dm-16

ocrvote1p1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/ocrvote1p1-> ../dm-18

ocrvote2p1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/ocrvote2p1-> ../dm-19

ocrvote3p1 lrwxrwxrwx. 1 root root 8 Aug 1 15:22 /dev/mapper/ocrvote3p1-> ../dm-20

 

7. On each node within the Oracle RAC Database cluster, apply and test the rules for

each dm- device created within the 99-oracle-asmdevices.rules by running a udevadm

test on each device. The example below demonstrates a udevadm test on dm-11.

 

# udevadm test /sys/block/dm-11

[ ... Output Abbreviated ... ]

udevadm_test: DM_NAME=db1p1

udevadm_test: DM_UUID=part1-mpath-3600c0ff000d7e7a86485ac5101000000

udevadm_test: DM_SUSPENDED=0

udevadm_test: DEVLINKS=/dev/mapper/db1p1 /dev/disk/by-id/dm-name-db1p1

/dev/disk/by-id/dm-uuid-part1-mpath-3600c0ff000d7e7a86485ac5101000000

/dev/block/253:11

udevadm_test: ID_FS_TYPE=oracleasm

 

 

8. Confirm each device has the desired permissions on each node within the cluster.

# ls -lh /dev/dm-*

brw-rw----. 1 grid asmadmin 253, 14 Aug 1 16:02 /dev/dm-14

brw-rw----. 1 grid asmadmin 253, 15 Aug 1 16:02 /dev/dm-15

brw-rw----. 1 grid asmadmin 253, 16 Aug 1 16:02 /dev/dm-16

brw-rw----. 1 grid asmadmin 253, 17 Aug 1 16:02 /dev/dm-17

brw-rw----. 1 grid asmadmin 253, 18 Aug 1 16:02 /dev/dm-18

brw-rw----. 1 grid asmadmin 253, 19 Aug 1 16:03 /dev/dm-19

brw-rw----. 1 grid asmadmin 253, 20 Aug 1 16:02 /dev/dm-20

 

 

NOTE: If the desired permissions are not visibile, please reboot the particular node

from the Oracle RAC Database cluster.

 

 

理解以上內容的基礎上,將99-oracle-asmdevices.rules檔案內容的配置可以簡化為如下:

 

在第一節點透過fdisk格式化磁碟,做成分割槽形成:

fdisk /dev/mapper/mpathb

fdisk /dev/mapper/mpathc

fdisk /dev/mapper/mpathd

fdisk /dev/mapper/mpathe

.....

 

格式化fdisk /dev/mapper/mpathbfdisk /dev/mapper/mpathcfdisk /dev/mapper/mpathdfdisk /dev/mapper/mpathe

等裝置,形成/dev/mapper/mpathcp1fdisk /dev/mapper/mpathdp1fdisk /dev/mapper/mpathep1   ...

 

作為專業一點兒的DBA,我們也可以在multipath配置中設定alias,如下:

multipath {

wwid 3600c0ff000d7e7a854a0f65101000000

alias data01p1

}

 

 

二節點掃描裝置:

# partprobe

 



編寫UDEV檔案(雙節點都要配置



編寫UDEV許可權檔案:vi /etc/udev/rules.d/99-oracle-asmdevices.rules


PROGRAM="/bin/chown grid:oinstall /dev/mapper/orcvotep1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/data01p1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/data02p1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/data03p1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/data04p1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/data05p1"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/fra01"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/fra02"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/fra03"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/fra04"


PROGRAM="/bin/chown grid:oinstall /dev/mapper/fra05"


PROGRAM="/bin/chmod 0660 /dev/mapper/orcvotep1"


PROGRAM="/bin/chmod 0660 /dev/mapper/data01p1"


PROGRAM="/bin/chmod 0660 /dev/mapper/data02p1"


PROGRAM="/bin/chmod 0660 /dev/mapper/data03p1"


PROGRAM="/bin/chmod 0660 /dev/mapper/data04p1"


PROGRAM="/bin/chmod 0660 /dev/mapper/data05p1"


PROGRAM="/bin/chmod 0660 /dev/mapper/fra01"


PROGRAM="/bin/chmod 0660 /dev/mapper/fra02"


PROGRAM="/bin/chmod 0660 /dev/mapper/fra03"


PROGRAM="/bin/chmod 0660 /dev/mapper/fra04"


PROGRAM="/bin/chmod 0660 /dev/mapper/fra05"


 


雙節點重新啟動UDEV


#start_udev



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18796236/viewspace-1818779/,如需轉載,請註明出處,否則將追究法律責任。

相關文章