LVM概念、术语和操作介绍

引言

逻辑卷管理(LVM)是一种存储设备管理技术,使用户能够对组件存储设备的物理布局进行汇集和抽象,以进行灵活的管理。利用设备映射器Linux内核框架,当前版本LVM2可以将现有存储设备集合成组,并根据需要分配逻辑单元。

LVM的主要优势在于更高级别的抽象、灵活性和控制。逻辑卷可以拥有有意义的命名,比如“数据库”或“根备份”。卷还可以根据空间需求动态调整大小,并在运行中在物理设备之间迁移或导出。LVM还提供了诸如快照、条带化和镜像等高级功能。

在本指南中,您将学习LVM的工作原理,并练习基本命令,以便在裸金属机器上快速启动并运行。

逻辑卷管理(LVM)架构和术语的解释

在深入研究LVM管理命令之前,了解LVM如何组织存储设备以及它使用的一些术语是非常重要的。

LVM存储管理结构

LVM通过在物理存储设备之上构建抽象层来实现功能。LVM使用的基本层次,从最原始开始,分别是:

  • Physical Volumes: The LVM utility prefix for physical volumes is pv…. This physicallyl blocks devices or other disk-like devices (for example, other devices created by device mapper, like RAID arrays) and are used by LVM as the raw building material for higher levels of abstraction. Physical volumes are regular storage devices. LVM writes a header to the device to allocate it for management.
  • Volume Groups: The LVM utility prefix for volume groups is vg….
    LVM combines physical volumes into storage pools known as volume groups. Volume groups abstract the characteristics of the underlying devices and function as a unified logical device with combined storage capacity of the component physical volumes.
  • Logical Volumes: The LVM utility prefix for logical volumes is lv…, generic LVM utilities might begin with lvm…. A volume group can be sliced up into any number of logical volumes. Logical volumes are functionally equivalent to partitions on a physical disk, but with much more flexibility. Logical volumes are the primary component that users and applications will interact with.

LVM可以将物理卷合并为卷组,以统一系统上可使用的存储空间。然后,管理员可以将卷组分割为任意的逻辑卷,作为灵活的分区。

理解程度

同一个卷组中的每个卷都被分成固定大小的小块,被称为extent。extent的大小由卷组确定,所有卷都遵循相同的extent大小。

物理卷上的范围被称为物理范围,而逻辑卷上的范围被称为逻辑范围。逻辑卷是LVM在逻辑与物理范围之间维护的映射。由于这种关系,范围大小代表了LVM可以分配的最小空间量。

逻辑卷管理(LVM)的灵活性和强大性主要归功于逻辑区块(extents)。LVM呈现的逻辑区块作为一个统一的设备,不必与连续的物理区块一一对应。LVM可以在不影响用户的情况下复制和重新组织组成逻辑卷的物理区块。通过添加或移除区块,逻辑卷还可以扩展或缩小。

常见使用情况

现在你对LVM使用的一些术语和结构很熟悉,你可以探索一些常见的LVM使用方法。你将开始使用两个物理磁盘来创建四个逻辑卷的过程。

将物理设备标记为物理卷

开始通过扫描系统来查找LVM可以访问和管理的块设备。您可以使用以下命令来完成这个操作:

  1. sudo lvmdiskscan

 

输出将返回LVM可以与之交互的所有可用块设备。

Output

/dev/ram0 [ 64.00 MiB] /dev/sda [ 200.00 GiB] /dev/ram1 [ 64.00 MiB] . . . /dev/ram15 [ 64.00 MiB] /dev/sdb [ 100.00 GiB] 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

在这个例子中,请注意当前有两个硬盘和17个分区。这些分区主要是/dev/ram*分区,用作系统的RAM磁盘以提升性能。在这个例子中,硬盘是/dev/sda,拥有200G的空间,以及/dev/sdb,拥有100G的空间。

Warning

警告:请务必仔细检查您打算与逻辑卷管理器一起使用的设备上是否已经存有任何重要数据。使用这些设备时,逻辑卷管理器将覆盖当前内容。如果您的服务器上有重要数据,请在继续之前备份数据。

现在,您已经了解到您想要使用的物理设备,可以使用pvcreate命令将其标记为LVM中的物理卷。

  1. sudo pvcreate /dev/sda /dev/sdb

 

Output

Physical volume “/dev/sda” successfully created Physical volume “/dev/sdb” successfully created

这将在设备上写入一个LVM头,表示它们已经准备好被添加到卷组。

运行pvs命令来验证LVM是否已注册物理卷。

  1. sudo pvs

 

Output

PV VG Fmt Attr PSize PFree /dev/sda lvm2 — 200.00g 200.00g /dev/sdb lvm2 — 100.00g 100.00g

请注意,这两个设备都在PV列下,PV代表物理卷。

将物理卷添加到卷组中

现在您已经从您的设备创建了物理卷,您可以创建卷组。大多数情况下,每个系统只有一个卷组,以便在分配方面获得最大的灵活性。以下卷组示例被命名为LVMVolGroup。您可以自由选择您的卷组名称。

