LVM概念、术语和操作简介

介绍

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

LVM 的主要优点包括增加的抽象化、灵活性和控制性。逻辑卷可以具有有意义的名称,如“数据库”或“根备份”。卷还可以根据空间需求的变化动态调整大小,并在运行系统内在物理设备之间迁移或导出。LVM 还提供了诸如快照、分带和镜像等高级功能。

在本指南中,您将了解 LVM 的工作原理,并练习一些基本命令,快速在裸机上运行起来。

LVM 结构和术语

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

LVM 存储管理结构

LVM通过在物理存储设备之上叠加抽象层来实现其功能。LVM使用的基本层次,从最原始的开始,依次为:

  • 物理卷:物理卷的LVM实用程序前缀是pv...。这些物理块设备或其他类似磁盘的设备(例如,由设备映射器创建的其他设备,如RAID阵列)被LVM用作更高层次抽象的原始构建材料。物理卷是常规存储设备,LVM会在设备上写入标头以进行管理。

  • 卷组:卷组的LVM实用程序前缀是vg...。LVM将物理卷组合成称为卷组的存储池。卷组抽象了底层设备的特性,并作为具有组件物理卷合并存储容量的统一逻辑设备。

  • 逻辑卷:逻辑卷的 LVM 实用程序前缀是 `lv...`,通用 LVM 实用程序可能以 `lvm...` 开头。卷组可以被切割成任意数量的逻辑卷。逻辑卷在功能上相当于物理磁盘上的分区,但具有更灵活的特性。逻辑卷是用户和应用程序将要与之交互的主要组件。

LVM 可用于将物理卷组合成卷组,以统一系统上可用的存储空间。随后,管理员可以将卷组分割成任意的逻辑卷,这些逻辑卷充当灵活的分区。

了解 Extents

每个卷组中的每个卷都被分割成称为extents(区段)的小固定大小块。 Extents的大小由卷组确定。组内的所有卷都符合相同的extent大小。

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

Extents是LVM灵活性和强大性的基础。LVM呈现的逻辑extents作为一个统一的设备,它们不必映射到连续的物理extents。LVM可以复制和重新组织组成逻辑卷的物理extents,而不会对用户造成任何中断。逻辑卷还可以通过向卷添加extents或从卷中删除extents来扩展或收缩。

常见用例

现在您对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个分区。这些分区主要是用作系统中的RAM磁盘以提高性能的/dev/ram*分区。此示例中的磁盘是/dev/sda,拥有200G的空间,和/dev/sdb,拥有100G。

警告:确保仔细检查您打算与 LVM 一起使用的设备上没有已经写入的重要数据。在 LVM 中使用这些设备将覆盖当前内容。如果您的服务器上有重要数据,请在继续之前备份。

现在您知道要使用的物理设备,请使用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列下,该列代表物理卷。

将物理卷添加到卷组

现在,您已经从您的设备创建了物理卷,您可以创建一个卷组。在大多数情况下,每个系统通常只有一个卷组,以实现最大的灵活性分配。以下卷组示例命名为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“项目”卷
  • 5G“www”卷用于Web内容
  • 20G“db”卷用于数据库
  • “工作空间”卷,将填充剩余空间

要创建逻辑卷,请使用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"卷,该标志按照extent工作。您还可以提供百分比和单位以更好地表达您的意图。在这个例子中,分配剩余的可用空间,因此您可以传入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

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/LVMVolGroup-projects
  2. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
  3. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
  4. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

格式化后,创建挂载点:

  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,然后ENTER

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

结论

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

要了解更多关于使用LVM的信息,请查阅我们的Ubuntu 18.04中使用LVM的指南

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations