系統透過不同的工具來協調叢集化 LVM2︰
透過鎖定機制協調 cLVM 的磁碟存取並調解中繼資料存取。
能讓一個檔案系統靈活分散在多個磁碟上。LVM2 提供虛擬的磁碟空間池。
協調對 LVM2 中繼資料的存取,讓每個節點瞭解相關的變更。cLVM 不會協調對共享資料本身的存取;若要讓其對此進行協調,必須在受 cLVM 管理的儲存上設定 OCFS2 或其他叢集感知應用程式。
某些情況下可以使用 cLVM 建立含以下幾層的 RAID 1 裝置︰
LVM2: 如果您想要增加或減小檔案系統的大小,新增更多實體儲存或是建立檔案系統的快照,可以使用這項極為靈活的解決方案。有關此方法的介紹,請參閱第 21.2.3 節 「案例:SAN 上 cLVM 與 iSCSI 配合使用」。
DRBD: 此解決方案僅提供 RAID 0 (分割) 和 RAID 1 (鏡像)。有關最後一個方法的介紹,請參閱第 21.2.4 節 「案例︰cLVM 與 DRBD 搭配」。
請確定您已符合以下先決條件︰
有共享儲存裝置可用,該儲存裝置可以透過光纖通道、FCoE、SCSI、iSCSI SAN 或 DRBD* 提供。
如果是 DRBD,兩個節點都必須是主要節點 (如下文程序中所述)。
檢查 LVM2 的鎖定類型是否能感知叢集。/etc/lvm/lvm.conf
中的關鍵字 locking_type
必須包含值 3
(預設值為 1
)。需要時,將組態複製到所有節點。
檢查是否已停用 lvmetad
精靈,因為它不能與 cLVM 配合使用。在 /etc/lvm/lvm.conf
中,關鍵字 use_lvmetad
必須設定為 0
(預設值為 1
)。需要時,將組態複製到所有節點。
準備要使用 cLVM 的叢集的工作包括下列基本步驟︰
啟動外圍程序並以 root
身分登入。
檢查叢集資源的目前組態︰
root #
crm configure show
如果您已設定 DLM 資源 (以及對應的基礎群組和基礎複製品),請繼續程序 21.2 「設定 DLM、CLVM 和 STONITH」。
若非如此,請依照程序 17.1 「設定 DLM 的基礎群組」 所述設定 DLM 資源以及對應的基礎群組和基礎複製品。
使用 exit
離開 crm 即時組態。
若要追蹤叢集中的鏡像複製記錄資訊,可使用 cmirrord
精靈。如果此精靈未在執行中,則無法進行叢集鏡像複製。
我們假設 /dev/sda
和 /dev/sdb
都是諸如 DRBD、iSCSI 等的共享儲存裝置。如有必要,請使用您自己的裝置名稱取代它們。請執行下列步驟︰
依《安裝與設定快速入門》所述,建立至少包含兩個節點的叢集。
對叢集進行設定,以執行 dlm
、clvmd
與 STONITH︰
root #
crm
configurecrm(live)configure#
primitive
clvmd ocf:heartbeat:clvm \ params with_cmirrord=1 \ op stop interval=0 timeout=100 \ op start interval=0 timeout=90 \ op monitor interval=20 timeout=20crm(live)configure#
primitive
dlm ocf:pacemaker:controld \ op start timeout="90" \ op stop timeout="100" \ op monitor interval="60" timeout="60"crm(live)configure#
primitive
sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30crm(live)configure#
group
g-storage dlm clvmdcrm(live)configure#
clone
cl-storage g-storage \ meta interleave="true" ordered=true
使用 exit
離開 crmsh 並確定您的變更。
使用程序 21.3 繼續設定磁碟。
建立叢集化磁碟區群組 (VG)︰
root #
pvcreate
/dev/sda /dev/sdbroot #
vgcreate
-cy vg1 /dev/sda /dev/sdb
在您的叢集中建立鏡像複製記錄邏輯磁碟區 (LV)︰
root #
lvcreate
-n lv1 -m1 -l10%VG vg1 --mirrorlog mirrored
使用 lvs
顯示進度。如果百分比數字已達到 100%,則表示已成功同步化鏡像複製磁碟。
若要測試叢集化磁碟區 /dev/vg1/lv1
,請執行下列步驟︰
讀取或寫入到 /dev/vg1/lv1
。
使用 lvchange
-an
停用 LV。
使用 lvchange
-ay
啟動 LV。
使用 lvconvert
將鏡像複製記錄轉換成磁碟記錄。
在另一個叢集 VG 中建立鏡像複製記錄 LV。這個磁碟區群組與前面使用的磁碟區群組不同。
目前的 cLVM 針對每個鏡像端只能處理一個實體磁碟區 (PV)。如果一個鏡像實際上由若干個需要串連或等量分割的 PV 組成,lvcreate
不會知曉這種情況。因此,lvcreate
與 cmirrord
中繼資料需要知曉如何將 PV「分組」到一端,以高效支援 RAID10。
為支援對 RAID10 使用 cmirrord
,請執行下面的程序 (假設 /dev/sda
、/dev/sdb
、/dev/sdc
和 /dev/sdd
是共享儲存裝置)︰
建立磁碟區群組 (VG)︰
root #
pvcreate
/dev/sda /dev/sdb /dev/sdc /dev/sdd Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created Physical volume "/dev/sdc" successfully created Physical volume "/dev/sdd" successfully createdroot #
vgcreate
vgtest /dev/sda /dev/sdb /dev/sdc /dev/sdd Clustered volume group "vgtest" successfully created
開啟檔案 /etc/lvm/lvm.conf
,並轉至 allocation
區段。設定下行並儲存該檔案︰
mirror_logs_require_separate_pvs = 1
將您的標記新增至 PV︰
root #
pvchange
--addtag @a /dev/sda /dev/sdbroot #
pvchange
--addtag @b /dev/sdc /dev/sdd
標記是指定給儲存物件中繼資料的無序關鍵字或詞彙。使用標記可以為 LVM2 儲存物件的中繼資料附加無序的標記清單,以實用的方式對此類物件的集合進行分類。
列出您的標記︰
root #
pvs
-o pv_name,vg_name,pv_tags /dev/sd{a,b,c,d}
產生的輸出如下︰
PV VG PV Tags /dev/sda vgtest a /dev/sdb vgtest a /dev/sdc vgtest b /dev/sdd vgtest b
如需關於 LVM2 的更多資訊,請參閱《SUSE Linux Enterprise Server 12 SP5 儲存管理指南》:https://documentation.suse.com/sles-12/html/SLES-all/cha-lvm.html。
以下案例將使用兩個 SAN Box,它們會將 iSCSI 目標輸出至多個用戶端。圖形 21.1 「cLVM 搭配 iSCSI 的設定」 中說明了一般的情況。
以下程序將損毀您磁碟上的資料!
開始請只設定一個 SAN Box。每個 SAN Box 需要輸出自己的 iSCSI 目標。請執行下列步驟︰
執行 YaST,然後按一下
› ,啟動 iSCSI 伺服器模組。如果您希望電腦每次開機時啟動 iSCSI 目標,請選擇
,否則請選擇 。如果有防火牆在執行,則啟用
。切換至
索引標籤。如果需要驗證,請啟用內送驗證、外送驗證或兩者均啟用。在本例中,我們選取的是 。新增新的 iSCSI 目標︰
切換至
索引標籤。按一下
。輸入目標名稱。名稱需要採用以下格式︰
iqn.DATE.DOMAIN
如需該格式的詳細資訊,請參閱第 3.2.6.3.1 節「Type "iqn." (iSCSI Qualified Name)」(「iqn.」(iSCSI 合格名稱) 類型),網址為︰http://www.ietf.org/rfc/rfc3720.txt。
如果您想使用更具描述性的名稱,可以變更名稱,只要確保每個目標的識別碼都是唯一的即可。
按一下
。在
中輸入裝置名稱,並使用 。按兩次
。出現警告對話方塊時,按一下
加以確認。
開啟組態檔案 /etc/iscsi/iscsid.conf
,並將參數 node.startup
變更為 automatic
。
接著,按如下所示設定 iSCSI 啟動器︰
執行 YaST,然後按一下
› 。如果您要在電腦開機時啟動 iSCSI 啟動器,請選擇
,否則請設定 。切換至
索引標籤,然後按一下 按鈕。新增 iSCSI 目標的 IP 位址和連接埠 (請參閱程序 21.4 「設定 iSCSI 目標 (SAN)」)。一般不用變更連接埠,使用其預設值即可。
如果使用驗證,請插入內送及外送的使用者名稱和密碼,否則請啟用
。選取
。清單中會顯示找到的連線。按一下
繼續。
開啟外圍程序,以 root
身分登入。
測試 iSCSI 啟動器是否已正常啟動︰
root #
iscsiadm
-m discovery -t st -p 192.168.3.100 192.168.3.100:3260,1 iqn.2010-03.de.jupiter:san1
建立工作階段︰
root #
iscsiadm
-m node -l -p 192.168.3.100 -T iqn.2010-03.de.jupiter:san1 Logging in to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260] Login to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260]: successful
使用 lsscsi
查看裝置名稱︰
... [4:0:0:2] disk IET ... 0 /dev/sdd [5:0:0:1] disk IET ... 0 /dev/sde
尋找第三欄中含有 IET
的項目。在本例中,裝置分別是 /dev/sdd
和 /dev/sde
。
在其中一個您於 程序 21.5 「設定 iSCSI 啟動器」 中執行了 iSCSI 啟動器的節點上開啟 root
外圍程序。
對磁碟 /dev/sdd
和 /dev/sde
使用指令 pvcreate
,為 LVM2 準備好實體磁碟區︰
root #
pvcreate
/dev/sddroot #
pvcreate
/dev/sde
在兩個磁碟上建立叢集感知磁碟區群組︰
root #
vgcreate
--clustered y clustervg /dev/sdd /dev/sde
根據需要建立邏輯磁碟區︰
root #
lvcreate
-m1 --name clusterlv --size 500M clustervg
使用 pvdisplay
檢查實體磁碟區︰
--- Physical volume --- PV Name /dev/sdd VG Name clustervg PV Size 509,88 MB / not usable 1,88 MB Allocatable yes PE Size (KByte) 4096 Total PE 127 Free PE 127 Allocated PE 0 PV UUID 52okH4-nv3z-2AUL-GhAN-8DAZ-GMtU-Xrn9Kh --- Physical volume --- PV Name /dev/sde VG Name clustervg PV Size 509,84 MB / not usable 1,84 MB Allocatable yes PE Size (KByte) 4096 Total PE 127 Free PE 127 Allocated PE 0 PV UUID Ouj3Xm-AI58-lxB1-mWm2-xn51-agM2-0UuHFC
使用 vgdisplay
檢查磁碟區群組︰
--- Volume group --- VG Name clustervg System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable Clustered yes Shared no MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 1016,00 MB PE Size 4,00 MB Total PE 254 Alloc PE / Size 0 / 0 Free PE / Size 254 / 1016,00 MB VG UUID UCyWw8-2jqV-enuT-KH4d-NXQI-JhH3-J24anD
建立磁碟區並啟動資源之後,會出現一個名為 /dev/dm-*
的新裝置。建議您使用 LVM2 資源上的叢集檔案系統,例如 OCFS。如需詳細資訊,請參閱 第 18 章 「OCFS2」。
如果您的資料中心分佈在城市、國家甚至大陸的不同位置,可以參照以下案例。
建立主要/次要 DRBD 資源︰
首先,如程序 20.1 「手動設定 DRBD」 中所述將一部 DRBD 裝置設定成主要或次要裝置。確定兩個節點上的磁碟狀態均為最新
。使用 drbdadm status
確認是否如此。
在組態檔案 (通常類似於 /etc/drbd.d/r0.res
) 中新增以下選項︰
resource r0 { net { allow-two-primaries; } ... }
將變更後的組態檔案複製到另一個節點,例如︰
root #
scp
/etc/drbd.d/r0.res venus:/etc/drbd.d/
在兩個節點上執行以下指令︰
root #
drbdadm
disconnect r0root #
drbdadm
connect r0root #
drbdadm
primary r0
檢查節點的狀態︰
root #
drbdadm
status r0
將 clvmd 資源做為複製品包括在 Pacemaker 組態中,並使之依賴於 DLM 複製品資源。如需詳細指示,請參閱程序 21.1 「建立 DLM 資源」。繼續之前,請先確定已在叢集中成功啟動這些資源。您可以使用 crm status
或 Web 介面檢查執行中的服務。
使用 pvcreate
指令為 LVM2 備妥實體磁碟區。例如,在 /dev/drbd_r0
裝置上使用如下指令︰
root #
pvcreate
/dev/drbd_r0
建立叢集感知磁碟區群組︰
root #
vgcreate
--clustered y myclusterfs /dev/drbd_r0
根據需要建立邏輯磁碟區。您有時可能需要變更邏輯磁碟區的大小。例如,使用以下指令建立一個 4 GB 的邏輯磁碟區︰
root #
lvcreate
-m1 --name testlv -L 4G myclusterfs
現在,VG 中的邏輯磁碟區便可做為掛接的檔案系統或原始用途使用。請確保使用它們的服務具有正確的相依性,這樣才能在啟動 VG 後對它們進行並存和排序處理。
完成這些組態設定步驟後,便能像在任何獨立工作站上一般進行 LVM2 組態設定。
如果看似有多部裝置共享同一個實體磁碟區簽名 (多重路徑裝置或 DRBD 就有可能發生這種情況),建議明確設定 LVM2 掃描 PV 的裝置。
例如,如果 vgcreate
指令使用實體裝置而非使用鏡像複製區塊裝置,將使 DRBD 感到困惑,從而導致 DRBD 處於電腦分裂狀態。
若要停用 LVM2 的單一裝置,請執行以下操作︰
編輯 /etc/lvm/lvm.conf
檔案並搜尋以 filter
開頭的行。
該處的模式將被視為正規表示式進行處理。前置 「a」 表示接受要掃描的裝置模式,前置 「r」 表示拒絕依照該裝置模式的裝置。
若要移除名為 /dev/sdb1
的裝置,請將下列表示式新增至過濾器規則︰
"r|^/dev/sdb1$|"
完整的過濾器行如下所示︰
filter = [ "r|^/dev/sdb1$|", "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "a/.*/" ]
接受 DRBD 和 MPIO 裝置但拒絕所有其他裝置的過濾器行如下所示︰
filter = [ "a|/dev/drbd.*|", "a|/dev/.*/by-id/dm-uuid-mpath-.*|", "r/.*/" ]
寫入組態檔案並將其複製到所有叢集節點。
完整資訊可參閱 Pacemaker 郵寄清單 (網址為 http://www.clusterlabs.org/wiki/Help:Contents)。
官方 cLVM FAQ 可在 http://sources.redhat.com/cluster/wiki/FAQ/CLVM 中找到。