叢集 MD 提供了在叢集環境中使用 RAID1 的支援。每個節點都會存取叢集 MD 使用的磁碟或裝置。如果叢集 MD 的一部裝置失敗,則在執行時期可以由另一部裝置取代它,並且系統會對其進行重新同步以提供相同量的備援。叢集 MD 需要使用 Corosync 和分散式鎖定管理員 (DLM) 進行協調和通訊。
叢集 MD 裝置不會如同其他常規 MD 裝置一般在開機時自動啟動。需要使用資源代辦來啟動叢集裝置,以便確定 DLM 資源已啟動。
一個安裝了 Pacemaker 的執行中叢集。
DLM 的資源代辦 (請參閱程序 17.1 「設定 DLM 的基礎群組」瞭解如何設定 DLM)。
至少兩個共用磁碟裝置。您可以使用另外一部裝置做為備用裝置,該備用裝置會在裝置失敗時自動進行容錯移轉。
一個已安裝的套件 cluster-md-kmp-default。
請確認 DLM 資源在叢集的每個節點上都正常執行,並使用以下指令檢查資源狀態︰
root #
crm_resource
-r dlm -W
建立叢集 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=noneroot #
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
獲取 UUID 以及相關的 MD 路徑︰
root #
mdadm
--detail --scan
該 UUID 必須與超級區塊中儲存的 UUID 相符。如需 UUID 的詳細資料,請參閱 mdadm.conf
man 頁面。
開啟 /etc/mdadm.conf
並新增 MD 裝置名稱及與其關聯的裝置。使用上一步中獲得的 UUID︰
DEVICE /dev/sda /dev/sdb ARRAY /dev/md0 UUID=1d70f103:49740ef1:af2afce5:fcf6a489
開啟 Csync2 的組態檔案 /etc/csync2/csync2.cfg
,並新增 /etc/mdadm.conf
︰
group ha_group { # ... list of files pruned ... include /etc/mdadm.conf }
依如下所示設定 CRM 資源︰
建立 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
將 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
使用 show
檢閱所做的變更。
如果所有組態正確無誤,請使用 commit
提交您的變更。
若要將某部裝置新增到現有的使用中叢集 MD 裝置,請先使用指令 cat /proc/mdstat
確認該裝置在每個節點上均「可見」。如果裝置不可見,則指令將會失敗。
在一個叢集節點上使用以下指令︰
root #
mdadm
--manage /dev/md0 --add /dev/sdc
新增的新裝置的行為取決於叢集 MD 裝置的狀態︰
如果只有一個鏡像裝置處於使用中狀態,則新裝置將會成為鏡像裝置中的第二部裝置,並且會啟動復原程序。
如果叢集 MD 裝置的兩部裝置都處於使用中狀態,則新增的裝置將會成為備用裝置。
故障常常是短暫發生的,並且僅限於一個節點。如果在 I/O 操作期間有任何節點發生了故障,則會針對整個叢集將該裝置標示為失敗。
例如,其中一個節點發生纜線故障,可能就會出現這種情況。修正此問題後,您可以重新新增該裝置。與新增新裝置會同步整部裝置不同,這樣只會同步過時的部件。
若要重新新增裝置,請在一個叢集節點上執行以下指令︰
root #
mdadm
--manage /dev/md0 --re-add /dev/sdb
在執行時期移除裝置以將其取代之前,請執行以下操作︰
檢查 /proc/mdstat
以確定裝置處於失敗狀態。尋找裝置前面有無 (F)
。
在一個叢集節點上執行以下指令,以使裝置失敗︰
root #
mdadm
--manage /dev/md0 --fail /dev/sda
在一個叢集節點上使用以下指令移除失敗的裝置︰
root #
mdadm
--manage /dev/md0 --remove /dev/sda