linux系統 重啓盤符錯亂問題

linux磁盤重啓亂序問題處理linux

    最近到客戶那去巡檢時,客戶提到一個問題,他們的rac在重啓的時候,原來的sda一、sdb一、sdc1會對應變成sdd一、sde一、sdf1,因爲他們使用的是盤符來綁定裸設備,因此啓動後,常常要手動執行如下命令
[root@ractest1 ~]# raw /dev/raw/raw1 /dev/sda1 
[root@ractest1 ~]# raw /dev/raw/raw2 /dev/sdb1
[root@ractest1 ~]# raw /dev/raw/raw3 /dev/sdc1
而且,比較奇怪的事,兩邊有時認得的盤徹底不同,一邊是sda\b\c,另外一邊是sdd\e\f,這樣,使oracle rac的共享盤出現問題。oracle

在瞭解了他們的狀況後,我基本上明白是什麼緣由,這種盤序錯亂,與linux對磁盤的掃描機制有關,因此咱們只能從另外一角度去規避這樣的問題,使用id號去綁定,這樣就沒有問題。在告訴他後,他贊成咱們對他原來的綁定方式進行修改,具體操做以下:ui

[root@ractest1 ~]# fdisk -lspa

Disk /dev/sdd: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes.net

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       52216   419424988+  83  Linuxblog

Disk /dev/sde: 209 MB, 209715200 bytes
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytesip

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1        1008      204595   83  Linuxci

Disk /dev/sdf: 209 MB, 209715200 bytes
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytesget

   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1        1008      204595   83  Linuxinput

能夠看到,剛重啓的節點1是sdd/sde/sdf
另外一個節點的狀況是:
[root@ractest2 ~]# fdisk -l

Disk /dev/sda: 429.4 GB, 429496729600 bytes
255 heads, 63 sectors/track, 52216 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       52216   419424988+  83  Linux

Disk /dev/sdb: 209 MB, 209715200 bytes
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1008      204595   83  Linux

Disk /dev/sdc: 209 MB, 209715200 bytes
7 heads, 58 sectors/track, 1008 cylinders
Units = cylinders of 406 * 512 = 207872 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        1008      204595   83  Linux

分別在兩臺機子上執行以下命令:
[root@ractest2 ~] /usr/lib/udev/scsi_id -g -s /block/sda
360080e500017ff06000004054c47bd4a
[root@ractest2 ~] /usr/lib/udev/scsi_id -g -s /block/sdb
360080e500017fdd8000004c74c6344ef
[root@ractest2 ~] /usr/lib/udev/scsi_id -g -s /block/sdc
360080e500017ff060000044f4c63446e
[root@ractest1 ~] /usr/lib/udev/scsi_id -g -s /block/sdd
360080e500017ff06000004054c47bd4a
[root@ractest1 ~] /usr/lib/udev/scsi_id  -g -s /block/sde
360080e500017fdd8000004c74c6344ef
[root@ractest1 ~] /usr/lib/udev/scsi_id -g -s /block/sdf
360080e500017ff060000044f4c63446e

能過對比,能夠看到sda與sdd,sdb與sde,sdc與sdf是對應用的,因此咱們啓用udev,經過綁定id來規避這個問題!

[root@ractest1 ~]# cd /etc/udev/rules.d/
[root@ractest1 rules.d]# ls -a
.                    50-udev.rules     60-pcmcia.rules         61-uinput-wacom.rules  90-hal.rules
..                   51-hotplug.rules  60-raw.rules            85-pcscd_ccid.rules    95-pam-console.rules
05-udev-early.rules  60-libsane.rules  60-wacom.rules          90-alsa.rules          98-kexec.rules
40-multipath.rules   60-net.rules      61-uinput-stddev.rules  90-dm.rules            bluetooth.rules
[root@ractest1 rules.d]# vi 60-raw.rules

# Enter raw device bindings here.
#
# An example would be:
#   ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
#   ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
ACTION=="add", KERNEL=="sd*1", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="360080e500017ff060000044f4c63446e", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sd*1", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="360080e500017fdd8000004c74c6344ef", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sd*1", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="360080e500017ff06000004054c47bd4a", RUN+="/bin/raw /dev/raw/raw3 %N"
KERNEL=="raw[1-3]", OWNER="oracle", GROUP="dba", MODE="660"
[root@ractest1 rules.d]# start_udev 
 Starting udev: [  OK  ]
[root@ractest1 rules.d]#
[root@ractest1 rules.d]# raw -qa
/dev/raw/raw1:  bound to major 8, minor 81
/dev/raw/raw2:  bound to major 8, minor 65
/dev/raw/raw3:  bound to major 8, minor 49

同理,在另外一臺機,也進行一樣的操做。

通過如上操做後,全部問題都解決了,無論怎麼重啓都不會有問題!

 

 

原文地址:

http://blog.itpub.net/21752515/viewspace-1063051/

https://blog.csdn.net/ctypyb2002/article/details/78668499

相關文章
相關標籤/搜索