跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / 管理指南 / 儲存和資料複製 / 叢集多裝置 (叢集 MD)
適用範圍 SUSE Linux Enterprise High Availability Extension 15 SP3

23 叢集多裝置 (叢集 MD)

叢集多裝置 (叢集 MD) 是一項基於軟體的叢集 RAID 儲存解決方案。目前,叢集 MD 為叢集提供了 RAID1 鏡像的備援。在 SUSE Linux Enterprise High Availability Extension 15 SP3 中,隨附了 RAID10 做為技術預覽。如果您想嘗試 RAID10,請在相關的 mdadm 指令中使用 10 取代 mirror。本章介紹如何建立和使用叢集 MD。

23.1 概念綜覽

叢集 MD 提供了在叢集環境中使用 RAID1 的支援。每個節點都會存取叢集 MD 使用的磁碟或裝置。如果叢集 MD 的一部裝置失敗,則在執行時期可以由另一部裝置取代它,並且系統會對其進行重新同步以提供相同量的備援。叢集 MD 需要使用 Corosync 和分散式鎖定管理員 (DLM) 進行協調和通訊。

叢集 MD 裝置不會如同其他常規 MD 裝置一般在開機時自動啟動。需要使用資源代辦來啟動叢集裝置,以便確定 DLM 資源已啟動。

23.2 建立叢集化 MD RAID 裝置

要求
  • 一個安裝了 Pacemaker 的執行中叢集。

  • DLM 的資源代辦 (請參閱程序 18.1 「設定 DLM 的基礎群組」瞭解如何設定 DLM)。

  • 至少兩個共用磁碟裝置。您可以使用另外一部裝置做為備用裝置,該備用裝置會在裝置失敗時自動進行容錯移轉。

  • 一個已安裝的套件 cluster-md-kmp-default

  1. 請確認 DLM 資源在叢集的每個節點上都正常執行,並使用以下指令檢查資源狀態:

    root # crm_resource -r dlm -W
  2. 建立叢集 MD 裝置:

    • 如果您沒有現有的常規 RAID 裝置,請使用以下指令在執行 DLM 資源的節點上建立叢集 MD 裝置:

      root # mdadm --create /dev/md0 --bitmap=clustered \
         --metadata=1.2 --raid-devices=2 --level=mirror /dev/sda /dev/sdb

      由於叢集 MD 只能與 1.2 版的中繼資料配合使用,因此建議使用 --metadata 選項來指定版本。如需其他有用選項的資訊,請參閱 mdadm man 頁面。在 /proc/mdstat 中監控重新同步進度。

    • 如果您有現有的常規 RAID,請先清除現有點陣圖,然後再建立叢集點陣圖:

      root # mdadm --grow /dev/mdX --bitmap=none
      root # mdadm --grow /dev/mdX --bitmap=clustered
    • (選擇性) 若要建立帶有備用裝置 (用於自動容錯移轉) 的叢集 MD 裝置,請在一個叢集節點上執行以下指令:

      root # mdadm --create /dev/md0 --bitmap=clustered --raid-devices=2 \
            --level=mirror --spare-devices=1 /dev/sda /dev/sdb /dev/sdc --metadata=1.2
  3. 獲取 UUID 以及相關的 MD 路徑:

    root # mdadm --detail --scan

    該 UUID 必須與超級區塊中儲存的 UUID 相符。如需 UUID 的詳細資料,請參閱 mdadm.conf man 頁面。

  4. 開啟 /etc/mdadm.conf 並新增 MD 裝置名稱及與其關聯的裝置。使用上一步中獲得的 UUID:

    DEVICE /dev/sda /dev/sdb
    ARRAY /dev/md0 UUID=1d70f103:49740ef1:af2afce5:fcf6a489
  5. 開啟 Csync2 的組態檔案 /etc/csync2/csync2.cfg,並新增 /etc/mdadm.conf

    group ha_group
    {
       # ... list of files pruned ...
       include /etc/mdadm.conf
    }

23.3 設定資源代理程式

依如下所示設定 CRM 資源:

  1. 建立 Raid1 基本資源:

    crm(live)configure# primitive raider Raid1 \
      params raidconf="/etc/mdadm.conf" raiddev=/dev/md0 \
      force_clones=true \
      op monitor timeout=20s interval=10 \
      op start timeout=20s interval=0 \
      op stop timeout=20s interval=0
  2. raider 資源新增至您為 DLM 建立的儲存基礎群組:

    crm(live)configure# modgroup g-storage add raider

    add 子指令預設會附加新的群組成員。

    如果尚未複製 g-storage 群組,請執行該操作,以使其在所有節點上執行:

    crm(live)configure# clone cl-storage g-storage \
        meta interleave=true target-role=Started
  3. 使用 show 檢閱所做的變更。

  4. 如果所有組態正確無誤,請使用 commit 提交您的變更。

23.4 新增裝置

若要將某部裝置新增到現有的使用中叢集 MD 裝置,請先使用指令 cat /proc/mdstat 確認該裝置在每個節點上均可見。如果裝置不可見,則指令將會失敗。

在一個叢集節點上使用以下指令:

root # mdadm --manage /dev/md0 --add /dev/sdc

新增的新裝置的行為取決於叢集 MD 裝置的狀態:

  • 如果只有一個鏡像裝置處於使用中狀態,則新裝置將會成為鏡像裝置中的第二部裝置,並且會啟動復原程序。

  • 如果叢集 MD 裝置的兩部裝置都處於使用中狀態,則新增的裝置將會成為備用裝置。

23.5 重新新增暫時失敗的裝置

故障常常是短暫發生的,並且僅限於一個節點。如果在 I/O 操作期間有任何節點發生了故障,則會針對整個叢集將該裝置標示為失敗。

例如,其中一個節點發生纜線故障,可能就會出現這種情況。修正此問題後,您可以重新新增該裝置。與新增新裝置會同步整部裝置不同,這樣只會同步過時的部件。

若要重新新增裝置,請在一個叢集節點上執行以下指令:

root # mdadm --manage /dev/md0 --re-add /dev/sdb

23.6 移除裝置

在執行時期移除裝置以將其取代之前,請執行以下操作:

  1. 檢查 /proc/mdstat 以確定裝置處於失敗狀態。尋找裝置前面有無 (F)

  2. 在一個叢集節點上執行以下指令,以使裝置失敗:

    root # mdadm --manage /dev/md0 --fail /dev/sda
  3. 在一個叢集節點上使用以下指令移除失敗的裝置:

    root # mdadm --manage /dev/md0 --remove /dev/sda

23.7 在災難備援站點將叢集 MD 組合成一般 RAID

進行災難備援時,您可能會遇到下面的情況:災難備援站點的基礎架構中沒有 Pacemaker 叢集堆疊,但應用程式仍需存取現有叢集 MD 磁碟上或備份中的資料。

您可以將叢集 MD RAID 轉換為一般 RAID,方法是使用 --assemble 操作和 -U no-bitmap 選項相應地變更 RAID 磁碟的中繼資料。

下面的範例介紹了如何組合資料復原站點上的所有陣列:

while read i; do
   NAME=`echo $i | sed 's/.*name=//'|awk '{print $1}'|sed 's/.*://'`
   UUID=`echo $i | sed 's/.*UUID=//'|awk '{print $1}'`
   mdadm -AR "/dev/md/$NAME" -u $UUID -U no-bitmap
   echo "NAME =" $NAME ", UUID =" $UUID ", assembled."
done < <(mdadm -Es)