Linux平臺上配置Oracle ASMLib和磁碟多路徑

pxbibm發表於2015-04-29
以下文件描述如何在linux的平臺下使用oracleasmlib來訪問多路徑的磁碟,無論您使用哪種多路徑的軟體,該文件是建立在已經建立好了多路徑磁碟的基礎上的。這個文件給出的多路徑磁碟的名稱是" multipatha",和儲存廠商無關。

      

涉及多路徑軟體的問題:

 

        在使用多路徑軟體的時候,我們有兩個問題需要面對:ASM無法同時看到2次同樣的磁碟,這樣會出現錯誤。每塊盤在多路徑的配置下會出現至少3次,如:

     

        磁碟的第一條路徑

        磁碟的第二條路徑

        由多路徑軟體聚合的邏輯路徑

     

 

下面是一個例子:假設一個系統有一個本地磁碟,為/ dev/ sda上,和一個磁碟透過外部儲存連線.該主機擁有2條鏈路或者路徑來訪問這個外部的儲存。

 

LinuxSCSI驅動會看到所有的這兩條路徑。他們會顯示成/dev/sdb/dev/sdc.系統可以透過sdb或者sdc來訪問到同樣的終端。

此時,如果我們啟用多路徑的軟體來管理,會有一條多路徑軟體聚合出來的磁碟 ,如/dev/multipatha,它能通同時訪問到這兩個路徑,也就是說,任何I/ O使用multipatha可以透過任何一條路徑來訪問磁碟。

如果一個系統使用sdb路徑,而這條鏈路上的電纜唄拔出是,這個系統會收到錯誤。但是multipath的磁碟會知道切換到sdc的路徑上去繼續工作。

 

大部分的軟體是無法識別出來多路徑的配置的,它可以使用任何一條路徑:sdb或者sdc或者是multpatha,並且是無法知道有什麼區別的。ASMLIB也一樣,預設的配置中,ASMLIB也是不會關心使用那條路徑的。

ASMLIB會選擇,並且只會選擇一條路徑,因為ASM不能同時管理兩塊相同的磁碟。這樣我們就解決了第一個問題。ASM只會看到一條路徑,而且可以正常的工作。

 

這就出現了第二個問題:ASM究竟看到的是那個路徑?

預設的情況下,ASMLIB會選擇第一條它找到的路徑.Linux系統中給出的第一條路徑,第一條路徑取決於磁碟的驅動,它可能是multipath 或者是某一條單路徑。

 

系統管理員希望ASMLIB始終使用多路徑的磁碟!如果Oracle不是使用它,有什麼指定的方式嗎?

 

答案是沒有,儘管如此,如果我們想讓ASMLIB知道多路徑軟體的磁碟看起來是什麼樣的,那麼我們必須透過配置來告訴它:

 

 

 

 

磁碟掃描順序:

 

                   ASMLIB是透過ASMLIB安裝中描述的過程來把磁碟標識成ASMLIB使用的磁碟。ASMLIB透過一個磁碟掃描的過程來知道哪些磁碟是被標識過的。ASMLIB每次啟動的時候都會執行一次這樣的掃描,當然系統管理員可以透過/etc/init.d/oracleasm scandisks的命令來強制做一次掃描。

ASMLIB會檢查系統中的每一塊磁碟。它會檢查每一塊盤是否被標識成了asmlib的磁碟,所有被標識過的磁碟都是ASMLIB的有效盤,通常情況下,ASMLIB透過OS的列表順序來檢查這些磁碟,大部分的OS都能提供合理的順序。     

    上邊我們說的情況,我們描述了一種OS的順序不夠好的情況。系統管理員希望ASMLIB在看到單路徑的盤之前先掃描到多路徑的聚合磁碟。這樣ASMLIB會選擇多路徑聚合出來的磁碟,並把它交給Oracle使用。

