前段時間接到深圳同事的反應,有個oracle集羣中的一臺負載過高,爲了排查問題,系統已經重啓了,但是系統重啓後,6塊仲裁盤丟失了。
爲了查明原因,登入系統後,執行df -h,發現系統的/boot分區變成了mpathap1,進入/dev/mapper目錄,發現多了mpathap1-3 三個文件。初步判斷是由於系統自帶多路徑軟件導致,查看了初始的配置/etc/multipath.conf 其中並未添加屏蔽本地磁盤的設置。於是手動按文檔添加後,由於改變的是系統本地分區,所以需要重啓系統,發現重啓後,問題依舊;繼續嘗試了/etc/fstab的修改,將boot直接綁定到/dev/sda,結果系統重啓不正常,只能進單用戶修改。嘗試卸載multipath軟件後重啓,原以爲系統會自動恢復到初始狀態,結果重啓後無法進入系統,需要單用戶模式進入,並重新安裝軟件。進入/dev/下查看是否有sda1-3發現系統並沒有此分區。最終確認系統重啓後系統已被多路徑軟件將分區篡改,而且不可逆,如果解決此問題只能重新安裝系統。所以配置多路徑前,一定要把本地磁盤給屏蔽掉。而且此問題的發生概率很小,因爲之前也重啓過很多次,所以配置時千萬小心。
通過執行 multipath -ll 發現兩臺的wwid 對應的磁盤盤符是錯亂的,以後查看的時候看來確實需要仔細,這裏耽誤了很長時間,因爲有15個盤符,一個一個對確實挺費事。爲了避免盤符錯亂,修改了/etc/multipath.conf ,爲每個wwid對應了一個固定的盤符。
方法:
multipath {
wwid 36005076802810fb3000000000000007d
alias mpathf
}
然後執行
multipath -F 清除配置。
service multipathd restart 重啓服務。
multipath -v2 重新掃描。
multipath -ll
至此磁盤對應關係解決了,剩下的工作就是DBA的事情了。
附錄添加方法: 執行/lib/udev/scsi_id --page=0x83 --whitelisted --device=/dev/sda 查看對應的wwid
然後添加:
blacklist {
wwid 36234567890abcde01c6a312c0a867e33
}
這樣就把本地盤給屏蔽掉了,而不是直接放開默認註釋:
#blacklist {
# wwid 0x6234567890abcde01c6a312c0a867e33
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
這個屏蔽掉光驅等外置設備,如果直接屏蔽設備也可以寫成devnode "^sd[a-z]*"