linux裸裝置三種對映方式

小亮520cl發表於2015-07-09
在Linux平臺oracle rac的組建過程中,如果使用ASM+RAW的儲存方式的話,由於asm不支援塊裝置,支援持字元訪問裝置,所以需要配置將Block Device Drive轉變成Character Device Drive的訪問方式。
但是在Linux平臺中,不像aix和HP-UX中,預設提供了塊裝置對應的字元裝置檔案,需要我們手工的將塊裝置對映為字元裝置。
在此,我們提供三種方式來講塊裝置繫結到裸裝置上,這三種方式建立裸裝置的方式完全一樣,區別在於對oracle使用者的許可權的處理方式不同,在此推薦使用第三種方式來進行塊裝置到字元裝置的繫結

第一種方式:
使用rawdevices服務,進行塊裝置到字元裝置的繫結
# vim /etc/sysconfig/rawdevices
/dev/raw/raw1  /dev/sdb1
/dev/raw/raw2  /dev/sdb2
/dev/raw/raw3  /dev/sdb3
/dev/raw/raw4  /dev/sdb4
# /etc/init.d/rawdevices start
或者 service rawdevices restart
# chkconfig --level 235 rawdevices on
成功開啟的標誌是:
# /etc/init.d/rawdevices status
/dev/raw/raw1:  bound to major 8, minor 17
/dev/raw/raw2:  bound to major 8, minor 18
/dev/raw/raw3:  bound to major 8, minor 19
/dev/raw/raw4:  bound to major 8, minor 20
為裸裝置賦予oracle使用者的可用許可權:
# chown oracle:oinstall /dev/raw/raw1 /dev/raw/raw2 /dev/raw/raw3 /dev/raw/raw4
# ls -l /dev/raw
crw------- 1 oracle oinstall 162, 1 Nov  4 00:34 /dev/raw/raw1
crw------- 1 oracle oinstall 162, 2 Nov  4 00:33 /dev/raw/raw2
crw------- 1 oracle oinstall 162, 3 Nov  4 00:33 /dev/raw/raw3
crw------- 1 oracle oinstall 162, 4 Nov  4 00:34 /dev/raw/raw4
至此,裸裝置對映成功,但是,這種方式的配置有一個問題:這些裸裝置是在rawdevices服務啟動的時候建立的,而rawdevices是以root使用者的身份執行的,因此這些裸裝置的預設使用者是root:root,所以,每一次服務進行重啟的時候,都需要重新修改這些字元裝置的許可權為oracle:oinsall。
可以在/etc/rc.local中加入對raw裝置的許可權修改語句,以應對重啟系統之後的裸裝置檔案許可權的改變。當重啟服務之後,則需要手工執行chown的命令了

第二種方式:
為了解決上面的情況,在此使用mknod提前建立出一個字元方式訪問的檔案,然後在將檔案繫結到塊裝置上,並把該檔案的owner設定為oracle,由於這些對映的字元裝置檔案是手工建立的,所以這個檔案的owner不會因為服務的重啟而發生改變:
# mknod /dev/raw/raw1 c 162 1
# mknod /dev/raw/raw2 c 162 2
# mknod /dev/raw/raw3 c 162 3
# mknod /dev/raw/raw4 c 162 4
注意此處的162不能改變,這個是raw裝置的主裝置編號,後面的數字是raw裝置的次裝置編號,這個次裝置編號可以依次改變
# ll /dev/raw/*
crw-r--r-- 1 root root 162, 1 Nov  4 01:02 raw1
crw-r--r-- 1 root root 162, 2 Nov  4 01:02 raw2
crw-r--r-- 1 root root 162, 3 Nov  4 01:03 raw3
crw-r--r-- 1 root root 162, 4 Nov  4 01:03 raw4
# chown oracle:oinstall /dev/raw/*
# ll /dev/raw/*
crw-r--r-- 1 oracle oinstall 162, 1 Nov  4 01:02 raw1
crw-r--r-- 1 oracle oinstall 162, 2 Nov  4 01:02 raw2
crw-r--r-- 1 oracle oinstall 162, 3 Nov  4 01:03 raw3
crw-r--r-- 1 oracle oinstall 162, 4 Nov  4 01:03 raw4
# vim /etc/sysconfig/rawdevices
/dev/raw/raw1   /dev/sdb1
/dev/raw/raw2   /dev/sdb2
/dev/raw/raw3   /dev/sdb3
/dev/raw/raw4   /dev/sdb4
# service rawdevices restart
# chkconfig --level 235 rawdevices on


第三種方式:
使用udev管理裝置的許可權
前四步驟和第一種方式一樣(大話oralce rac P140頁)

# vi /etc/udev/rules.d/60-raw.rules
ACTION=="add",KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %m"
ACTION=="add",KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="18",RUN+="/bin/raw /dev/raw/raw2 %m"
ACTION=="add",KERNEL=="sdb3",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="19",RUN+="/bin/raw /dev/raw/raw3 %m"
ACTION=="add",KERNEL=="sdb4",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="20",RUN+="/bin/raw /dev/raw/raw4 %m"

ACTION=="add",KERNEL=="raw[1-4]",OWNER=="oracle",GROUP="oinstall",MODE="640"
其中major是裝置的主裝置編號,minor是次裝置編號,最後一行是設定已設定裸裝置的檔案許可權
如此,就可以不用擔心rawdevices重啟之後的裝置檔案許可權的變化了

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

相關文章