Show Table of Contents
4.4.3. 建立鏡像卷冊
注意
由 RHEL 6.3 發行版起,LVM 支援了 RAID4/5/6 以及新的鏡像實作。欲取得新實作上的相關資訊,請參閱 節 4.4.13, “RAID 邏輯卷冊”。
注意
在叢集中建立鏡像 LVM 邏輯卷冊,需使用與在單獨節點上建立鏡像 LVM 邏輯卷冊時的相同指令與程序。然而,若要在叢集中建立鏡像 LVM 卷冊,叢集與叢集鏡像基礎結構必須要運作,叢集必須要 quorate,並且
lvm.conf 檔案中的鎖定類型必須要正確設置,以啟用叢集鎖定。欲取得在叢集中建立鏡像卷冊的範例,請參閱〈節 5.5, “在叢集中建立鏡像 LVM 邏輯卷冊”〉。
若嘗試快速地由叢集中的多重節點,執行多重 LVM 鏡像建立與轉換指令,可能會造成這些指令成為待處理狀態。這可能會造成某些請求的作業因逾時而失效。若要避免此問題,建議您由叢集中的一個節點上,執行叢集鏡像建立指令。
當您要建立鏡像卷冊時,您需要以
lvcreate 指令的 -m 引數來指定複製的資料數量。指定 -m1 的話會建立一個鏡像,並產生出兩份檔案系統:一個 linear 邏輯卷冊和一個副本。相同地,指定了 -m2 的話會建立兩個鏡像,並產生出三份檔案系統。
下列指令會建立一個單鏡像的鏡像邏輯卷冊。卷冊大小為 50 GB,名為
mirrorlv 並由卷冊群組 vg0 中所分割出:
# lvcreate -L 50G -m1 -n mirrorlv vg0
LVM 鏡像會將被複製入區域中的裝置切割,預設大小為 512KB。您可使用
lvcreate 指令的 -R 引數來將區域大小指定為 MB。您亦可藉由編輯 lvm.conf 檔案中的 mirror_region_size 設定來更改預設的區域大小。
注意
基於叢集基礎結構中的限制,大於 1.5TB 的叢集鏡像無法以預設大小 512KB 建立。需要大型鏡像的使用者,應增加預設的區域大小。若沒增加區域大小將會造成 LVM 建立程序停滯,並且同時可能也會使其它 LVM 指令停滯。
當為鏡像指定大小超過 1.5TB 的區域時,您可以 TB 作為您鏡像大小的單位,將其四捨五入為下個 2 的次方,並使用該數字作為
lvcreate 指令的 -R 引數。比方說,若您的鏡像大小為 1.5TB,您可指定 -R 2。若您的鏡像大小為 3TB,您可指定 -R 4。當鏡像大小為 5TB 時,您可指定 -R 8。
下列指令將建立一個區域大小為 2MB 的鏡像邏輯卷冊:
# lvcreate -m1 -L 2T -R 2 -n mirror vol_group
當鏡像被建立後,鏡像區域會被同步化。對於大型的鏡像元件來說,同步程序可能會花上許多時間。由 RHEL 6.3 發行版起,當您要建立一個無須再生的新鏡像時,您可指定
--nosync 引數來顯示來自於第一個裝置的初始同步化是非必要的。
LVM 含有一個小型的日誌,它會使用該日誌來記錄哪個區域和哪個鏡像已同步化。就預設值,該日誌會被存放在磁碟上,並且系統重新啟動後依然可保有一致性。您亦可透過
--mirrorlog core 引數來指定將此日誌存放在記憶體中;這可除去額外日誌裝置的需要,不過若要如此,每當系統重新啟動時,整個鏡像就必須被重新同步化。
下列指令將會由
bigvg 卷冊群組建立鏡像邏輯卷冊。該邏輯卷冊名為 ondiskmirvol 並且含有單鏡像。卷冊大小為 12 MB 並且將 mirror log 存放在記憶體中。
# lvcreate -L 12MB -m1 --mirrorlog core -n ondiskmirvol bigvg
Logical volume "ondiskmirvol" created
mirror log 會被建立在一個與任何 mirror leg 都會被建立於的裝置區隔開的裝置上。不過您亦可透過使用
vgcreate 指令的 --alloc anywhere 引數來在和其中一個 mirror leg 的裝置相同的裝置上建立一個 mirror log。這可能會使效能降低,不過它卻能讓您建立鏡像,儘管您只有兩個基本裝置。
下列指令會建立一個單鏡像的鏡像邏輯卷冊,它的 mirror log 位於與其中一個 mirror leg 的裝置相同的裝置上。在此範例中,
vg0 這個卷冊群組只包含著兩個裝置。這項指令所建立的鏡像卷冊的大小為 500 MB,名為 mirrorlv,並且是由卷冊群組 vg0 中所分割出的:
# lvcreate -L 500M -m1 -n mirrorlv -alloc anywhere vg0注意
對於叢集鏡像來說,mirror log 管理必須為目前最低叢集 ID 的叢集節點完全負責。因此,當持有叢集 mirror log 的裝置在叢集的子集上無法使用時,叢集鏡像可在不造成任何影響的情況下,繼續進行作業,只要最低 ID 的叢集節點保留了 mirror log 的存取權限即可。因為鏡像不會受到干擾,因此也不會進行自動修正(修復)的動作。然而,當最低 ID 的叢集節點失去了 mirror log 的存取權限時,自動動作將會啟動(無論由其它節點對於 log 的存取權限為何)。
若要建立本身被映射的 mirror log,您可指定
--mirrorlog mirrored 引數。下列指令將會由 bigvg 卷冊群組建立鏡像邏輯卷冊。該邏輯卷冊名為 twologvol 並且含有單鏡像。卷冊大小為 12 MB 並且將 mirror log 已被映射,而存放在各別的裝置上。
# lvcreate -L 12MB -m1 --mirrorlog mirrored -n twologvol bigvg
Logical volume "twologvol" created
和標準的 mirror log 相同,您可藉由使用
vgcreate 指令的 --alloc anywhere 引數,來在與鏡像 leg 相同的裝置上 建立冗餘鏡像 log。這可能會使效能降低,不過它卻能讓您建立冗餘鏡像 log,儘管您沒有足夠的基本裝置,以存放 log 於各別裝置上。
當鏡像被建立後,鏡像區域會被同步化。對於大型的鏡像元件來說,同步程序可能會花上許多時間。當您要建立一個無須再生的新鏡像時,您可指定
--nosync 引數來顯示來自於第一個裝置的初始同步化是非必要的。
您可指定使用來作為 mirror leg 和 log 的裝置為何,以及該使用裝置的哪個扇區。若要強制將日誌存放在某個特定磁碟上,請在磁碟上確切指定一個欲存放日誌的扇區。LVM 並不一定會遵照指令列中所列出的裝置順序。若有任何實體卷冊被列出的話,那將會是唯一被進行分配的空間。任何包含在清單中,並且已被分配的實體扇區皆會被忽略掉。
下列指令會建立一個含有單獨鏡像的鏡像邏輯卷冊。卷冊大小為 500 MB,名為
mirrorlv,並且是由卷冊群組 vg0 中所切割出來的。mirror 的第一個 leg 位於 /dev/sda1 裝置上,mirror 的第二個 leg 位於 /dev/sdb1 裝置上,mirror logs 則位於 /dev/sdc1 上。
# lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1 /dev/sdb1 /dev/sdc1
下列指令會建立一個含有單獨鏡像的鏡像邏輯卷冊。卷冊大小為 500 MB,名為
mirrorlv,並且是由卷冊群組 vg0 中所切割出來的。mirror的第一個 leg 位於 /dev/sda1 裝置的扇區 0 至 499 上,mirror的第二個 leg 位於 /dev/sdb1 裝置的扇區 0 至 499 上,並且 mirror log 由 /dev/sdc1 裝置的扇區 0 上起始。這些為 1MB 的扇區。若有任何指定的扇區早已被分配的話,它們將會被忽略掉。
# lvcreate -L 500M -m1 -n mirrorlv vg0 /dev/sda1:0-499 /dev/sdb1:0-499 /dev/sdc1:0注意
由 Red Hat Enterprise Linux 6.1 發行版起,您將可在單獨邏輯卷冊中結合 striping 與 mirroring。當建立邏輯卷冊並同時指定鏡像數量(
--mirrors X)和磁條數量(--stripes Y)時,會使鏡像裝置所構成的裝置成為等量。
4.4.3.1. 鏡像邏輯卷冊失效政策
您可透過在
lvm.conf 檔案的 activation 部份中使用 mirror_image_fault_policy 和 mirror_log_fault_policy 參數,以定義當裝置失效時,鏡像邏輯卷冊會如何運作。當這些參數被設為了 remove 時,系統將會嘗試移除出錯的裝置,並在無此裝置的情況下運作。當此參數被設為了 allocate 時,系統將會嘗試移除出錯的裝置,並嘗試在新裝置上配置空間,以取代失效的裝置;若無適當的裝置和空間可配置取代,此政策的運作方式是與 remove 政策相似的。
就預設值,
mirror_log_fault_policy 參數會被設為 allocate。為 log 使用此政策既快速,亦可在當機或重新開機時,記住同步狀態。若您將此政策設為了 remove,當 log 裝置失效時,鏡像便會轉換為使用一種記憶體中的日誌,並且在當機或重新開機時,該鏡像將不會記住它的同步狀態,並且整個鏡像將會被重新同步。
就預設值,
mirror_image_fault_policy 參數會被設為 remove。當使用此政策時,若鏡像映像失效,而只有一份完整鏡像的話,鏡像便會轉換為非映射的裝置。若要將鏡像裝置的政策設為 allocate,鏡像需要與裝置同步;這是一項緩慢的程序,不過它可保留裝置的鏡像特性。
注意
當 LVM 鏡像發生了裝置失效的問題時,將會進行一種兩階段的復原程序。第一階段包含移除失效的裝置。這可能會造成鏡像被縮減為線性裝置。第二階段,若
mirror_log_fault_policy 參數被設為了 allocate,它將會嘗試置換所有失效的裝置。然而請注意,若有其它可用裝置,您無法保證在第二階段中,先前由未失效的鏡像所使用的裝置會被選擇。
欲取得由失效的 LVM 鏡像進行手動式復原的相關資訊,請參閱〈節 6.3, “由 LVM 鏡像錯誤中復原”〉。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.