LVM 為你配置存儲的方式提供了極大的靈活性。
邏輯卷管理器(LVM)允許在操作系統和硬件之間建立一個抽象層。通常,你的操作系統會查找磁盤(/dev/sda
、/dev/sdb
等)和這些磁盤中的分區(/dev/sda1
、/dev/sdb1
等)。
LVM 在操作系統和磁盤之間創建了一個虛擬層。LVM 不是一個驅動器持有一定數量的分區,而是創建一個統一的存儲池(稱為卷組),跨越任意數量的物理驅動器(稱為物理卷)。使用卷組中可用的存儲,LVM 可以為你的操作系統提供類似磁盤和分區的功能。
操作系統完全沒有意識到它被“欺騙”了。
Drive space
由于 LVM 虛擬地創建卷組和邏輯卷,因此即使在系統運行時,也可以輕松調整它們的大小或移動它們,或者創建新卷。此外,LVM 提供了其它情況下不存在的特性,比如創建邏輯卷的活動快照時無需首先卸載磁盤。
LVM 中的卷組是一個命名的虛擬容器,將底層物理磁盤組合在一起。它充當一個池,可以從中創建不同大小的邏輯卷。邏輯卷包含實際的文件系統并且可以跨越多個磁盤,并且不需要物理上連續。
特性
-
分區名稱通常具有系統名稱,例如
/dev/sda1
。LVM 具有便于人們理解的名稱,例如home
或者media
。 - 分區的總大小受底層物理磁盤大小的限制。在 LVM 中,卷可以跨越多個磁盤,并且僅受 LVM 中所有物理磁盤總大小的限制。
- 分區通常只有在磁盤未使用且已卸載時才能調整大小、移動或刪除。LVM 卷可以在系統運行時進行操作。
- 只能通過分配與分區相鄰的可用空間來擴展分區。LVM 卷可以從任何地方占用可用空間。
- 擴展分區涉及移動數據以騰出可用空間,這非常耗時,并且可能會在斷電期間導致數據丟失。LVM 卷可以從卷組中的任何地方占用可用空間,甚至可以在另一塊磁盤上。
- 因為在 LVM 中創建卷非常容易,所以它鼓勵創建不同的卷,例如創建單獨的卷來測試功能或嘗試不同的操作系統。對于分區,此過程將非常耗時并且容易出錯。
- 快照只能在 LVM 中創建。它允許你創建當前邏輯卷的時間點鏡像,即使在系統運行時也可以。這非常適合備份。
測試設置
作為演示,假設你的系統具有以下驅動器配置:
-
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
-
xvda 202:0 0 8G 0 disk
-
`-xvda1 202:1 0 8G 0 part /
-
xvdb 202:16 0 1G 0 disk
-
xvdc 202:32 0 1G 0 disk
-
xvdd 202:48 0 2G 0 disk
-
xvde 202:64 0 5G 0 disk
-
xvdf 202:80 0 8G 0 disk
步驟 1. 初始化磁盤以用于 LVM
運行 pvcreate /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf
。輸出應如下:
-
Physical volume "/dev/xvdb" successfully created
-
Physical volume "/dev/xvdc" successfully created
-
Physical volume "/dev/xvdd" successfully created
-
Physical volume "/dev/xvde" successfully created
-
Physical volume "/dev/xvdf" successfully created
使用 pvs
或者 pvdisplay
查看結果:
-
"/dev/xvde" is a new physical volume of "5.00 GiB"
-
--- NEW Physical volume ---
-
PV Name /dev/xvde
-
VG Name
-
PV Size 5.00 GiB
-
Allocatable NO
-
PE Size 0
-
Total PE 0
-
Free PE 0
-
Allocated PE 0
-
PV UUID 728JtI-ffZD-h2dZ-JKnV-8IOf-YKdS-8srJtn
-
"/dev/xvdb" is a new physical volume of "1.00 GiB"
-
--- NEW Physical volume ---
-
PV Name /dev/xvdb
-
VG Name
-
PV Size 1.00 GiB
-
Allocatable NO
-
PE Size 0
-
Total PE 0
-
Free PE 0
-
Allocated PE 0
-
PV UUID zk1phS-7uXc-PjBP-5Pv9-dtAV-zKe6-8OCRkZ
-
"/dev/xvdd" is a new physical volume of "2.00 GiB"
-
--- NEW Physical volume ---
-
PV Name /dev/xvdd
-
VG Name
-
PV Size 2.00 GiB
-
Allocatable NO
-
PE Size 0
-
Total PE 0
-
Free PE 0
-
Allocated PE 0
-
PV UUID R0I139-Ipca-KFra-2IZX-o9xJ-IW49-T22fPc
-
"/dev/xvdc" is a new physical volume of "1.00 GiB"
-
--- NEW Physical volume ---
-
PV Name /dev/xvdc
-
VG Name
-
PV Size 1.00 GiB
-
Allocatable NO
-
PE Size 0
-
Total PE 0
-
Free PE 0
-
Allocated PE 0
-
PV UUID FDzcVS-sq22-2b13-cYRj-dXHf-QLjS-22Meae
-
"/dev/xvdf" is a new physical volume of "8.00 GiB"
-
--- NEW Physical volume ---
-
PV Name /dev/xvdf
-
VG Name
-
PV Size 8.00 GiB
-
Allocatable NO
-
PE Size 0
-
Total PE 0
-
Free PE 0
-
Allocated PE 0
-
PV UUID TRVSH9-Bo5D-JHHb-g0NX-8IoS-GG6T-YV4d0p
步驟 2. 創建卷組
運行 vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf
。通過 vgs
或者 vgdisplay
查看結果:
-
--- Volume group ---
-
VG Name myvg
-
System ID
-
Format lvm2
-
Metadata Areas 5
-
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 5
-
Act PV 5
-
VG Size 16.98 GiB
-
PE Size 4.00 MiB
-
Total PE 4347
-
Alloc PE / Size 0 / 0
-
Free PE / Size 4347 / 16.98 GiB
-
VG UUID ewrrWp-Tonj-LeFa-4Ogi-BIJJ-vztN-yrepkh
步驟 3: 創建邏輯卷
運行以下命令:
-
lvcreate myvg --name media --size 4G
-
lvcreate myvg --name home --size 4G
使用 lvs
或者 lvdisplay
驗證結果:
-
--- Logical volume ---
-
LV Path /dev/myvg/media
-
LV Name media
-
VG Name myvg
-
LV UUID LOBga3-pUNX-ZnxM-GliZ-mABH-xsdF-3VBXFT
-
LV Write Access read/write
-
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:15 +0000
-
LV Status available
-
# open 0
-
LV Size 4.00 GiB
-
Current LE 1024
-
Segments 1
-
Allocation inherit
-
Read ahead sectors auto
-
- currently set to 256
-
Block device 252:0
-
--- Logical volume ---
-
LV Path /dev/myvg/home
-
LV Name home
-
VG Name myvg
-
LV UUID Hc06sl-vtss-DuS0-jfqj-oNce-qKf6-e5qHhK
-
LV Write Access read/write
-
LV Creation host, time ip-10-0-5-236, 2017-02-03 05:29:40 +0000
-
LV Status available
-
# open 0
-
LV Size 4.00 GiB
-
Current LE 1024
-
Segments 1
-
Allocation inherit
-
Read ahead sectors auto
-
- currently set to 256
-
Block device 252:1
步驟 4: 創建文件系統
使用以下命令創建文件系統:
-
vgcreate myvg /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvde /dev/xvdf
-
mkfs.ext3 /dev/myvg/media
-
mkfs.ext3 /dev/myvg/home
掛載它:
-
mount /dev/myvg/media /media
-
mount /dev/myvg/home /home
使用 lsblk
命令查看完整配置:
-
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
-
xvda 202:0 0 8G 0 disk
-
`-xvda1 202:1 0 8G 0 part /
-
xvdb 202:16 0 1G 0 disk
-
xvdc 202:32 0 1G 0 disk
-
xvdd 202:48 0 2G 0 disk
-
xvde 202:64 0 5G 0 disk
-
`-myvg-media 252:0 0 4G 0 lvm /media
-
xvdf 202:80 0 8G 0 disk
-
`-myvg-home 252:1 0 4G 0 lvm /home
步驟 5: 擴展 LVM
添加一塊新的 /dev/xvdg
磁盤。要擴展 home
卷,運行以下命令:
-
pvcreate /dev/xvdg
-
vgextend myvg /dev/xvdg
-
lvextend -l 100%FREE /dev/myvg/home
-
resize2fs /dev/myvg/home
運行 df -h
,你應該可以看到新的磁盤大小。
就是這樣!
LVM 為你配置存儲的方式提供了極大的靈活性。嘗試一下,并享受 LVM 的樂趣!
原文鏈接:https://linux.cn/article-14080-1.html