Skip to main content
Enterprise applications
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

使用 ASMLib/AFD 的 Oracle 資料庫( ASM 篩選器驅動程式)

貢獻者

使用 AFD 和 ASMLib 的 Linux 作業系統專屬組態主題

ASMLib 區塊大小

ASMLib 是選用的 ASM 管理程式庫和相關公用程式。其主要值是將 LUN 或 NFS 型檔案標記為具有人類可讀標籤的 ASM 資源。

ASMLib 的最新版本會偵測稱為每個實體區塊指數( LBPPBE )的邏輯區塊的 LUN 參數。ONTAP SCSI 目標直到最近才回報此值。現在會傳回一個值、表示偏好 4KB 區塊大小。這不是區塊大小的定義、但它是使用 LBPPBE 的任何應用程式的提示、可能會更有效率地處理特定大小的 I/O 。不過、 ASMLib 會將 LBPPBE 解譯為區塊大小、並在建立 ASM 裝置時持續標記 ASM 標頭。

此程序可能會以多種方式造成升級和移轉問題、全部是因為無法在同一個 ASM 磁碟群組中混合使用不同區塊大小的 ASMLib 裝置。

例如、較舊的陣列通常回報 LBPPBE 值為 0 、或根本沒有回報此值。ASMLib 會將此解譯為 512 位元組的區塊大小。較新的陣列會被解譯為具有 4KB 區塊大小。無法在同一個 ASM 磁碟群組中混合使用 512 位元組和 4KB 的裝置。這樣做會阻止用戶使用兩個陣列中的 LUN 或使用 ASM 作爲遷移工具來增加 ASM 磁盤組的大小。在其他情況下、 RMAN 可能不允許在具有 512 位元組區塊大小的 ASM 磁碟群組和具有 4KB 區塊大小的 ASM 磁碟群組之間複製檔案。

首選的解決方案是修補 ASMLib 。Oracle 錯誤 ID 為 13999609 、而 Oracle 錯誤 ID 則存在於 oracleas-support-2.1.8-1 及更高版本中。此修補程式可讓使用者設定參數 ORACLEASM_USE_LOGICAL_BLOCK_SIZEtrue 在中 /etc/sysconfig/oracleasm 組態檔。這樣做會阻止 ASMLib 使用 LBPPBE 參數、這表示新陣列上的 LUN 現在會被辨識為 512 位元組區塊裝置。

註 此選項不會變更先前由 ASMLib 戳記的 LUN 區塊大小。例如、如果具有 512 位元組區塊的 ASM 磁碟群組必須移轉至回報 4KB 區塊的新儲存系統、則選項 ORACLEASM_USE_LOGICAL_BLOCK_SIZE 必須先設定、才能使用 ASMLib 標記新的 LUN 。 如果裝置已被 oracleasm 戳記、則必須先重新格式化、然後再重新設定新的區塊大小。首先、請使用取消設定裝置 oracleasm deletedisk、然後使用清除裝置的前 1GB dd if=/dev/zero of=/dev/mapper/device bs=1048576 count=1024。最後、如果裝置先前已分割、請使用 kpartx 命令移除過時的分割區、或只是重新開機作業系統。

如果無法修補 ASMLib 、可以從組態中移除 ASMLib 。這項變更會造成中斷、需要在 ASM 磁碟上加蓋戳記、並確定 asm_diskstring 參數設定正確。不過、這項變更並不需要移轉資料。

ASM Filter Drive ( AFD )區塊大小

AFD 是選用的 ASM 管理程式庫、正在取代 ASMLib 。從儲存角度來看、它與 ASMLib 非常類似、但它還包含其他功能、例如能夠封鎖非 Oracle I/O 、以降低使用者或應用程式錯誤可能毀損資料的機會。

裝置區塊大小

如同 ASMLib 、 AFD 也會讀取 LUN 參數每個實體區塊指數( LBPPBE )的邏輯區塊、並依預設使用實體區塊大小、而非邏輯區塊大小。

如果將 AFD 新增至現有組態、而 ASM 裝置已格式化為 512 位元組區塊裝置、則可能會造成問題。AFD 驅動程式會將 LUN 辨識為 4K 裝置、而 ASM 標籤與實體裝置之間的不符將會妨礙存取。同樣地、移轉也會受到影響、因為無法在同一個 ASM 磁碟群組中混合使用 512 位元組和 4KB 的裝置。這樣做會阻止用戶使用兩個陣列中的 LUN 或使用 ASM 作爲遷移工具來增加 ASM 磁盤組的大小。在其他情況下、 RMAN 可能不允許在具有 512 位元組區塊大小的 ASM 磁碟群組和具有 4KB 區塊大小的 ASM 磁碟群組之間複製檔案。

解決方案很簡單 - AFD 包含一個參數、可控制它是否使用邏輯區塊或實體區塊大小。這是影響系統上所有裝置的全域參數。若要強制 AFD 使用邏輯區塊大小、請設定 options oracleafd oracleafd_use_logical_block_size=1 在中 /etc/modprobe.d/oracleafd.conf 檔案:

多重路徑傳輸大小

最近的 Linux 核心變更會強制執行傳送至多重路徑裝置的 I/O 大小限制、而 AFD 則不遵守這些限制。然後會拒絕 I/O 、導致 LUN 路徑離線。結果是無法安裝 Oracle Grid 、設定 ASM 或建立資料庫。

解決方案是在 ONTAP LUN 的 multipath.conf 檔案中手動指定傳輸長度上限:

devices {
            device {
                vendor "NETAPP"
                product "LUN.*"
                max_sectors_kb 4096
        }
    }
警告 即使目前沒有問題、如果使用 AFD 來確保未來的 Linux 升級不會意外造成問題、也應設定此參數。