
管理叢集上的共享儲存時,儲存子系統發生的變更必須通知到每個節點。廣泛用於管理本地儲存的 Linux Volume Manager 2 (LVM2) 已經過延伸,現可支援對整個叢集中磁碟區群組的透明管理。可使用與本地儲存相同的指令來管理叢集化磁碟區群組。
叢集化 LVM 可與其他工具搭配使用︰
協調 cLVM 的磁碟存取。
能讓一個檔案系統靈活分散在多個磁碟上。LVM 可提供虛擬磁碟儲存區。
協調對 LVM2 中繼資料的存取,讓每個節點瞭解相關的變更。cLVM 不會協調對共享資料本身的存取;若要讓其對此進行協調,必須在受 cLVM 管理的儲存上設定 OCFS2 或其他叢集感知應用程式。
某些情況下可以使用 cLVM 建立含以下幾層的 RAID 1 裝置︰
LVM. 如果您想要增加或減小檔案系統的大小,新增更多實體儲存或是建立檔案系統的快照,可以使用這項極為靈活的解決方案。有關此方法的介紹,請參閱第 16.2.3 節「案例︰SAN 上 cLVM 與 iSCSI 搭配使用」。
DRBD. 此解決方案僅提供 RAID 0 (分割) 和 RAID 1 (鏡像)。有關最後一個方法的介紹,請參閱第 16.2.4 節「案例︰cLVM 與 DRBD 搭配」。
雖然 MD 裝置 (Linux 軟體 RAID 或 mdadm) 提供所有 RAID 層級,但它尚不支援叢集。因此,以上清單並未包含此類裝置。
請確定您已滿足以下必要條件︰
有共享儲存裝置可用,該儲存裝置可以透過光纖通道、FCoE、SCSI、iSCSI SAN 或 DRBD* 提供。
如果是 DRBD,兩個節點都必須是主要節點 (如下文程序中所述)。
檢查 LVM2 的鎖定類型是否能感知叢集。/etc/lvm/lvm.conf 中關鍵字 locking_type 的值必須包含 3 (應為預設值)。需要時,將組態複製到所有節點。
若要追蹤叢集中的鏡像複製記錄資訊,可使用 cmirrord 精靈。如果此精靈未在執行中,則無法進行叢集鏡像複製。
假設 /dev/sda 與 /dev/sdb 是共享儲存裝置。如有必要,請使用您自己的裝置名稱取代它們。請執行下列步驟:
建立一個至少包含兩個節點的叢集。
對叢集進行設定,以執行 dlm、clvmd 與 STONITH:
root #crmconfigurecrm(live)configure#primitiveclvmd ocf:lvm2:clvmd \ op stop interval="0" timeout="100" \ op start interval="0" timeout="90" \ op monitor interval="20" timeout="20"crm(live)configure#primitivedlm ocf:pacemaker:controld \ op start interval="0" timeout="90" \ op stop interval="0" timeout="100" \ op monitor interval="60" timeout="60"crm(live)configure#primitivesbd_stonith stonith:external/sbdcrm(live)configure#groupbase-group dlm clvmdcrm(live)configure#clonebase-clone base-group \ meta interleave="true"
使用 exit 離開 crmsh 並確定您的變更。
建立叢集化磁碟區群組 (VG):
root #pvcreate/dev/sda /dev/sdbroot #vgcreate-cy vg /dev/sda /dev/sdb
在您的叢集中建立鏡像複製記錄邏輯磁碟區 (LV):
root #lvcreate-nlv -m1 -l10%VG vg --mirrorlog mirrored
使用 lvs 顯示進度。如果百分比數字已達到 100%,則表示已成功同步化鏡像複製磁碟。
若要測試叢集化磁碟區 /dev/vg/lv,可執行下列步驟:
針對 /dev/vg/lv 執行讀取或寫入操作。
使用 lvchange -an 停用 LV。
使用 lvchange -ay 啟動 LV。
使用 lvconvert 將鏡像複製記錄轉換成磁碟記錄。
在另一個叢集 VG 中建立鏡像複製記錄 LV。這個磁碟區群組與前面使用的磁碟區群組不同。
目前的 cLVM 針對每個鏡像端只能處理一個實體磁碟區 (PV)。如果一個鏡像實際上由若干個需要串連或等量分割的 PV 組成,lvcreate 不會知曉這種情況。因此,lvcreate 與 cmirrord 中繼資料需要知曉如何將 PV「分組」到一端,以高效支援 RAID10。
為了讓 cmirrord 支援 RAID10,請使用以下程序 (假設 /dev/sda 與 /dev/sdb 是共享儲存裝置):
建立磁碟區群組 (VG):
root #pvcreate/dev/sda /dev/sdbroot #vgcreatevg /dev/sda /dev/sdb
開啟檔案 /etc/lvm/lvm.conf,並轉至 allocation 區段。設定下行並儲存該檔案:
mirror_legs_require_separate_pvs = 1
將您的標記新增至 PV:
root #pvchange--addtag @a /dev/sdaroot #pvchange--addtag @b /dev/sdb
標記是指定給儲存物件中繼資料的無序關鍵字或詞彙。透過使用標記,您可以為 LVM 儲存物件的中繼資料附加無序的標記清單,用實用的方式對物件集合進行分類。
列出您的標記:
root #pvs-o pv_name,vg_name,pv_tags /dev/sd{a,b}
產生的輸出如下:
PV VG PV Tags /dev/sda vgtest a /dev/sdb vgtest b
如需關於 LVM 的更多資訊,請參閱《SUSE Linux Enterprise Server 12 儲存管理指南》中的「LVM 組態」一章,此文件位於 http://www.suse.com/documentation/。
準備要使用 cLVM 的叢集的工作包括下列基本步驟:
cLVM 與 OCFS2 都需要在叢集的所有節點上執行的 DLM 資源,因此該資源通常會設定為複製品。如果您的環境中包含 OCFS2 與 cLVM,只需為 OCFS2 與 cLVM 設定一個 DLM 資源就足夠了。
啟動外圍程序並以 root 身分登入。
執行 crm 。
configure
使用 show 檢查叢集資源的目前組態。
如果您已設定 DLM 資源 (以及對應的基礎群組和基礎複製品),請繼續過程 16.2, “建立 LVM 及 cLVM 資源”。
若非如此,請依照過程 13.2, “設定 DLM 資源” 所述設定 DLM 資源以及對應的基礎群組和基礎複製品。
使用 exit 離開 crm 即時組態。
啟動外圍程序並以 root 身分登入。
執行 crm 。
configure
按如下方式設定 cLVM 資源:
crm(live)configure#primitiveclvm ocf:lvm2:clvmd \ params daemon_timeout="30"
按如下方式為磁碟區群組設定 LVM 資源:
crm(live)configure#primitivevg1 ocf:heartbeat:LVM \ params volgrpname="cluster-vg" \ op monitor interval="60" timeout="60"
如果您希望磁碟區群組在一個節點上以獨佔模式啟用,請依照如下方式設定 LVM 資源並省略步驟 6:
crm(live)configure#primitivevg1 ocf:heartbeat:LVM \ params volgrpname="cluster-vg" exclusive="yes" \ op monitor interval="60" timeout="60"
如此,cLVM 將保護 VG 內的所有邏輯磁碟區,避免它們在多個節點上啟用,這是保護非叢集化應用程式的另一種方法。
為了確保在整個叢集內啟用 cLVM 與 LVM 資源,請將這兩種基本資源新增至您在過程 13.2, “設定 DLM 資源” 中建立的基礎群組︰
輸入
crm(live)configure#editbase-group
在開啟的 vi 編輯器中,對群組做如下修改並儲存所做的變更:
crm(live)configure#groupbase-group dlm clvm vg1 ocfs2-1
如果您的環境不包含 OCFS2,請在基礎群組中省略 ocfs2-1 基本資源。
使用 show 檢閱所做的變更。
如果所有設定都正確,請使用 commit 提交變更,然後使用 exit 離開 crm 即時組態。
以下案例將使用兩個 SAN Box,它們會將 iSCSI 目標輸出至多個用戶端。圖形 16.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/iscsi.conf,並將參數 node.startup 變更為 automatic。
接著,按如下所示設定 iSCSI 啟動器︰
執行 YaST,然後按一下 › 。
如果您要在電腦開機時啟動 iSCSI 啟動器,請選擇,否則請設定。
切換至索引標籤,然後按一下按鈕。
新增 iSCSI 目標的 IP 位址和連接埠 (請參閱過程 16.3, “設定 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 Logging in to [iface: default, target: iqn.2010-03.de.jupiter:san2, portal: 192.168.3.100,3260] Logging in to [iface: default, target: iqn.2010-03.de.venus:san1, portal: 192.168.3.101,3260] Login to [iface: default, target: iqn.2010-03.de.jupiter:san2, portal: 192.168.3.100,3260]: successful Login to [iface: default, target: iqn.2010-03.de.venus:san1, portal: 192.168.3.101,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。
在其中一個您於 過程 16.4, “設定 iSCSI 啟動器” 中執行了 iSCSI 啟動器的節點上開啟 root 外圍程序。
對磁碟 /dev/sdd 和 /dev/sde 使用指令 pvcreate,為 LVM 準備好實體磁碟區︰
root #pvcreate/dev/sddroot #pvcreate/dev/sde
在兩個磁碟上建立叢集感知磁碟區群組︰
root #vgcreate--clustered y clustervg /dev/sdd /dev/sde
根據需要建立邏輯磁碟區︰
root #lvcreate--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-0 的新裝置。建議您使用 LVM 資源上的叢集檔案系統,例如 OCFS。如需詳細資訊,請參閱第 13 章「OCFS2」。
如果您的資料中心分佈在城市、國家甚至大陸的不同位置,可以參照以下案例。
建立主要/次要 DRBD 資源︰
首先,如過程 15.1, “手動設定 DRBD” 中所述將一部 DRBD 裝置設定成主要或次要裝置。確定兩個節點上的磁碟狀態均為最新。可以使用 cat /proc/drbd 或 systemctl status drbd.service 來檢查。
在組態檔案 (通常類似於 /etc/drbd.d/r0.res) 中新增以下選項︰
resource r0 {
startup {
become-primary-on both;
}
net {
allow-two-primaries;
}
...
}將變更後的組態檔案複製到另一個節點,例如︰
root #scp/etc/drbd.d/r0.res venus:/etc/drbd.d/
在兩個節點上執行以下指令︰
root #drbdadmdisconnect r0root #drbdadmconnect r0root #drbdadmprimary r0
檢查節點的狀態︰
root #cat/proc/drbd ... 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----
將 clvmd 資源做為複製品包括在 Pacemaker 組態中,並使之依賴於 DLM 複製品資源。如需詳細指示,請參閱過程 16.1, “建立 DLM 資源”。繼續之前,請先確定已在叢集中成功啟動這些資源。您可以使用 crm_mon 或 Web 介面檢查執行中的服務。
使用 pvcreate 指令為 LVM 備妥實體磁碟區。例如,在 /dev/drbd_r0 裝置上使用如下指令︰
root #pvcreate/dev/drbd_r0
建立叢集感知磁碟區群組︰
root #vgcreate--clustered y myclusterfs /dev/drbd_r0
根據需要建立邏輯磁碟區。您有時可能需要變更邏輯磁碟區的大小。例如,使用以下指令建立一個 4 GB 的邏輯磁碟區:
root #lvcreate--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 中找到。