ASMLib允許兩種修改方式來控制磁碟掃描的順序。第一種,它允許我們排除一部分不需要掃描的磁碟。換句話說,ASMLib會完全忽略折現磁碟。第二種,系統管理員可以指定哪些磁碟先被掃描.指定的這些磁碟會在系統中其它磁碟掃描之前完成掃描。

     多路徑軟體配置中可以使用任意一種方式,系統管理員可以選擇排除所有的單路徑磁碟的方式,這樣ASMLib會忽略他們,只掃描多路徑的磁碟。或者系統管理員可以指定多路徑的盤被先掃描。這樣ASMLib就會先發現聚合路徑的盤,優先選擇先發現的磁碟。

  

  

配置掃描的順序:

ASMLib的配置檔案的路徑在/etc/sysconfig/oracleasm.它被連結到檔案/etc/sysconfig/oracleasm-_dev_oracleasm 工具會讀取後邊的這個檔案。這裡包含了所有系統管理員透過/etc/init.d/oracleasm configure 命令配置的啟動配置資訊,但是命令不能配置掃描的順序。

該配置檔案中包含很多配置的變數。

ORACLEASM_SCANORDER 引數指定了哪些磁碟被優先掃描;

ORACLEASM_SCANEXCLUDE引數指定了哪些磁碟在掃描的過程中被忽略掉;

該變數用空格分隔的字首字串列表來匹配.換言之,如果一個磁碟的開始部分和字首相同,那麼就是匹配。例如,字首字串sd會匹配到所有的SCSI驅動的裝置。注意不是模糊匹配.引數裡不要使用萬用字元,他們是簡單的前置字元。另外注意 /dev/ 路徑並不是前置字元的一部分。

 

注意:當掃描的過程中,只有核心知道的裝置名才會被掃描得到。當使用device-mapper的時候,核心看到的裝置是/dev/dm-XX。在/dev/mapper/XXX中的裝置名稱是udev建立的其它可讀性的名稱。無論是ORACLEASM_SCANORDER 還是 ORACLEASM_SCANEXCLUDE必須使用 dm 前置字元。

 

以下是一些例子:

 

注意:如果我們手工的編輯/etc/sysconfig/oracleasm,一定確保不要破壞該檔案到/etc/sysconfig/oracleasm-_dev_oracleasm的連結。

 

多路徑磁碟優先讀取:

 

系統管理員配置ASMLib來有限讀取多路徑軟體的聚合盤,在ASMLib的配置檔案中,編輯ORACLEASM_SCANORDER變數,如下格式:

 

 

ORACLEASM_SCANORDER="multipath sd"

 

此時,在掃描的過程中,ASMLib會首先尋找以"multipath"開頭的磁碟。多路徑的裝置/dev/multipatha 當然是符合的。這樣它就會被優先掃描到。然後ASMLib開始尋在以"sd"開頭的磁碟。這些是SCSI的磁碟。本地裝置/dev/sda會被掃描到,但是它並非一個ASM的磁碟。

單路徑的磁碟/dev/sdb/dev/sdc也會被掃描到,他們是ASM的磁碟,但是ASMLib 會發現已經有了一條通道來訪問它。ASMLib會忽略他們。接下來ASMLib會繼續掃描其它沒有匹配前置字元的磁碟。

 

 

排除單路徑的磁碟:

 

系統管理員可以配置ASMLib來忽略但路徑的磁碟。在ASMLib的配置檔案中,編輯ORACLEASM_SCANEXCLUDE變數,如下格式:

 

 

ORACLEASM_SCANEXCLUDE="sdb sdc"

 

這裡,系統管理員做了一些配置。ASMLib會排除掉完全匹配的磁碟/dev/sdb/dev/sdc.它不會忽略其他的SCSI磁碟。這樣,ASMLib在掃描的過程中就會忽略這2塊磁碟,僅僅會看到/dev/multipath的磁碟,同樣,Oracle會使用多路徑的磁碟。

 

 

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

相關文章