【儲存】AIX儲存管理基本概念和操作(LVM)

lhrbest發表於2017-07-25




















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)的檔案系統呢?

圖 1. 物理到邏輯的對映 物理到邏輯的對映

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 和 VG
root@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. 掛載 LV
root@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 給出這個過程的示例:

清單 10. 減小 LV
#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 的兩個複製 —— 一個可以用於備份,另一個繼續用於日常操作。

快照有兩大優點:

  1. 快照的建立非常快,不需要停止生產環境。
  2. 建立兩個複製,但是它們的大小並不一樣。快照使用的空間僅僅是儲存兩個 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 級將它設定為只讀的。

掛載檔案系統之後,就可以用 tarrsync 或其他備份工具執行備份。如果 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 共享原映像的大多數資料)。

設定的步驟如下:

  1. 為原映像建立一個邏輯卷。
  2. 使用這個 LV 作為磁碟映像安裝 guest 虛擬機器。
  3. 暫停這個虛擬機器。記憶體映像可以是一個常規檔案,所有其他快照都放在裡面。
  4. 為原 LV 建立一個可讀寫的快照。
  5. 使用快照卷作為磁碟映像生成一個新的虛擬機器。如果需要的話,要修改網路/控制檯設定。
  6. 登入已經建立的虛擬機器,修改網路設定/主機名。

完成這些步驟之後, 就可以讓使用者訪問剛建立的虛擬機器了。如果需要另一個虛擬機器,那麼只需重複步驟 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群,學習最實用的資料庫技術。

【儲存】AIX儲存管理基本概念和操作(LVM)
DBA筆試面試講解
歡迎與我聯絡

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2142546/,如需轉載,請註明出處,否則將追究法律責任。

相關文章