使用 LVM 添加存储

LVM 使得您在配置存储时具有极大的灵活性。
52 位读者喜欢这个。
Storage units side by side

Scott Meyers。由 Opensource.com 修改。CC BY-SA 2.0。

逻辑卷管理器 (LVM) 允许在操作系统和硬件之间创建一个抽象层。通常,您的操作系统查找磁盘(/dev/sda/dev/sdb 等)以及这些磁盘内的分区(/dev/sda1/dev/sdb1 等)。

在 LVM 中,操作系统和磁盘之间创建了一个虚拟层。LVM 不是由一个驱动器容纳一些分区,而是创建一个统一的存储池(称为卷组),该存储池跨越任意数量的物理驱动器(称为物理卷)。LVM 使用卷组中可用的存储空间,向您的操作系统提供看起来像是磁盘和分区的东西。

而操作系统完全没有意识到它被“欺骗”了。

由于 LVM 虚拟地创建卷组和逻辑卷,因此即使在系统运行时,也可以轻松地调整大小或移动它们,或创建新卷。此外,LVM 还提供其他情况下不存在的功能,例如创建逻辑卷的实时快照,而无需先卸载磁盘。

LVM 中的卷组是一个命名的虚拟容器,它将底层的物理磁盘组合在一起。它充当一个池,可以从中创建不同大小的逻辑卷。逻辑卷包含实际的文件系统,可以跨越多个磁盘,并且不需要物理上连续。

特性

  • 分区名称通常具有系统指定,例如 /dev/sda1。LVM 卷具有正常人类可理解的名称,例如 homemedia
  • 分区的总大小受底层物理磁盘大小的限制。在 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

使用 pvspvdisplay 查看结果

"/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。使用 vgsvgdisplay 查看结果

--- 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

使用 lvslvdisplay 验证结果

--- 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:创建文件系统

使用以下命令创建文件系统

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://ayushsharma.in
我是一名作家和 AWS 解决方案架构师。我与初创公司和企业合作进行软件工程、DevOps、SRE 和云架构。我在 https://ayushsharma.in 上撰写我的经验。

1 条评论

感谢这篇文章!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.