运行以下命令来创建卷组并将您的两个物理卷添加到其中:

  1. sudo vgcreate LVMVolGroup /dev/sda /dev/sdb

 

Output

Volume group “LVMVolGroup” successfully created

再次检查pvs输出将会显示您的物理卷现已与新的卷组相关联。

  1. sudo pvs

 

Output

PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a– 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a– 100.00g 100.00g

使用vgs命令列出卷组的简要摘要:

  1. sudo vgs

 

Output

VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz–n- 299.99g 299.99g

你的卷组目前有两个物理卷,零个逻辑卷,并且拥有底层设备的综合容量。

从卷组池中创建逻辑卷。

现在您有一个可用的卷组,您可以将其用作分配逻辑卷的池。与传统的分区不同,使用逻辑卷时,您不需要了解卷的布局,因为逻辑卷管理器(LVM)会为您映射和处理这些。您只需提供卷的大小和名称即可。

在下面的示例中,您将从您的卷组中创建四个单独的逻辑卷。

  • 10G “projects” volume
  • 5G “www” volume for web content
  • 20G “db” volume for a database
  • “workspace” volume that will fill the remaining space

为了创建逻辑卷,请使用lvcreate命令。您必须传入要提取的卷组,并可以使用-n选项为逻辑卷命名。要直接指定大小,您可以使用-L选项。如果您希望按扩展数指定大小,可以使用-l选项。

使用-L选项创建前三个逻辑卷。

  1. sudo lvcreate -L 10G -n projects LVMVolGroup
  2. sudo lvcreate -L 5G -n www LVMVolGroup
  3. sudo lvcreate -L 20G -n db LVMVolGroup

 

Output

Logical volume “projects” created. Logical volume “www” created. Logical volume “db” created.

通过从vgs命令中选择自定义输出,您可以查看逻辑卷及其与卷组之间的关系。

  1. sudo vgs -o +lv_size,lv_name

 

Output

VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz–n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz–n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz–n- 299.99g 264.99g 20.00g db

在这个例子中,你将输出的最后两列相加。它表示了分配给你的逻辑卷的空间大小。

现在,您可以使用”-l”标志将卷组中的其余空间分配给”workspace”卷,在这里,可以使用扩展单元进行操作。您还可以提供一个百分比和一个单位来更好地传达您的意图。在这个例子中,分配剩余的可用空间,因此可以传入100%FREE。

  1. sudo lvcreate -l 100%FREE -n workspace LVMVolGroup

 

Output

Logical volume “workspace” created.

通过使用定制的vgs命令来检查卷组信息,注意到您已经使用完了所有可用空间。

  1. sudo vgs -o +lv_size,lv_name

 

Output

VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz–n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz–n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz–n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz–n- 299.99g 0 264.99g workspace

工作空间分区已创建,并且LVMVolGroup卷组已完全分配。

格式化和挂载逻辑卷

现在你有了逻辑卷,可以像普通块设备一样使用它们。

逻辑设备可以在/dev目录中找到,就像其他存储设备一样。您可以在两个地方访问它们。

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

要使用Ext4文件系统格式化你的四个逻辑卷,请运行以下命令:

  1. sudo mkfs.ext4 /dev/LVMVolGroup/projects
  2. sudo mkfs.ext4 /dev/LVMVolGroup/www
  3. sudo mkfs.ext4 /dev/LVMVolGroup/db
  4. sudo mkfs.ext4 /dev/LVMVolGroup/workspace

 

另外,您还可以运行以下内容:

  1. sudo mkfs.ext4 /dev/mapper/LVMVolGroupprojects
  2. sudo mkfs.ext4 /dev/mapper/LVMVolGroupwww
  3. sudo mkfs.ext4 /dev/mapper/LVMVolGroupdb
  4. sudo mkfs.ext4 /dev/mapper/LVMVolGroupworkspace

 

格式化后,创建挂载点。

  1. sudo mkdir -p /mnt/{projects,www,db,workspace}

 

然后将逻辑卷挂载到适当的位置上。

  1. sudo mount /dev/LVMVolGroup/projects /mnt/projects
  2. sudo mount /dev/LVMVolGroup/www /mnt/www
  3. sudo mount /dev/LVMVolGroup/db /mnt/db
  4. sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

 

为了使挂载点持久化,使用您偏好的文本编辑器将其添加到/etc/fstab文件中。以下示例使用nano:

  1. sudo nano /etc/fstab

 

只需要一种选项。请将”/etc/fstab”翻译为中文。
. . .

/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

编辑完文件后,保存并退出。如果你正在使用nano,按下Ctrl+c,然后按y,最后按下回车键。

操作系统应该在启动时自动挂载LVM逻辑卷。

结论

现在你已经理解了LVM管理的各种组件,如何创建灵活的存储系统以及如何在LVM设置中启动和运行存储设备。

要了解更多关于使用LVM的信息,请查看我们关于在Ubuntu 18.04上使用LVM的指南。

广告
将在 10 秒后关闭
bannerAds