【儲存】AIX儲存管理基本概念和操作(LVM)
AIX儲存管理的基本概念包括(不限於)
1.磁碟或者硬碟
如何檢視系統已有的磁碟及相關屬性
2.物理卷(Physical Volume,PV)
物理卷和磁碟/硬碟有何關聯,列出系統已有PV及相關屬性,新增/刪除/維護PV屬性
3.卷組(Volume Group,VG)
VG的建立,刪除,擴容,維護和匯入匯出遷移,檢視相關屬性
4.物理分割槽(Physical Parttion,PP)
什麼是PP
5.邏輯分割槽(Logical Partition,LP)
什麼是LP
6.邏輯卷(Logical Volume,LV)
lv的建立,刪除,擴容,維護,檢視相關屬性
7.邏輯卷的條帶化和映象
如何設定邏輯卷的條帶化和映象
8.檔案系統(File System,FS)
AIX支援哪些FS,如何建立、刪除、掛載和自動掛載FS
上述問題在文章中有具體答案.
儲存管理概念
LVM 使用的基本概念包括物理卷、卷組、物理分割槽、邏輯卷、邏輯分割槽、檔案系統和原始裝置。下面介紹它們的一些特徵:
- 每個單獨的磁碟驅動器是一個命名的物理卷 (PV),並具有諸如 hdisk0 或 hdisk1 等名稱。
- 一個或多個 PV 可以構成一個卷組 (VG)。一個物理卷最多隻能屬於一個 VG。
- 不能將某個 PV 的一部分分配到一個 VG。一個物理卷整體地分配到某個卷組。
- 即使物理卷屬於不同的型別,例如 SCSI 或 SSA,也可以將它們分配到同一個卷組。
- 物理卷中的儲存空間劃分為物理分割槽 (PP)。在屬於同一個 VG 的所有磁碟上,物理分割槽的大小完全相同。
- 在每個卷組中,可以定義一個或多個邏輯卷 (LV)。從使用者的角度看,邏輯捲上儲存的資料似乎是連續的,但是可以分散在同一個卷組中的不同物理捲上。
- 邏輯卷由一個或多個邏輯分割槽 (LP) 組成。每個邏輯分割槽至少有一個對應的物理分割槽。一個邏輯分割槽和一個物理分割槽始終具有相同的大小。最多可以將資料的三個副本定位在不同的物理分割槽上。通常,為了實現冗餘,將儲存相同資料的物理分割槽定位在不同的物理磁碟上。
- 邏輯卷中的資料可以按有組織的方式進行儲存,並具有位於有目錄中的檔案的形式。這種結構化和層次性的組織形式稱為檔案系統。
- 還可以將邏輯卷中的資料視為一個連續的位元組串。此類邏輯卷稱為原始邏輯卷。使用該資料以正確地訪問和解釋它是應用程式的責任。
- 卷組描述符區域 (VGDA) 是磁碟上的一個區域,其中包含有關該物理卷所在的卷組的資訊。它還包括有關屬於該卷組的所有物理和邏輯卷的屬性和狀態的資訊。VGDA 中的資訊由 LVM 命令使用和更新。每個物理卷至少有一個 VGDA。屬於同一個卷組的所有磁碟的 VGDA 中的資訊必須完全相同。VGDA 的內部體系結構及其在磁碟上的位置取決於卷組的型別(原始、大容量或可擴充套件)。
- 卷組狀態區域 (VGSA) 用於描述卷組中所有物理卷中的所有物理分割槽的狀態。VGSA 指示某個物理分割槽是包含準確還是過時的資訊。VGSA 用於監視和維護資料副本同步。VGSA 本質上是一個點陣圖,其體系結構和在磁碟上的位置取決於卷組的型別。
- 邏輯卷控制塊 (LVCB) 包含有關邏輯卷的重要資訊,例如邏輯分割槽數量或磁碟分配策略。其體系結構和在磁碟上的位置取決於它所在的卷組的型別。對於標準卷組,LVCB 駐留在 LV 中的第一個使用者資料塊上。對於大容量卷組,磁碟上的 VGDA 中存在額外的 LVCB 資訊。對於可擴充套件卷組,所有的相關邏輯卷控制資訊都作為 LVCB 資訊區域和 LV 入口區域的一部分保留在 VGDA 中。
注意:硬碟驅動器的佈局是由 /usr/include/sys/hd_psn.h 標頭檔案定義的。LVM 記錄從磁碟上的第 7 個扇區開始。所有 LVM 記錄結構都是在 /usr/include/lvmrec.h 標頭檔案中定義的。
邏輯卷儲存的限制
AIX 5L Version 5.3 的 LVM 層提供了更高階別的磁碟管理靈活性。存在一些必須注意的限制,如表 1 所示。
表 1
VG 型別 | 最大 PV 數量 | 最大 LV 數量 | 每個 VG 的最大 PP 數量 | 最大 PP 大小 |
---|---|---|---|---|
常規 VG | 32 | 256 | 32512 (1016*32) | 1 GB |
大容量 VG | 128 | 512 | 130048 (1016*128) | 1 GB |
可擴充套件 VG | 1024 | 4096 | 2097152 | 128 GB |
AIX 5L Version 5.3 的 LVM 限制
物理卷
在 最初將某個磁碟新增到系統時,系統將其視為一個簡單裝置。此時還不可以訪問該磁碟以執行 LVM 操作。要使其可訪問,必須將它分配到某個卷組,這意味著將其從磁碟更改為物理卷。對於每個磁碟,將會在 /dev 目錄下建立兩個裝置驅動程式:一個塊裝置驅動程式和一個字元裝置驅動程式。系統向磁碟驅動器分配一個 32 位唯一識別符號,此識別符號稱為物理卷識別符號 (PVID)。
不帶任何引數使用的 lspv 命令將顯示所有的物理卷、物理卷的 PVID、PV 所在的卷組,以及卷組的狀態,如示例 1 所示。
示例 1 使用 lspv 命令顯示物理卷
# lspv hdisk0 00c478de09a40b16 rootvg active hdisk1 00c478de09caf163 rootvg active hdisk2 00c478de09caf37f None hdisk3 00c478de49630c6a None hdisk4 00c478de00655246 None hdisk5 00c478de008a399b None hdisk6 00c478de008a3ba1 None hdisk7 00c478de6c9883b7 None
PVID
在生成 PVID 時,系統使用自己的序列號和時間戳,以確保兩個磁碟決不會具有相同的 PVID。
PVID 還儲存在 ODM 中。它們由 LVM 命令使用,並且可能由諸如 HACMP 等外部應用程式引用。
下面的命令透過分配 PVID(如果還沒有的話)將可用磁碟裝置更改為物理卷:
chdev -l hdisk7 -a pv=yes
如果磁碟已經是物理卷,則此命令不起作用。
下面的命令從物理卷中清除 PVID:
chdev -l hdisk7 -a pv=clear
注意:可以使用諸如 lquerypv 等中間級別的命令列出磁碟的 PVID,如下所示:
# lquerypv -h /dev/hdisk2 80 10
00000080 00C478DE 09CAF37F 00000000 00000000 |..x.............|
列出有關物理卷的資訊
可以使用 lspv 命令並作為引數傳遞物理卷的名稱,以查詢有關某個物理卷的更多詳細資訊,如示例 6-2 所示。
示例 2 使用 lspv 顯示有關某個物理卷的詳細資訊
# lspv hdisk2 PHYSICAL VOLUME:hdisk2 VOLUME GROUP:testvg PV IDENTIFIER:00c478de09caf37f VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 1 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 2 FREE PPs:542 (69376 megabytes) HOT SPARE:no USED PPs:4 (512 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..105..109..109..109 USED DISTRIBUTION: 00..04..00..00..00
示例 2 中的欄位含義如下:
PHYSICAL VOLUME 物理卷的名稱。
PV IDENTIFIER 物理卷的識別符號。
PV STATE 物理卷的狀態:啟用、丟失或已刪除。可以使用 chpv 命令更改狀態。
STALE PARTITIONS 過時分割槽的數量。
PP SIZE 物理分割槽的大小。
TOTAL PPs 駐留在該磁碟上的物理分割槽總數(空閒或已使用)。
FREE PPs 物理捲上可用的空閒分割槽數量。
USED PPs 物理捲上的已使用分割槽數量。
FREE DISTRIBUTION
每個物理內 (intra-physical) 卷區域上可用的空閒物理分割槽數量。
USED DISTRIBUTION
位於每個物理內卷區域上的已使用物理分割槽數量。
VOLUME GROUP 物理卷所在的卷組的名稱。
VG IDENTIFIER 物理卷所在的卷組的識別符號。
ALLOCATABLE 物理卷的分配許可權確定了是否可以將空閒 PP 分配到邏輯卷。
LOGICAL VOLUMES 至少有一個 LP 位於此物理捲上的邏輯卷數量。
VG DESCRIPTORS 位於此物理捲上的 VGDA 數量。
HOT SPARE 是否將該物理卷定義為熱後備 (hot spare)。
MAX REQUEST 此物理卷的 LTG 大小。
可 以將 lspv 命令與 -l 標誌結合使用,以顯示至少有一個分割槽位於該物理捲上的所有邏輯卷的名稱、位於該物理捲上的分割槽總數、對應於 LP 的 PP 總數、對應於每個物理內 (intra-physical) 磁碟區域的 PP 分佈、邏輯卷的安裝點(如果存在的話)。 示例 6-3 顯示了執行此命令時獲得的輸出的示例。
示例 3 使用 lspv -l 命令
# lspv -l hdisk0 hdisk0: LV NAME LPs PPs DISTRIBUTION MOUNT POINT hd3 1 1 00..00..01..00..00 /tmp hd10opt 1 1 00..00..01..00..00 /opt hd5 1 1 01..00..00..00..00 N/A hd8 1 1 00..00..01..00..00 N/A hd6 11 11 00..00..11..00..00 N/A hd2 8 8 00..00..08..00..00 /usr hd9var 1 1 00..00..01..00..00 /var hd1 1 1 00..00..01..00..00 /home hd4 1 1 00..00..01..00..00 /
如果希望顯示分割槽的數量、位置,以及它們對應的邏輯卷,可以使用 lspv –p 命令,如示例 4 所示。
示例 4 使用 lspv 來顯示針對邏輯卷的 PP 分配
# lspv -p hdisk0 hdisk0: PP RANGE STATE REGION LV NAME TYPE MOUNT POINT 1-1 used outer edge hd5 boot N/A 2-110 free outer edge 111-219 free outer middle 220-220 used center hd8 jfs2log N/A 221-221 used center hd2 jfs2 /usr 222-222 used center hd3 jfs2 /tmp 223-223 used center hd10opt jfs2 /opt 224-230 used center hd2 jfs2 /usr 231-241 used center hd6 paging N/A 242-328 free center 329-437 free inner middle 438-546 free inner edge
透過使用 lspv –M 命令,可以建立詳細的磁碟佈局圖,並顯示每個物理和邏輯分割槽之間的關係,如示例 5 所示。
示例 5 使用 lspv -M 命令顯示物理卷的佈局
# lspv -M hdisk0|more hdisk0:1 hd5:1 hdisk0:2-110 hdisk0:111 lv1:1:1 hdisk0:112 lv1:2:1 hdisk0:113 lv1:3:1 hdisk0:114 lv1:4:1 hdisk0:115 lv1:5:1 hdisk0:116 lv1:6:1 hdisk0:117 lv1:7:1 hdisk0:118 lv1:8:1 hdisk0:119 lv1:9:1 hdisk0:120 lv1:10:1 hdisk0:121 lv1:11:1 hdisk0:122 lv1:12:1 hdisk0:123-219 hdisk0:220 hd8:1 hdisk0:221 hd2:1 hdisk0:222 hd3:1 hdisk0:223 hd10opt:1 hdisk0:224 hd2:2 hdisk0:225 hd2:3 hdisk0:226 hd2:4 hdisk0:227 hd2:5 hdisk0:228 hd2:6 hdisk0:229 hd2:7 hdisk0:230 hd2:8 hdisk0:231 hd6:1 hdisk0:232 hd6:2 hdisk0:233 hd6:3 hdisk0:234 hd6:4 hdisk0:235 hd6:5 hdisk0:236 hd6:6 hdisk0:237 hd6:7 hdisk0:238 hd6:8 hdisk0:239 hd6:9 hdisk0:240 hd6:10 hdisk0:241 hd6:11 hdisk0:242-546
更改物理卷的分配許可權
物理卷的分配許可權確定是否可以將位於該物理捲上還未分配到邏輯卷的物理分割槽分配到邏輯卷。駐留在該物理捲上的邏輯卷的操作不受影響。
在示例 6 中,我們禁用了將 hdisk2 中新的空閒物理分割槽分配到任何邏輯卷的能力。我們嘗試建立一個將使用 hdisk2 中的 PP 的邏輯卷,並收到一條表明該物理卷中的分割槽不可分配的錯誤訊息。
示例 6 禁用物理卷的分割槽分配
# chpv -an hdisk2 # lspv hdisk2 PHYSICAL VOLUME:hdisk2 VOLUME GROUP:testvg PV IDENTIFIER:00c478de09caf37f VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:no PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 1 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 2 FREE PPs:542 (69376 megabytes) HOT SPARE:no USED PPs:4 (512 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..105..109..109..109 USED DISTRIBUTION: 00..04..00..00..00 # mklv -y test -t jfs2 testvg 10 hdisk2 0516-823 lquerypv:Physical Volume hdisk2 is not allocatable. 0516-848 lquerypv:Failure on physical volume hdisk2, it may be missing or removed. 0516-822 mklv:Unable to create logical volume.
要啟用分配許可權,可以使用以下命令:
chpv -ay hdisk2
更改物理卷的可用性
物理卷的可用性定義了是否可以對指定的物理卷執行任何邏輯輸入/輸出操作。任何後續的 LVM 操作將不會考慮該物理捲上的 VGDA 和 VGSA 副本。而且,有關該物理卷的資訊將從卷組中的其他物理卷的 VGDA 中刪除。該物理卷將標記為“已刪除”。
在示例 7 中,我們演示了“可用”的概念及其與 VGDA 的關係,如下所示:
lsvg testvg 命令顯示 VG 是活動的,包含兩個 PV,兩個 PV 都是活動的,並且該 VG 有三個 VGDA。
lsvg -p testvg 命令顯示 testvg 包含磁碟 hdisk2 和 hdisk3,並且兩個磁碟都是活動的。
lspv hdisk3 顯示 hdisk3 是活動的並具有兩個 VGDA。
lspv hdisk2 顯示 hdisk2 是活動的並具有一個 VGDA。
chpv -vr hdisk3 使 hdisk3 不可用。
lspv hdisk3 確認 hdisk3 已刪除,並且其上沒有任何 VGDA。
lspv hdisk2 確認 hdisk2 是活動的,並且現在包含兩個 VGDA,因為任何卷組都必須至少包含一個 VGDA。
lsvg -p testvg 顯示 hdisk3 已刪除。
lsvg testvg 顯示卷組仍然是活動的,兩個 PV 中有一個是活動的,VGDA 總數已更改為兩個。
chpv -va hdisk3 使 hdisk3 再次可用。
lspv hdisk3 顯示 hdisk3 是活動的,並且僅包含一個 VGDA。
lsvg -p testvg 確認兩個磁碟現在都是活動的。
示例 7 使用 chpv 命令更改物理卷的可用性
# lsvg testvg VOLUME GROUP:testvg VG IDENTIFIER:00c478de00004c00000001078fc3497d VG STATE:active PP SIZE:128 megabyte(s) VG PERMISSION:read/write TOTAL PPs:1092 (139776 megabytes) MAX LVs:256 FREE PPs:1092 (139776 megabytes) LVs:0 USED PPs:0 (0 megabytes) OPEN LVs:0 QUORUM: 2 TOTAL PVs:2 VG DESCRIPTORS: 3 STALE PVs:0 STALE PPs: 0 ACTIVE PVs:2 AUTO ON:yes MAX PPs per VG: 32512 MAX PPs per PV:1016 MAX PVs: 32 LTG size (Dynamic):256 kilobyte(s) AUTO SYNC:no HOT SPARE:no BB POLICY:relocatable # lsvg -p testvg testvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 546 546 110..109..109..109..109 hdisk3 active 546 546 110..109..109..109..109 # lspv hdisk3 PHYSICAL VOLUME:hdisk3 VOLUME GROUP:testvg PV IDENTIFIER:00c478de49630c6a VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 0 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 2 FREE PPs:546 (69888 megabytes) HOT SPARE:no USED PPs:0 (0 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..109..109..109..109 USED DISTRIBUTION: 00..00..00..00..00 # lspv hdisk2 PHYSICAL VOLUME:hdisk2 VOLUME GROUP:testvg PV IDENTIFIER:00c478de09caf37f VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 0 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 1 FREE PPs:546 (69888 megabytes) HOT SPARE:no USED PPs:0 (0 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..109..109..109..109 USED DISTRIBUTION: 00..00..00..00..00 # chpv -vr hdisk3 # lspv hdisk3 PHYSICAL VOLUME:hdisk3 VOLUME GROUP:testvg PV IDENTIFIER:00c478de49630c6a VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:removed STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 0 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 0 FREE PPs:546 (69888 megabytes) HOT SPARE:no USED PPs:0 (0 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..109..109..109..109 USED DISTRIBUTION: 00..00..00..00..00 # lspv hdisk2 PHYSICAL VOLUME:hdisk2 VOLUME GROUP:testvg PV IDENTIFIER:00c478de09caf37f VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 0 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 2 FREE PPs:546 (69888 megabytes) HOT SPARE:no USED PPs:0 (0 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..109..109..109..109 USED DISTRIBUTION: 00..00..00..00..00 # lsvg -p testvg testvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 546 546 110..109..109..109..109 hdisk3 removed 546 546 110..109..109..109..109 # lsvg testvg VOLUME GROUP:testvg VG IDENTIFIER:00c478de00004c00000001078fc3497d VG STATE:active PP SIZE:128 megabyte(s) VG PERMISSION:read/write TOTAL PPs:1092 (139776 megabytes) MAX LVs:256 FREE PPs:1092 (139776 megabytes) LVs:0 USED PPs:0 (0 megabytes) OPEN LVs:0 QUORUM: 2 TOTAL PVs:2 VG DESCRIPTORS: 2 STALE PVs:0 STALE PPs: 0 ACTIVE PVs:1 AUTO ON:yes MAX PPs per VG: 32512 MAX PPs per PV:1016 MAX PVs: 32 LTG size (Dynamic):256 kilobyte(s) AUTO SYNC:no HOT SPARE:no BB POLICY:relocatable # chpv -va hdisk3 # lspv hdisk3 PHYSICAL VOLUME:hdisk3 VOLUME GROUP:testvg PV IDENTIFIER:00c478de49630c6a VG IDENTIFIER 00c478de00004c00000001078fc3497d PV STATE:active STALE PARTITIONS:0 ALLOCATABLE:yes PP SIZE:128 megabyte(s) LOGICAL VOLUMES: 0 TOTAL PPs:546 (69888 megabytes) VG DESCRIPTORS: 1 FREE PPs:546 (69888 megabytes) HOT SPARE:no USED PPs:0 (0 megabytes) MAX REQUEST:256 kilobytes FREE DISTRIBUTION: 110..109..109..109..109 USED DISTRIBUTION: 00..00..00..00..00 # lsvg -p testvg testvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 546 546 110..109..109..109..109 hdisk3 active 546 546 110..109..109..109..109
在更改任何物理卷的可用性之前,必須關閉駐留在該磁碟上的任何邏輯卷,並確保卷組在刪除該磁碟以後滿足定額 (quorum) 要求。
清除物理卷中的引導記錄
要清除位於物理卷 hdisk1 上的引導記錄,可以使用以下命令:
chpv -c hdisk1
宣告物理卷熱後備
可以使用 chpv 命令將某個物理卷定義為熱後備。此命令還禁用該物理卷的分配許可權。該磁碟的大小必須至少等於卷組中已經存在的最小磁碟的大小。
要將 hdisk3 定義為熱後備,可以使用以下命令:
chpv -hy hdisk3
要從 hdisk3 所在的卷組的熱後備池中刪除 hdisk3,可以使用以下命令:
chpv -hn hdisk3
遷移物理卷中的資料
可以將位於物理捲上的物理分割槽移動到同一個卷組中包含的一個或多個物理卷。
在示例 8 中,我們提供了遷移物理卷中的資料的示例,如下所示:
- lsvg -p rootvg 顯示 rootvg 中包含的所有 PV。
- lsvg -M hdisk1 顯示位於 hdisk1 上的所有物理分割槽的佈局圖。
- lspv -M hdisk5 顯示 hdisk5 的所有分割槽都未分配。
- migratepv hdisk1 hdisk5 將資料從 hdisk1 遷移到 hdisk5。
- lspv -M hdisk1 確認 hdisk1 的所有分割槽均為空閒。
- chpv -c hdisk1 清除 hdisk1 中的引導記錄。
- lspv -M hdisk5 確認所有物理分割槽都已遷移到 hdisk5。
示例 8 將物理分割槽從一個磁碟遷移到另一個磁碟
# lsvg -p rootvg rootvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk0 active 546 523 109..109..87..109..109 hdisk1 active 546 538 109..105..106..109..109 hdisk5 active 546 546 110..109..109..109..109 # lspv -M hdisk1 hdisk1:1 hd5:1:2 hdisk1:2-122 hdisk1:123 fslv00:1 hdisk1:124 fslv00:2 hdisk1:125 fslv00:3 hdisk1:126 fslv00:4 hdisk1:127-219 hdisk1:220 hd4:1 hdisk1:221 hd9var:1 hdisk1:222 hd1:1 hdisk1:223-546 # lspv -M hdisk5 hdisk5:1-546 # migratepv hdisk1 hdisk5 0516-1011 migratepv:Logical volume hd5 is labeled as a boot logical volume. 0516-1246 migratepv:If hd5 is the boot logical volume, please run 'chpv -c hdisk1' as root user to clear the boot record and avoid a potential boot off an old boot image that may reside on the disk from which this logical volume is moved/removed. # lspv -M hdisk1 hdisk1:1-546 # chpv -c hdisk1 # lspv -M hdisk5 hdisk5:1 hd5:1:2 hdisk5:2-110 hdisk5:111 fslv00:1 hdisk5:112 fslv00:2 hdisk5:113 fslv00:3 hdisk5:114 fslv00:4 hdisk5:115-219 hdisk5:220 hd4:1 hdisk5:221 hd9var:1 hdisk5:222 hd1:1 hdisk5:223-546
如果遷移包含引導映像的物理卷中的資料,則還應該更新引導列表。
可以僅遷移屬於某個特定邏輯卷的分割槽中的資料。要僅將屬於邏輯卷 testlv 的物理分割槽從 hdisk1 遷移到 hdisk5,可以使用以下命令:
migratepv -l testlv hdisk1 hdisk5
遷移分割槽
可以將資料從位於一個物理磁碟上的一個分割槽遷移到不同磁碟上的另一個物理分割槽。
在示例 9 中,我們提供了將資料從一個物理分割槽遷移到另一個物理分割槽的示例,如下所示:
- lspv -M hdisk1 顯示位於 hdisk1 上的所有物理分割槽的佈局圖。請注意,邏輯卷 testlv 的邏輯分割槽號 1 的第二個副本駐留在物理分割槽 115 上。
- lspv -M hdisk5 顯示 hdisk5 的所有分割槽都未分配。
- migratelp testlv/1/2 hdisk5/123 將邏輯卷的邏輯分割槽號 1 的第二個副本中的資料遷移到物理分割槽 123 上的 hdisk5。
- lsvg -M hdisk1 顯示位於 hdisk1 上的所有物理分割槽的佈局圖。請注意,物理分割槽 115 是空閒的。
- lspv -M hdisk5 確認邏輯卷 testlv 的邏輯分割槽號 1 的第二個副本現在駐留在 hdisk5 的物理分割槽 123 上。
示例 9 將某個分割槽遷移到不同物理捲上的另一個分割槽
# lspv -M hdisk1 hdisk1:1 hd5:1:2 hdisk1:2-110 hdisk1:111 fslv00:1 hdisk1:112 fslv00:2 hdisk1:113 fslv00:3 hdisk1:114 fslv00:4 hdisk1:115 testlv:1:2 hdisk1:116-219 hdisk1:220 hd4:1 hdisk1:221 hd9var:1 hdisk1:222 hd1:1 hdisk1:223-546 # lspv -M hdisk5 hdisk5:1-546 # migratelp testlv/1/2 hdisk5/123 migratelp:Mirror copy 2 of logical partition 1 of logical volume testlv migrated to physical partition 123 of hdisk5. # lspv -M hdisk1 hdisk1:1 hd5:1:2 hdisk1:2-110 hdisk1:111 fslv00:1 hdisk1:112 fslv00:2 hdisk1:113 fslv00:3 hdisk1:114 fslv00:4 hdisk1:115-219 hdisk1:220 hd4:1 hdisk1:221 hd9var:1 hdisk1:222 hd1:1 hdisk1:223-546 # lspv -M hdisk5 hdisk5:1-122 hdisk5:123 testlv:1:2 hdisk5:124-546
確定 LTG 大小
邏輯磁軌組 (LTG) 大小是 I/O 磁碟操作允許的最大傳輸大小。
可以使用 lquerypv 命令確定物理磁碟的 LTG 大小,如示例 6-10 所示。一個磁碟可以支援多種 LTG 大小,使用 ioctl 呼叫可以確定這些大小。
示例 10 使用 lquerypv 命令確定 LTG 大小
# lquerypv -M hdisk0 256
管理邏輯卷
邏輯卷使得應用程式在訪問資料時能夠將資料當作是連續儲存的。邏輯卷由一個或多個帶編號的邏輯分割槽的序列組成。每個邏輯分割槽至少有一個並且至多有三個對應的物理分割槽,這些物理分割槽可以定位在不同物理捲上。物理分割槽在磁碟上的位置由物理內和物理間分配策略確定。
對於每個邏輯卷,/dev 目錄下存在兩個對應的裝置檔案。第一個是字元裝置,第二個是塊裝置。
建立邏輯卷
可以使用 mklv 命令建立邏輯卷。此命令允許指定邏輯卷的名稱及其特徵,例如邏輯分割槽的數量及其位置。
在示例 11 中,我們使用 mklv 命令在卷組 test1vg 中建立一個名為 lv3 的邏輯卷,其型別為 jfs2,並具有 10 個位於 hdisk5 上的邏輯分割槽。
示例 11 使用 mklv 命令
# mklv -y lv3 -t jfs2 -a im test1vg 10 hdisk5 lv3 # lslv lv3 LOGICAL VOLUME:lv3 VOLUME GROUP:test1vg LV IDENTIFIER:00c5e9de00004c0000000107a5b596ab.4 PERMISSION:read/write VG STATE:active/complete LV STATE:closed/syncd TYPE:jfs2 WRITE VERIFY:off MAX LPs:512 PP SIZE:512 megabyte(s) COPIES:1 SCHED POLICY:parallel LPs:10 PPs: 10 STALE PPs:0 BB POLICY:relocatable INTER-POLICY:minimum RELOCATABLE:yes INTRA-POLICY:inner middle UPPER BOUND: 32 MOUNT POINT:N/A LABEL:無 MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:NO
在示例 12 中,我們使用 mklv 命令在卷組 test1vg 中建立一個名為 lv4 的邏輯卷,其型別為 sysdump 並具有兩個邏輯分割槽,每個邏輯分割槽分別有三個位於三個不同磁碟(hdisk5、hdisk6 和 hdisk7)中心的副本;此邏輯卷的標籤為 demo-label,最多可以有五個邏輯分割槽。
示例 12 使用 mklv 命令
# mklv -y lv4 -t sysdump -a c -e x -c3 -L demo-label -x5 test1vg 2 hdisk5 hdisk6 hdisk7 lv4 # lslv lv4 LOGICAL VOLUME:lv4 VOLUME GROUP:test1vg LV IDENTIFIER:00c5e9de00004c0000000107a5b596ab.5 PERMISSION:read/write VG STATE:active/complete LV STATE:closed/syncd TYPE:sysdump WRITE VERIFY:off MAX LPs:5 PP SIZE:512 megabyte(s) COPIES:3 SCHED POLICY:parallel LPs:2 PPs: 6 STALE PPs:0 BB POLICY:relocatable INTER-POLICY:maximum RELOCATABLE:yes INTRA-POLICY:center UPPER BOUND: 32 MOUNT POINT:N/A LABEL:demo-label MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:NO
在示例 13 中,我們使用 mklv 命令在卷組 test1vg 中建立一個名為 lv5 的邏輯卷,其型別為 jfs2 並具有三個邏輯分割槽,每個分割槽分別有兩個位於不同磁碟上的固定 (pinned) 副本,那兩個磁碟上的讀/寫操作順序地進行,啟用了寫校驗,並將 I/O 操作序列化。
示例 13 使用 mklv 命令
# mklv -y lv5 -t jfs2 -c2 -rn -bn -ds -vy -oy test1vg 2 hdisk5 hdisk6 lv5 # lslv lv5 LOGICAL VOLUME:lv5 VOLUME GROUP:test1vg LV IDENTIFIER:00c5e9de00004c0000000107a5b596ab.6 PERMISSION:read/write VG STATE:active/complete LV STATE:closed/syncd TYPE:jfs2 WRITE VERIFY:on MAX LPs:512 PP SIZE:512 megabyte(s) COPIES:2 SCHED POLICY:sequential LPs:3 PPs: 6 STALE PPs:0 BB POLICY:non-relocatable INTER-POLICY:minimum RELOCATABLE:no INTRA-POLICY:middle UPPER BOUND: 32 MOUNT POINT:N/A LABEL:無 MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:YES
刪除邏輯卷
rmlv 命令用於刪除邏輯卷。???ü??僅刪除邏輯卷,但不刪除其他實體,例如使用該邏輯卷的檔案系統或分頁空間。
在示例 14 中,我們提供了使用 rmlv 刪除邏輯卷的示例,如下所示:
- lsvg -l test1vg 顯示 test1vg 中包含的所有 LV。
- rmlv lv7 提示使用者確認,然後刪除 lv7。
- lslv -l lv1 顯示 lv1 的位於 hdisk5、hdisk6 和 hdisk7 上的物理分割槽。
- rmlv -p hdisk7 lv1 嘗試刪除 lv1 的位於 hdisk7 上的分割槽並提示使用者確認。由於 lv1 已開啟,該操作無法執行。
- umount /fs1 關閉 lv1。
- rmlv -p hdisk7 lv1 嘗試刪除 lv1 的位於 hdisk7 上的分割槽,提示使用者確認,併成功完成。
- lslv -l lv1 確認 lv1 的位於 hdisk7 上的物理分割槽已刪除。
示例 14 刪除邏輯卷
# lsvg -l test1vg test1vg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT lv1 jfs2 3 9 3 open/syncd /fs1 lv2 jfs2 2 4 2 closed/syncd /fs2 logggg jfs2log 2 2 1 open/syncd N/A lv3 jfs2 10 10 1 closed/syncd N/A lv4 sysdump 2 6 3 closed/syncd N/A lv5 jfs2 3 6 2 closed/syncd N/A lv6 jfs2 2 4 2 closed/syncd N/A lv7 jfs2 2 4 2 closed/syncd N/A # rmlv lv7 Warning, all data contained on logical volume lv7 will be destroyed. rmlv:Do you wish to continue? y(es) n(o)? y rmlv:Logical volume lv7 is removed. # lslv -l lv1 lv1:/fs1 PV COPIES IN BAND DISTRIBUTION hdisk5 003:000:000 100% 000:003:000:000:000 hdisk6 003:000:000 100% 000:003:000:000:000 hdisk7 003:000:000 100% 000:003:000:000:000 # rmlv -p hdisk7 lv1 0516-914 rmlv:Warning, all data belonging to logical volume lv1 on physical volume hdisk7 will be destroyed. rmlv:Do you wish to continue? y(es) n(o)? y 0516-1008 rmlv:Logical volume lv1 must be closed.If the logical volume contains a filesystem, the umount command will close the LV device. # umount /fs1 # rmlv -p hdisk7 lv1 0516-914 rmlv:Warning, all data belonging to logical volume lv1 on physical volume hdisk7 will be destroyed. rmlv:Do you wish to continue? y(es) n(o)? y # lslv -l lv1 lv1:/fs1 PV COPIES IN BAND DISTRIBUTION hdisk5 003:000:000 100% 000:003:000:000:000 hdisk6 003:000:000 100% 000:003:000:000:000
增加邏輯卷的大小
可 以使用 extendlv 命令將額外的邏輯分割槽新增到已經存在的邏輯卷。預設情況下,邏輯卷在擴充套件時將保留其特徵。可以使用標誌來僅更改要新增的分割槽的這些特徵。整個卷組的初始特 徵將保留不變。可以指定一個或多個磁碟,這些磁碟將容納新定義的分割槽。不能超出為該卷組定義的最大分割槽數量。還可以指定塊,其大小以 KB、MB 或 GB 為單位。系統將自動確定滿足請求所需要的最小分割槽數量。
在示例 15 中,我們使用 extendlv 命令,透過三個位於 hdisk5 和 hdisk6 內邊緣的邏輯分割槽擴充套件邏輯卷 lv1。
示例 15 使用 extendlv 命令
# lslv -l lv1 lv1:/fs1 PV COPIES IN BAND DISTRIBUTION hdisk5 003:000:000 100% 000:003:000:000:000 hdisk6 003:000:000 100% 000:003:000:000:000 # extendlv -a ie -ex lv1 3 hdisk5 hdisk6 # lslv -l lv1 lv1:/fs1 PV COPIES IN BAND DISTRIBUTION hdisk5 006:000:000 50% 000:003:000:000:003 hdisk6 006:000:000 50% 000:003:000:000:003
複製邏輯卷
可以將邏輯卷的內容複製到新的或已經存在的邏輯卷。為了保留資料完整性,應該確保目標邏輯卷的大小至少等於源邏輯卷的大小。
下面的示例演示瞭如何使用 cplv 命令將邏輯卷 lv1 複製到 dumpvg 卷組中名為 lv8 的邏輯卷:
cplv -v dumpvg -y lv8 lv1
建立邏輯卷的副本
可以使用 mklvcopy 命令增加邏輯分割槽的副本數量。邏輯卷將保留其特徵。可以手動或自動對新副本進行同步。
在示例 16 中,我們使用 mklvcopy 命令建立並同步邏輯卷 lv1 的每個邏輯分割槽的一個額外副本。新建立的副本將位於 hdisk7 上。
示例 16 使用 mklvcopy 建立並同步邏輯分割槽的額外副本
# lslv -m lv1 lv1:/fs1 LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0029 hdisk5 0029 hdisk6 0002 0030 hdisk5 0030 hdisk6 0003 0031 hdisk5 0031 hdisk6 0004 0110 hdisk5 0111 hdisk6 0005 0110 hdisk6 0112 hdisk5 0006 0111 hdisk5 0112 hdisk6 0007 0113 hdisk5 0113 hdisk6 0008 0114 hdisk5 0114 hdisk6 0009 0115 hdisk5 0115 hdisk6 # mklvcopy -k lv1 3 hdisk7 & # lslv -m lv1 lv1:/fs1 LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0029 hdisk5 0029 hdisk6 0110 hdisk7 0002 0030 hdisk5 0030 hdisk6 0111 hdisk7 0003 0031 hdisk5 0031 hdisk6 0112 hdisk7 0004 0110 hdisk5 0111 hdisk6 0113 hdisk7 0005 0110 hdisk6 0112 hdisk5 0114 hdisk7 0006 0111 hdisk5 0112 hdisk6 0115 hdisk7 0007 0113 hdisk5 0113 hdisk6 0116 hdisk7 0008 0114 hdisk5 0114 hdisk6 0117 hdisk7 0009 0115 hdisk5 0115 hdisk6 0118 hdisk7
更改邏輯卷的特徵
可以使用 chlv 命令更改已經存在的邏輯卷的特徵。如果更改了影響物理分割槽位置的屬性,這些屬性不會影響已經存在的分割槽,而是僅影響將在隨後新增或刪除的分割槽。如果所做的更改影響到駐留在該邏輯捲上的檔案系統,則還必須更新檔案系統特徵。
在示例 17 中,我們使用 chlv 命令將邏輯卷 lv1 的最大邏輯分割槽數量更改為 1000,將 I/O 操作的排程策略更改為“並行/迴圈 (parallel /round-robin)”。
示例 17 更改邏輯卷特徵
# lslv lv1 LOGICAL VOLUME:lv1 VOLUME GROUP:test1vg LV IDENTIFIER:00c5e9de00004c0000000107a5b596ab.1 PERMISSION:read/write VG STATE:啟用/complete LV STATE:opened/syncd TYPE:jfs2 WRITE VERIFY:off MAX LPs:512 PP SIZE:512 megabyte(s) COPIES:3 SCHED POLICY:parallel LPs:9 PPs: 27 STALE PPs:0 BB POLICY:relocatable INTER-POLICY:minimum RELOCATABLE:yes INTRA-POLICY:inner edge UPPER BOUND: 32 MOUNT POINT:/fs1 LABEL:None MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:NO # chlv -x 1000 -d pr lv1 # lslv lv1 LOGICAL VOLUME:lv1 VOLUME GROUP:test1vg LV IDENTIFIER:00c5e9de00004c0000000107a5b596ab.1 PERMISSION:read/write VG STATE:active/complete LV STATE:closed/syncd TYPE:jfs2 WRITE VERIFY:off MAX LPs:1000 PP SIZE:512 megabyte(s) COPIES:3 SCHED POLICY:parallel/round robin LPs:9 PPs: 27 STALE PPs:0 BB POLICY:relocatable INTER-POLICY:minimum RELOCATABLE:yes INTRA-POLICY:inner edge UPPER BOUND: 32 MOUNT POINT:/fs1 LABEL:None MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:NO
拆分邏輯卷
可以使用 splitlvcopy 命令將至少有每個邏輯分割槽的兩個副本的邏輯卷拆分為兩個不同的邏輯卷。新建立的邏輯卷將具有與原始邏輯卷相同的特徵。建議關閉要拆分的邏輯卷。如果原始邏輯捲包含檔案系統,則必須將新建立的邏輯卷中的資料作為不同的檔案系統進行訪問。
在示例 18 中,我們使用 splitlvcopy 命令將一個邏輯卷拆分為兩個副本,如下所示(不保留檔案系統資料):
- lsvg -l testvg 顯示 testvg 包含邏輯卷 testlv,其型別為 jfs2 並將 /test 作為安裝點。
- lslv -m testlv 顯示 testlv 具有三個分別位於 hdisk5、hdisk6 和 hdisk7 上的映象副本。
- splitlvcopy -y copylv testlv 2 嘗試拆分該邏輯卷並提示使用者確認,因為 testlv 是開啟的,資料可能被破壞。
- umount /test 關閉邏輯卷 testlv。
- splitlvcopy -y copylv testlv 2 拆分該邏輯卷。
- lsvg -l testvg 顯示新的邏輯卷 copylv 已建立完成。
- lslv -m testlv 顯示 testlv 現在只有兩個映象副本,分別位於 hdisk5 和 hdisk6 上。
- lslv -m copylv 顯示 copylv 包含 hdisk7 中的分割槽。
- lslv copylv 顯示了新建立的邏輯卷 copylv 的特徵。請注意,該邏輯卷沒有安裝點。
- crfs -v jfs2 -d /dev/copylv -m /copy 為 copylv 建立檔案系統結構。請注意,此命令不會破壞任何檔案系統資料。
如果希望保留原始邏輯捲上的檔案系統資料,則不應該在上一步中執行 crfs 命令,而是執行下列命令:
- mkdir /copy 建立副本目錄。
- mount /dev/copylv /copy 安裝複製的檔案系統。
- 手動編輯 /etc/filesystems 檔案,併為 /copy 安裝點新增一個條目。
示例 18 使用 splitlvcopy
# lsvg -l testvg testvg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT testlv jfs2 3 9 3 open/syncd /test loglv00 jfs2log 1 1 1 open/syncd N/A # lslv -m testlv testlv:/test LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0056 hdisk5 0056 hdisk6 0056 hdisk7 0002 0057 hdisk5 0057 hdisk6 0057 hdisk7 0003 0058 hdisk5 0058 hdisk6 0058 hdisk7 # splitlvcopy -y copylv testlv 2 splitlvcopy:WARNING!The logical volume being split, testlv, is open. Splitting an open logical volume may cause data loss or corruption and is not supported by IBM.IBM will not be held responsible for data loss or corruption caused by splitting an open logical volume. Do you wish to continue? y(es) n(o)? n # umount /test # splitlvcopy -y copylv testlv 2 copylv # lsvg -l testvg testvg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT testlv jfs2 3 6 2 closed/syncd /test loglv00 jfs2log 1 1 1 closed/syncd N/A copylv jfs2 3 3 1 closed/syncd N/A # lslv -m testlv testlv:/test LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0056 hdisk5 0056 hdisk6 0002 0057 hdisk5 0057 hdisk6 0003 0058 hdisk5 0058 hdisk6 # lslv -m copylv copylv:N/A LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0056 hdisk7 0002 0057 hdisk7 0003 0058 hdisk7 # lslv copylv LOGICAL VOLUME:copylv VOLUME GROUP:testvg LV IDENTIFIER:00c478de00004c0000000107c4419ccf.3 PERMISSION:read/write VG STATE:active/complete LV STATE:closed/syncd TYPE:jfs2 WRITE VERIFY:off MAX LPs:512 PP SIZE:256 megabyte(s) COPIES:1 SCHED POLICY:parallel LPs:3 PPs: 3 STALE PPs:0 BB POLICY:relocatable INTER-POLICY:minimum RELOCATABLE:yes INTRA-POLICY:middle UPPER BOUND: 32 MOUNT POINT:N/A LABEL:/test MIRROR WRITE CONSISTENCY:on/ACTIVE EACH LP COPY ON A SEPARATE PV ?:yes Serialize IO ?:NO # crfs -v jfs2 -d /dev/copylv -m /copy File system created successfully. 786204 kilobytes total disk space. New File System size is 1572864
刪除邏輯卷的副本
可以使用 rmlvcopy 命令刪除邏輯卷的邏輯分割槽副本。
在示例 19 中,我們使用 rmlvcopy 命令刪除邏輯分割槽 testlv 的一組副本,如下所示:
lslv -m testlv 顯示 testlv 具有三個分別位於 hdisk5、hdisk6 和 hdisk7 上的映象副本。
rmlvcopy testlv 2 hdisk6 刪除位於 hdisk6 上的副本並保留兩個映象副本。
lslv -m testlv 顯示 testlv 現在有兩個位於 hdisk5 和 hdisk7 上的映象副本。
示例 19 使用 rmlvcopy
# lslv -m testlv testlv:/test LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0056 hdisk5 0056 hdisk6 0059 hdisk7 0002 0057 hdisk5 0057 hdisk6 0060 hdisk7 0003 0058 hdisk5 0058 hdisk6 0061 hdisk7 # rmlvcopy testlv 2 hdisk6 # lslv -m testlv testlv:/test LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0056 hdisk5 0059 hdisk7 0002 0057 hdisk5 0060 hdisk7 0003 0058 hdisk5 0061 hdisk7
LVM 命令總結
所有 LVM 命令在 SMIT 中都有對應的選單。
表 2 提供了 LVM 命令的摘要、它們的對應 SMIT 快速路經和每個命令的簡要描述。
表 2 LVM 命令摘要
命令 | SMIT 快速路經 | > 簡要說明 |
---|---|---|
chpv | smit chpv | 更改物理卷的特徵。 |
lspv | smit lspv | 列出有關物理卷的資訊。 |
migratepv | smit migratepv | 將物理分割槽從一個物理卷遷移到其他物理卷。 |
mkvg | smit mkvg | 建立卷組。 |
lsvg | smit lsvg | 列出有關卷組的資訊。 |
reducevg | smit reducevg | 從卷組中刪除某個物理卷。 |
chvg | smit chvg | 更改卷組的特徵。 |
importvg | smit importvg | 將卷組的定義匯入系統。 |
exportvg | smit exportvg | 從系統中刪除某個卷組的定義。 |
varyonvg | smit varyonvg | 啟用某個卷組。 |
varyoffvg | smit varyoffvg | 禁用某個卷組。 |
mklv | smit mklv | 建立邏輯卷。 |
lslv | smit lslv | 列出有關某個邏輯卷的資訊。 |
chlv | smit chlv | 更改邏輯卷的特徵。 |
rmlv | smit rmlv | 刪除邏輯卷。 |
extendlv | smit extendlv | 擴充套件邏輯卷。 |
mklvcopy | smit mklvcopy | 建立邏輯卷的副本。 |
rmlvcopy | smit rmlvcopy | 刪除邏輯卷的副本。 |
https://www.ibm.com/developerworks/cn/linux/l-lvm2/index.html
邏輯卷管理(LVM)指系統將物理卷管理抽象到更高的層次,常常會形成更簡單的管理模式。透過使用 LVM,所有物理磁碟和分割槽,無論它們的大小和分佈方式如何,都被抽象為單一儲存(single storage)源。例如,在圖 1 所示的物理到邏輯對映佈局中,最大的磁碟是 80GB 的,那麼使用者如何建立更大(比如 150GB)的檔案系統呢?
LVM 可以將分割槽和磁碟聚合成一個虛擬磁碟(virtual disk),從而用小的儲存空間組成一個統一的大空間。這個虛擬磁碟在 LVM 術語中稱為卷組(volume group)。
建立比最大的磁碟還大的檔案系統並不是這種高階儲存管理方法的惟一用途。還可以使用 LVM 完成以下任務:
- 在磁碟池中新增磁碟和分割槽,對現有的檔案系統進行線上擴充套件
- 用一個 160GB 磁碟替換兩個 80GB 磁碟,而不需要讓系統離線,也不需要在磁碟之間手工轉移資料
- 當儲存空間超過所需的空間量時,從池中去除磁碟,從而縮小檔案系統
- 使用快照(snapshot)執行一致的備份(本文後面會進一步討論)
LVM2 是一個新的使用者空間工具集,它為 Linux 提供邏輯卷管理功能。它完全向後相容原來的 LVM 工具集。在本文中,將介紹 LVM2 最有用的特性以及幾種簡化系統管理任務的方法。(隨便說一句,如果您正在尋找關於 LVM 的基本指南,那麼可以看看 參考資料 中列出的 LVM HowTo。)
我們來看看 LVM 的結構是什麼樣子的。
LVM 的結構
LVM 被組織為三種元素:
- 卷(Volume):物理 和邏輯卷 和卷組
- 區段(Extent):物理 和邏輯區段
- 裝置對映器(Device mapper):Linux 核心模組
卷
Linux LVM 組織為物理卷(PV)、卷組(VG)和邏輯卷(LV)。物理卷 是物理磁碟或物理磁碟分割槽(比如 /dev/hda 或 /dev/hdb1)。卷組 是物理卷的集合。卷組 可以在邏輯上劃分成多個邏輯卷。
圖 2 顯示一個三個磁碟構成的佈局。
圖 2. 物理到邏輯卷的對映物理磁碟 0 上的所有四個分割槽(/dev/hda[1-4])以及完整的物理磁碟 1(/dev/hdb)和物理磁碟 2(/dev/hdd)作為物理卷新增到卷組 VG0 中。
卷組是實現 n-to-m 對映的關鍵(也就是,將 n 個 PV 看作 m 個 LV)。在將 PV 分配給卷組之後, 就可以建立任意大小的邏輯卷(只要不超過 VG 的大小)。在圖 2 的示例中,建立了一個稱為 LV0 的卷組,並給其他 LV 留下了一些空間(這些空間也可以用來應付 LV0 以後的增長)。
LVM 中的邏輯卷就相當於物理磁碟分割槽;在實際使用中,它們就是 物理磁碟分割槽。
在建立 LV 之後,可以使用任何檔案系統對它進行格式化並將它掛載在某個掛載點上,然後就可以開始使用它了。圖 3 顯示一個經過格式化的邏輯卷 LV0 被掛載在 /var。
圖 3. 物理捲到檔案系統的對映區段
為了實現 n-to-m 物理到邏輯卷對映,PV 和 VG 的基本塊必須具有相同的大小;這些基本塊稱為物理區段(PE)和邏輯區段(LE)。儘管 n 個物理卷對映到 m 個邏輯卷,但是 PE 和 LE 總是一對一對映的。
在使用 LVM2 時,對於每個 PV/LV 的最大區段數量並沒有限制。預設的區段大小是 4MB,對於大多數配置不需要修改這個設定,因為區段的大小並不影響 I/O 效能。但是,區段數量太多會降低 LVM 工具的效率,所以可以使用比較大的區段,從而降低區段數量。但是注意,在一個 VG 中不能混用不同的區段大小,而且用 LVM 修改區段大小是一種不安全的操作,會破壞資料。所以建議在初始設定時選擇一個區段大小,以後不再修改。
不同的區段大小意味著不同的 VG 粒度。例如,如果選擇的區段大小是 4GB,那麼只能以 4GB 的整數倍縮小或擴充套件 LV。
圖 4 用 PE 和 LE 顯示與前一個示例相同的佈局(VG0 中的空閒空間也由空閒 LE 組成,儘管圖中沒有顯示它們)。
圖 4. 物理到邏輯區段的對映另外,請注意圖 4 中的區段分配策略。LVM2 並非總是連續分配 PE;細節參見關於 lvm 的 Linux 手冊頁(見 參考資料 中的連結)。系統管理員可以設定不同的分配策略,但是一般不需要這麼做,因為預設策略(名為一般分配策略(normal allocation policy))使用符合常規的規則,比如不把並行的條帶放在同一物理捲上。
如果決定建立第二個 LV(LV1),那麼最終的 PE 佈局可能像圖 5 這樣。
圖 5. 物理到邏輯區段的對映裝置對映器
裝置對映器(也稱為 dm_mod)是一個 Linux 核心模組(也可以是內建的),最早出現在 2.6.9 核心中。它的作用是對裝置進行對映 —— LVM2 必須使用這個模組。
在大多數主流發行版中,裝置對映器會被預設安裝,常常會在引導時或者在安裝或啟用 LVM2/EVMS 包時自動裝載(EVMS 是一種替代 LVM 的工具,更多資訊見 參考資料)。如果沒有啟用這個模組,那麼對 dm_mod 執行 modprobe 命令,在發行版的文件中查詢在引導時啟用它的方法:modprobe dm_mod。
在建立 VG 和 LV 時, 可以給它們起一個有意義的名稱(而不是像前面的示例那樣使用 VG0、LV0 和 LV1 等名稱)。裝置對映器的作用就是將這些名稱正確地對映到物理裝置。對於前面的示例,裝置對映器會在 /dev 檔案系統中建立下面的裝置節點:
- /dev/mapper/VG0-LV0
- /dev/VG0/LV0 是以上節點的連結
- /dev/mapper/VG0-LV1
- /dev/VG0/LV1 是以上節點的連結
(注意名稱的格式標準:/dev/{vg_name}/{lv_name} -> /dev/mapper/{vg_name}{lv_name})。
與物理磁碟相反,無法直接訪問卷組(這意味著沒有 /dev/mapper/VG0 這樣的檔案,也不能執行 dd if=/dev/VG0 of=dev/VG1)。常常使用lvm(8) 命令訪問卷組。
常見任務
在使用 LVM2 時常常執行的任務包括系統檢驗(是否安裝了 LVM2)以及建立、擴充套件和管理卷。
系統準備好執行 LVM2 了嗎?
檢查您的 Linux 發行版是否安裝了 LVM2 軟體包。如果還沒有,就安裝它(最好安裝發行版附帶的軟體包)。
裝置對映器模組必須在系統啟動時裝載。用 lsmod | grep dm_mod 命令檢查當前是否裝載了這個模組。如果沒有裝載,那麼可能需要安裝並配置更多的軟體包(文件會說明如何啟用 LVM2)。
如果只是想測試一下(或者挽救某個系統),那麼可以使用以下命令啟動 LVM2:
清單 1. 啟動 LVM2 的基本命令#this should load the Device-mapper module modprobe dm_mod #this should find all the PVs in your physical disks pvscan #this should activete all the Volume Groups vgchange -ay
如果打算將根檔案系統放在一個 LVM LV 中,那麼還要注意 initial-ramdisk 映像。同樣,發行版常常會負責處理這個問題 —— 在安裝 LVM2 包時,它們常常會重新構建或更新 initrd 映像,在其中新增適當的核心模組和啟動指令碼。但是,可能需要檢視發行版的文件,確保系統支援 LVM2 根檔案系統。
注意,通常只有當探測到根檔案系統在一個 VG 中時,initial-ramdisk 映像才會啟用 LVM。這種探測常常是透過分析 root= 核心引數執行的。不同的發行版以不同的方式判斷根檔案系統是否在卷組中。細節參見發行版的文件。如果不確定的話,就需要檢查 initrd 或 initramdisk 的配置。
建立新的卷
使用您喜歡的分割槽工具(比如 fdisk、parted 或 gparted),建立一個供 LVM 使用的新分割槽。儘管 LVM 支援在整個磁碟上使用 LVM,但是不 建議這麼做:其他作業系統可能認為這個磁碟沒有初始化,可能會破壞它!更好的方法是建立一個覆蓋整個磁碟的分割槽。
大多數分割槽工具常常預設使用分割槽 ID 0x83(或 Linux)來建立新分割槽。可以使用這個預設 ID,但是為了便於組織,最好將它改為 0x8e(或 Linux LVM)。
在建立分割槽之後,應該會在分割槽表中看到一個(或多個)Linux LVM 分割槽:
root@klausk:/tmp/a# fdisk -l Disk /dev/hda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 1623 13036716 7 HPFS/NTFS /dev/hda2 1624 2103 3855600 8e Linux LVM /dev/hda3 2104 2740 5116702+ 83 Linux /dev/hda4 3000 9729 54058725 5 Extended /dev/hda5 9569 9729 1293232+ 82 Linux swap / Solaris /dev/hda6 3000 4274 10241374+ 83 Linux /dev/hda7 4275 5549 10241406 83 Linux /dev/hda8 5550 6824 10241406 83 Linux /dev/hda9 6825 8099 10241406 83 Linux /dev/hda10 8100 9568 11799711 8e Linux LVM Partition table entries are not in disk order root@klausk:/tmp/a#
現在用 pvcreate 對每個分割槽進行初始化:
清單 2. 分割槽初始化root@klausk:/tmp/a# pvcreate /dev/hda2 /dev/hda10 Physical volume "/dev/hda2" successfully created Physical volume "/dev/hda10" successfully created root@klausk:/tmp/a#
在一個步驟中同時建立 PV 和 VG:vgcreate:
清單 3. 建立 PV 和 VGroot@klausk:~# vgcreate test-volume /dev/hda2 /dev/hda10 Volume group "test-volume" successfully created root@klausk:~#
上面的命令建立一個稱為 test-volume 的邏輯卷,它使用 /dev/hda2 和 /dev/hda10 作為最初的 PV。
在建立 VG test-volume 之後,使用 vgdisplay 命令檢視剛建立的 VG 的基本資訊:
清單 4. 檢視剛建立的 VG 的基本資訊root@klausk:/dev# vgdisplay -v test-volume Using volume group(s) on command line Finding volume group "test-volume" --- Volume group --- VG Name test-volume System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 14.93 GB PE Size 4.00 MB Total PE 3821 Alloc PE / Size 0 / 0 Free PE / Size 3821 / 14.93 GB VG UUID lk8oco-ndQA-yIMZ-ZWhu-LtYX-T2D7-7sGKaV --- Physical volumes --- PV Name /dev/hda2 PV UUID 8LTWlw-p1OJ-dF6w-ZfMI-PCuo-8CiU-CT4Oc6 PV Status allocatable Total PE / Free PE 941 / 941 PV Name /dev/hda10 PV UUID vC9Lwb-wvgU-UZnF-0YcE-KMBb-rCmU-x1G3hw PV Status allocatable Total PE / Free PE 2880 / 2880 root@klausk:/dev#
在清單 4 中,可以看到有兩個 PV 被分配給這個 VG,總大小為 14.93GB,有 3,821 個 4MB 的 PE,這些 PE 都是空閒的!
既然卷組已經準備好了,就可以像使用磁碟一樣用它建立分割槽(LV)、刪除分割槽和重新設定分割槽大小 —— 注意,卷組是一個抽象實體,只有 LVM 工具集能夠看到它們。使用 lvcreate 建立一個新的邏輯卷:
清單 5. 建立新的邏輯卷(分割槽)root@klausk:/# lvcreate -L 5G -n data test-volume Logical volume "data" created root@klausk:/#
清單 5 建立一個名為 data 的 5GB LV。建立這個 LV 之後,可以檢查它的裝置節點:
清單 6. 檢查 LV 的裝置節點root@klausk:/# ls -l /dev/mapper/test--volume-data brw-rw---- 1 root disk 253, 4 2006-11-28 17:48 /dev/mapper/test--volume-data root@klausk:/# ls -l /dev/test-volume/data lrwxrwxrwx 1 root root 29 2006-11-28 17:48 /dev/test-volume/data -> /dev/mapper/test--volume-data root@klausk:/#
還可以用 lvdisplay 命令檢視 LV 的屬性:
清單 7. 檢視 LV 的屬性root@klausk:~# lvdisplay /dev/test-volume/data --- Logical volume --- LV Name /dev/test-volume/data VG Name test-volume LV UUID FZK4le-RzHx-VfLz-tLjK-0xXH-mOML-lfucOH LV Write Access read/write LV Status available # open 0 LV Size 5.00 GB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:4 root@klausk:~#
在這裡可以看到,在實際使用時 LV 的名稱/路徑是 /dev/{VG_name}/{LV_name},比如 /dev/test-volume/data。除了用作 /dev/{VG_name}/{LV_name} 連結的目標之外,不應該在其他地方使用 /dev/mapper/{VG_name}-{LV_name} 檔案。大多數 LVM 命令要求以 /dev/{vg-name}/{lv-name} 格式指定操作的目標。
建立邏輯卷之後,可以使用任何檔案系統對它進行格式化,然後將它掛載在某個掛載點上:
清單 8. 掛載 LVroot@klausk:~# mkfs.reiserfs /dev/test-volume/data root@klausk:~# mkdir /data root@klausk:~# mount -t reiserfs /dev/test-volume/data /data/ root@klausk:~# df -h /data Filesystem Size Used Avail Use% Mounted on /dev/mapper/test--volume-data 5.0G 33M 5.0G 1% /data root@klausk:~#
還可以編輯 fstab(5) 檔案,從而在引導時自動掛載這個檔案系統:
清單 9. 自動掛載 LV#mount Logical Volume 'data' under /data /dev/test-volume/data /data reiserfs defaults 0 2
在實際使用中,邏輯卷的表現就像一個塊裝置,比如可以將它用作資料庫的原始分割槽。實際上,如果希望對資料庫執行一致的備份,那麼使用 LVM 快照是標準的最佳實踐。
擴充套件卷
擴充套件卷是非常容易的。如果卷組中有足夠的空閒空間,那麼只需使用 lvextend 來擴充套件卷,不需要解除安裝它。然後,還要擴充套件邏輯卷中的檔案系統(請記住,它們是兩回事兒)。根據所用檔案系統的不同,也可以進行線上擴充套件(即在掛載狀態下進行擴充套件)。
如果 VG 中沒有足夠的空間,那麼首先需要新增更多的物理磁碟。步驟如下:
- 使用一個物理磁碟建立一個分割槽。建議將分割槽型別改為 0x8e(Linux LVM),這樣便於識別 LVM 分割槽/磁碟。使用 pvcreate 對物理磁碟進行初始化:pvcreate /dev/hda3。
- 然後,使用 vgextend 將它新增到現有的 VG 中:vgextend test-volume /dev/hda2。
還可以同時建立或新增多個物理磁碟:
pvcreate /dev/hda2 /dev/hda3 /dev/hda5 vgextend test-volume /dev/hda2 /dev/hda3 /dev/hda5
新增了 PV 之後,就有了足以擴充套件邏輯卷的空間,就可以使用 lvextend 擴充套件邏輯捲了:lvextend -L 8G /dev/test-volume/data。這個命令將 /dev/test-volume/data LV 的大小擴充套件到 8GB。
lvextend 有一些有用的引數:
- 如果希望讓 LV 增加 5GB,那麼可以使用 -L +5G。
- 可以指定擴充套件部分的位置(也就是,用哪些 PV 提供新的空間);只需將希望使用的 PV 附加在命令後面。
- 還可以以 PE 為單位指定絕對/相對擴充套件大小。
細節參見 lvextend(8)。
在擴充套件 LV 之後,不要忘記擴充套件檔案系統(這樣才能實際使用增加的空間)。根據檔案系統型別,這個操作可以在檔案系統掛載狀態下線上執行。
清單 10 是一個用 resize_reiserfs 重新設定 LV 大小的示例(隨便說一句,可以在掛載的檔案系統上使用這個命令):resize_reiserfs /dev/test-volume/data。
管理卷
為了管理卷,需要知道如何減小 LV 和刪除 PV。
減小邏輯卷
可以按照擴充套件 LV 的方式使用 lvreduce 命令減小 LV。從 LVM 的角度來說,這個操作可以在卷線上的情況下執行;但是,大多數檔案系統不支援縮小線上檔案系統。清單 10 給出這個過程的示例:
#unmount LV umount /path/to/mounted-volume #shrink filesystem to 4G resize_reiserfs -s 4G /dev/test-volume/data #reduce LV lvreduce -L 4G /dev/vg00/test
請注意大小和單位:檔案系統不應該比 LV 大!
刪除物理卷
假設出現了以下情況:一個卷組包含兩個 80GB 的磁碟,希望將它們替換為 160GB 的磁碟。在使用 LVM 時,可以按照新增 PV 的方式從 VG 中刪除 PV(即在線上情況下執行刪除)。但是注意,不能刪除 LV 中正在使用的 PV。對於這些情況,可以使用 pvmove,它可以釋放線上的 PV,這樣就可以輕鬆地替換它們。在熱交換環境中,甚至可以交換所有磁碟,而根本不需要停機!
pvmove 的惟一要求是,VG 中連續空閒區段的數量必須等於要從 PV 中刪除的區段數量。沒有直接判斷連續空閒 PE 的最大數量的簡便方法,但是可以使用 pvdisplay -m 顯示 PV 分配圖:
清單 11. 顯示 PV 分配圖#shows the allocation map pvdisplay -m --- Physical volume --- PV Name /dev/hda6 VG Name test-volume PV Size 4.91 GB / not usable 1.34 MB Allocatable yes (but full) PE Size (KByte) 4096 Total PE 1200 Free PE 0 Allocated PE 1200 PV UUID BA99ay-tOcn-Atmd-LTCZ-2KQr-b4Z0-CJ0FjO --- Physical Segments --- Physical extent 0 to 2367: Logical volume /dev/test-volume/data Logical extents 5692 to 8059 Physical extent 2368 to 2499: Logical volume /dev/test-volume/data Logical extents 5560 to 5691 --- Physical volume --- PV Name /dev/hda7 VG Name test-volume PV Size 9.77 GB / not usable 1.37 MB Allocatable yes PE Size (KByte) 4096 Total PE 2500 Free PE 1220 Allocated PE 1280 PV UUID Es9jwb-IjiL-jtd5-TgBx-XSxK-Xshj-Wxnjni --- Physical Segments --- Physical extent 0 to 1279: Logical volume /dev/test-volume/LV0 Logical extents 0 to 1279 Physical extent 1280 to 2499: FREE
清單 11 顯示有 2,499-1,280 = 1,219 個連續空閒區段,這表示最多能夠將 1,219 個區段從另一個 PV 轉移到 /dev/hda7。
如果希望釋放一個 PV 以便進行替換,那麼最好禁止它的分配,這樣就可以在從卷組中刪除它之前確保它一直是空閒的。在轉移資料之前,執行以下命令:
清單 12. 在釋放之前禁止 PV 的分配#Disable /dev/hda6 allocation pvchange -xn /dev/hda6
釋放之後,PV /dev/hda6 的大小為 1,200 個區段,沒有空閒區段了。使用以下命令將資料轉移出這個 PV:
清單 13. 從釋放的 PV 移出資料#Move allocated extents out of /dev/hda6 pvmove -i 10 /dev/hda6
清單 13 中的 -i 10 引數指示 pvmove 每 10 秒報告一次狀態。根據要轉移的資料量,這個操作可能要花費幾分鐘(甚至幾小時)。還可以使用-b 引數將這個操作轉到後臺執行。在後臺執行的情況下,狀態報告會傳送到系統日誌。
如果沒有足以進行 pvmove 操作的連續空閒區段,那麼可以在 VG 中新增 一個或多個磁碟/分割槽,從而形成 pvmove 所需的連續空間。
其他有用的 LVM 操作
關於下面這些 LVM 操作的細節,請查閱手冊頁:
- pvresize:如果底層分割槽也已經擴充套件了,那麼可以用這個操作擴充套件 PV;如果分配圖允許的話,它也可以縮小 PV。
- pvremove:銷燬 PV(清空它的後設資料)。只有在用 vgreduce 從 VG 中刪除 PV 之後,才能使用這個操作。
- vgreduce:從卷組中刪除未分配的 PV,這會減小 VG。
- vgmerge:將兩個 VG 合併成一個。目標 VG 可以是線上的!
- vgsplit:分割一個卷組。
- vgchange:修改一個 VG 的屬性和許可權。
- lvchange:修改一個 LV 的屬性和許可權。
- lvconvert:線上性卷和映象或快照之間進行轉換。
用快照執行備份
如果在備份過程期間資料沒有發生變化,那麼就能夠獲得一致的備份。如果不在備份期間停止系統,就很難保證資料沒有變化。
Linux LVM 實現了一種稱為快照(Snapshot)的特性,它的作用就像是 “拍攝” 邏輯卷在某一時刻的照片。透過使用快照, 可以獲得同一 LV 的兩個複製 —— 一個可以用於備份,另一個繼續用於日常操作。
快照有兩大優點:
- 快照的建立非常快,不需要停止生產環境。
- 建立兩個複製,但是它們的大小並不一樣。快照使用的空間僅僅是儲存兩個 LV 之間的差異所需的空間。
快照由一個例外列表(exception list)來實現,每當 LV 之間出現差異時就會更新這個列表(正式的說法是 CoW,Copy-on-Write)。
建立新的快照
建立新的快照 LV 也是使用 lvcreate 命令,但是要指定 -s 引數和原來的 LV。在這種情況下,-L size 指定例外列表的大小,這影響快照支援的最大差異量,如果差異超過這個量,就無法保持一致性。
清單 14. 建立快照#create a Snapshot LV called 'snap' from origin LV 'test' lvcreate -s -L 2G -n snap/dev/test-volume/test
可以使用 lvdisplay 查詢特殊資訊,比如 CoW 的大小和使用情況:
清單 15. CoW 的大小和使用情況lvdisplay /dev/vg00/snap --- Logical volume --- LV Name /dev/vg00/snap VG Name vg00 LV UUID QHVJYh-PR3s-A4SG-s4Aa-MyWN-Ra7a-HL47KL LV Write Access read/write LV snapshot status active destination for /dev/vg00/test LV Status available # open 0 LV Size 4.00 GB Current LE 1024 COW-table size 2.00 GB COW-table LE 512 Allocated to snapshot 54.16% Snapshot chunk size 8.00 KB Segments 1 Allocation inherit Read ahead sectors 0 Block device 254:5
清單 15 表明這個 CoW 的大小為 2GB,其中的 54.16 % 已經使用了。
對於所有日常操作,快照看起來就是 原 LV 的一個複製。如果已經建立了檔案系統的話,可以用以下命令掛載它:
#mount snapshot volume mount -o ro /dev/test-volume/test /mnt/snap
在這個命令中,ro 標誌表示將它掛載為只讀的。可以在 lvcreate 命令後面加上 -p r,這樣就在 LVM 級將它設定為只讀的。
掛載檔案系統之後,就可以用 tar、rsync 或其他備份工具執行備份。如果 LV 不包含檔案系統,或者需要原始備份,那麼也可以在這個裝置節點上直接使用 dd。
複製過程完成之後,就不需要快照了,這時只需用 lvremove 解除安裝並銷燬它:
#remove snapshot lvremove /dev/test-volume/snap
如果資料庫建立在 LV 上,並且需要一個一致的備份,那麼一定要重新整理表並在獲得讀取鎖(read-lock)的情況下建立快照卷(見下面的虛擬碼):
SQL> flush tables read lock {create Snapshot} SQL> release read lock {start copy process from the snapshot LV}
備份指令碼示例
清單 16 中的指令碼直接取自我的膝上型電腦,我在這個指令碼中使用 rsync 向一臺遠端伺服器執行每日備份。這個指令碼並不適合企業環境;在企業環境中,帶歷史記錄的增量備份更合適,但概念是相同的。
清單 16. 簡單的備份指令碼示例#!/bin/sh # we need the dm-snapshot module modprobe dm-snapshot if [ -e /dev/vg00/home-snap ] then # remove left-overs, if any umount -f /mnt/home-snap && true lvremove -f /dev/vg00/home-snap fi # create snapshot, 1GB CoW space # that should be sufficient for accommodating changes during copy lvcreate -vs -p r -n home-snap -L 1G /dev/vg00/home mkdir -p /mnt/home-snap # mount recently-created snapshot as read-only mount -o ro /dev/vg00/home-snap /mnt/home-snap # magical rsync command__rsync -avhzPCi --delete -e "ssh -i /home/klausk/.ssh/id_rsa" \ --filter '- .Trash/' --filter '- *~' \ --filter '- .local/share/Trash/' \ --filter '- *.mp3' --filter '- *Cache*' --filter '- *cache*' \ /mnt/home-snap/klausk klausk2@pokgsa.ibm.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it :bkp/ # unmount and scrap snapshot LV umount /mnt/home-snap lvremove -f /dev/vg00/home-snap
在某些特殊情況下,無法估計備份週期或者複製過程很長,那麼指令碼可以用 lvdisplay 查詢 Snapshot CoW 的使用情況並根據需要擴充套件這個 LV。在極端情況下, 可以讓快照與原 LV 同樣大 —— 這樣就不需要執行查詢,因為變化量不會比整個卷更大!
其他 LVM2 系統管理技巧
最後, 我要介紹一些可以用 LVM2 執行的系統管理任務,包括按需虛擬化、用映象提高容錯能力以及透明地對塊裝置執行加密。
快照和虛擬化
在使用 LVM2 時,快照可以不是隻讀的。這意味著,在建立快照之後, 可以像常規塊裝置一樣掛載和讀寫快照。
因為流行的虛擬化系統(比如 Xen、VMWare、Qemu 和 KVM)可以將塊裝置用作 guest 映像,所以可以建立這些映像的完整複製,並根據需要使用它們,它們就像是記憶體佔用量很低的虛擬機器。這樣做的好處是部署迅速(建立快照的時間常常不超過幾秒)和節省空間(guest 共享原映像的大多數資料)。
設定的步驟如下:
- 為原映像建立一個邏輯卷。
- 使用這個 LV 作為磁碟映像安裝 guest 虛擬機器。
- 暫停這個虛擬機器。記憶體映像可以是一個常規檔案,所有其他快照都放在裡面。
- 為原 LV 建立一個可讀寫的快照。
- 使用快照卷作為磁碟映像生成一個新的虛擬機器。如果需要的話,要修改網路/控制檯設定。
- 登入已經建立的虛擬機器,修改網路設定/主機名。
完成這些步驟之後, 就可以讓使用者訪問剛建立的虛擬機器了。如果需要另一個虛擬機器,那麼只需重複步驟 4 到 6(所以不需要重新安裝虛擬機器)。還可以用一個指令碼自動執行這些步驟。
在使用完虛擬機器之後, 可以停止虛擬機器並銷燬快照。
更好的容錯能力
最近的 LVM2 開發成果為邏輯卷提供了高可用性。邏輯卷可以有兩個或更多的映象,映象可以放在不同的物理卷(或不同的裝置)上。當在裝置上發現 I/O 錯誤時,可以使用 dmeventd 讓一個 PV 離線,而不會影響服務。更多資訊請參考 lvcreate(8)、lvconvert(8) 和 lvchange(8)手冊頁。
如果硬體能夠支援的話,可以用 dm_multipath 透過不同的通道訪問同一裝置,這樣的話在一個通道發生故障時,可以轉移到另一個通道。更多細節請參考 dm_multipath 和 multipathd 的文件。
透明的裝置加密
可以用 dm_crypt 對塊裝置或邏輯卷執行透明的加密。更多資訊請參考 dm_crypt 的文件和 cryptsetup(8) 手冊頁。
About Me
...............................................................................................................................
● 本文整理自網路
● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2142546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AIX儲存管理基本概念和操作(一)AI
- AIX System Administration之儲存管理、LVM、FS(一)AILVM
- AIX儲存管理(一)概述AI
- AIX儲存管理(二)物理卷管理AI
- AIX儲存管理(三)卷組管理AI
- AIX儲存、LVM與檔案系統(一)AILVM
- aix儲存概念要素AI
- 儲存管理
- 自動儲存、靜態儲存和動態儲存
- EMC 儲存管理
- redhat儲存管理Redhat
- AIX重新認儲存步驟AI
- 儲存管理(一):openfiler介紹及儲存理解
- 塊儲存 檔案儲存 物件儲存物件
- 【儲存管理】日誌管理
- 大資料的儲存和管理大資料
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- 管理儲存過程儲存過程
- Ceph儲存池管理
- Android-內部儲存和外部儲存Android
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- java操作儲存過程Java儲存過程
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 【儲存管理】SAN儲存 Storage Area Network 儲存區域網路 學習筆記筆記
- 行式儲存 列式儲存
- 儲存—物件儲存_Minio物件
- 轉 儲存的一些基本概念
- IBM儲存管理卷管理IBM
- 儲存類別和記憶體管理記憶體
- IBM DS8700儲存維護和管理二:儲存空間劃分IBM
- Android內部儲存和外部儲存,以及讀取Android讀取RAM,ROM內部儲存和外部儲存卡容量Android
- UDEV管理RAC共享儲存dev
- MYSQL儲存過程管理MySql儲存過程
- docker儲存配置與管理Docker
- 003.DirectPV儲存管理
- MyISAM 儲存引擎,Innodb 儲存引擎儲存引擎
- 資料儲存--檔案儲存
- 配置儲存和工具