linux系統 重啟碟符錯亂問題

2022-02-26 06:21:13 字數 4874 閱讀 5128

linux磁碟重啟亂序問題處理

最近到客戶那去巡檢時,客戶提到乙個問題,他們的rac在重啟的時候,原來的sda1、sdb1、sdc1會對應變成sdd1、sde1、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的共享盤出現問題。

在了解了他們的情況後,我基本上明白是什麼原因,這種盤序錯亂,與linux對磁碟的掃瞄機制有關,所以我們只能從另一角度去規避這樣的問題,使用id號去繫結,這樣就沒有問題。在告訴他後,他同意我們對他原來的繫結方式進行修改,具體操作如下:

[root@ractest1 ~]# fdisk -l

disk /dev/sdd: 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/sdd1               1       52216   419424988+  83  linux

disk /dev/sde: 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/sde1               1        1008      204595   83  linux

disk /dev/sdf: 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/sdf1               1        1008      204595   83  linux

可以看到,剛重啟的節點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=="8", env=="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

同理,在另一台機,也進行同樣的操作。

經過如上操作後,所有問題都解決了,不管怎麼重啟都不會有問題!

Windows系統碟符錯亂導致桌面無法載入。

問題如下 同事有台筆記本更換ssd硬碟,it職員幫他將新硬碟分好區後再將系統完整ghost過來,然後裝到筆記本上。理論上直接就可以使用了!但結果開機後登陸使用者桌面無法顯示,螢幕黑屏什麼都沒有。問題解決 按下ctrl shift esc能開啟任務管理器,但右擊相關程序屬性發現所有的系統應用顯示為h ...

linux系統關閉及重啟

如果當前使用者是root,可以執行shutdown h now命令關閉計算機 root zabbix server shutdown h now 如果需要重新啟動計算機,可以執行shutdown r now或者reboot命令 root zabbix server shutdown r now 區別...

關閉和重啟Linux系統

linux教程 linux教程 在linux系統下,常用的關閉 重啟系統的命令有shutdownhatlreboot和systemctl 另外在計算機中,所有的資料都要被讀入記憶體後,才能被cpu處理。在linux系統中,為了加快資料讀取速度,在預設的情況下,某些已經載入記憶體中的資料將不會直接被寫...