LVM 概念、术语和操作简介

简介

LVM,即逻辑卷管理,是一种存储设备管理技术,它使用户能够池化和抽象组件存储设备的物理布局,以实现灵活管理。利用Device mapperLINUX内核框架,当前版本LVM2可用于将现有存储设备收集到组中,并根据需要从组合空间中分配逻辑单元。

LVM的主要优势是提高了抽象性、灵活性和可控性。逻辑卷可以具有有意义的名称,如数据库根备份。卷还可以随着空间需求的变化而动态调整大小,并在正在运行的系统的池中的物理设备之间迁移或导出。LVM还提供快照、条带化和镜像等高级功能。

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

LVM架构和术语

在深入研究LVM管理命令之前,有必要对LVM如何组织存储设备及其使用的一些术语有一个基本的了解。

LVM存储管理结构

LVM通过在物理存储设备上对抽象进行分层来发挥作用。LVM使用的基本层(从最原始的开始)是:

  • 物理卷 :物理卷的LVM实用程序前缀为pv...。这种物理形式阻止了设备或其他类似磁盘的设备(例如,由设备映射器创建的其他设备,如RAID阵列),并被LVM用作更高级别抽象的原始构建材料。物理卷是常规存储设备。LVM向设备写入报头,以将其分配用于管理。
  • 卷组 :卷组的LVM工具前缀为vg...

LVM将物理卷组合到称为卷组的存储池中。卷组抽象底层设备的特征,并充当具有组件物理卷的组合存储容量的统一逻辑设备。

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

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

了解扩展区

卷组中的每个卷都被分割成大小固定的小块,称为_extents_。区的大小由卷组确定。组中的所有卷都符合相同的数据区大小。

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

区段是LVM的大部分灵活性和强大功能的背后。由LVM表示为统一设备的逻辑盘区不必映射到连续的物理盘区。LVM可以复制和重组组成逻辑卷的物理区段,而不会对用户造成任何中断。还可以通过向卷添加区段或从中删除区段来扩展或缩小逻辑卷。

常见用例

现在您已经熟悉了LVM使用的一些术语和结构,接下来可以探索使用LVM的一些常见方法。您将从使用两个物理磁盘形成四个逻辑卷的过程开始。

将物理设备标记为物理卷

首先扫描系统,查找LVM可以访问和管理的块设备。您可以使用以下命令执行此操作:

1sudo lvmdiskscan

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

 1[secondary_label Output]
 2 /dev/ram0 [   64.00 MiB] 
 3 /dev/sda  [   200.00 GiB] 
 4 /dev/ram1 [   64.00 MiB] 
 5
 6 . . .
 7
 8 /dev/ram15 [   64.00 MiB] 
 9 /dev/sdb  [   100.00 GiB] 
10 2 disks
11 17 partitions
12 0 LVM physical volume whole disks
13 0 LVM physical volumes

在本例中,请注意当前有两个磁盘和17个分区。这些分区大多是/dev/ram* 分区,在系统中用作内存disk]来增强性能。本例中的磁盘为/dev/sda,表示200G空间;/dev/sdb,表示100G。

<$>[警告] 警告 :请务必仔细检查您要与LVM配合使用的设备是否已写入任何重要数据。在LVM中使用这些设备将覆盖当前内容。如果您的服务器上有重要数据,请在继续之前进行备份。 <$>

现在您知道了要使用的物理设备,使用pvcreate命令将它们标记为LVM中的物理卷:

1sudo pvcreate /dev/sda /dev/sdb
1[secondary_label Output]
2 Physical volume "/dev/sda" successfully created
3 Physical volume "/dev/sdb" successfully created

这将向设备写入一个LVM标头,以指示它们已准备好添加到卷组。

通过运行pvs验证LVM是否已注册物理卷:

1sudo pvs
1[secondary_label Output]
2 PV VG Fmt Attr PSize PFree 
3 /dev/sda lvm2 --- 200.00g 200.00g
4 /dev/sdb lvm2 --- 100.00g 100.00g

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

将物理卷添加到卷组

现在,您已经从设备创建了物理卷,接下来可以创建卷组了。大多数情况下,每个系统只有一个卷组,以实现最大的分配灵活性。下面的卷组示例命名为LVMVolGroup。您可以随心所欲地命名卷组。

要创建卷组并向其中添加两个物理卷,请运行以下命令:

1sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
1[secondary_label Output]
2 Volume group "LVMVolGroup" successfully created

再次检查pvs输出将表明您的物理卷现在与新的卷组相关联:

1sudo pvs
1[secondary_label Output]
2 PV VG Fmt Attr PSize PFree 
3 /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
4 /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

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

1sudo vgs
1[secondary_label Output]
2 VG     #PV #LV #SN Attr VSize VFree 
3 LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

您的卷组当前有两个物理卷,零个逻辑卷,并且具有基础设备的组合容量。

从卷组池创建逻辑卷

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

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

  • 10 G项目
  • 5Gwww卷的网络内容
  • 数据库的20 Gdb
  • 将填充剩余空间的工作空间

要创建逻辑卷,请使用lvcreate命令。您必须传入要从中拉取的卷组,并且可以使用-n选项命名逻辑卷。要直接指定大小,可以使用-L选项。相反,如果您希望根据区段数指定大小,则可以使用-l选项。

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

1sudo lvcreate -L 10G -n projects LVMVolGroup
2sudo lvcreate -L 5G -n www LVMVolGroup
3sudo lvcreate -L 20G -n db LVMVolGroup
1[secondary_label Output]
2 Logical volume "projects" created.
3 Logical volume "www" created.
4 Logical volume "db" created.

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

1sudo vgs -o +lv_size,lv_name
1[secondary_label Output]
2 VG     #PV #LV #SN Attr VSize VFree LSize LV   
3 LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects
4 LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www   
5 LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

在本例中,您添加了输出的最后两列。它指示为您的逻辑卷分配了多少空间。

现在,您可以使用-l标志将卷组中的剩余空间分配给workspace卷,该标志以区段的形式工作。您还可以提供百分比和单位,以便更好地传达您的意图。在本例中,分配剩余的空闲空间,这样就可以传入100%FREE

1sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
1[secondary_label Output]
2 Logical volume "workspace" created.

使用自定义的vgs命令查看卷组信息,注意到您已经用完了所有可用空间:

1sudo vgs -o +lv_size,lv_name
1[secondary_label Output]
2 VG     #PV #LV #SN Attr VSize VFree LSize LV    
3 LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects 
4 LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www   
5 LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db    
6 LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

已创建workspace卷,并已完全分配LVMVolGroup卷组。

挂载和挂载逻辑挂载

现在您已经有了逻辑卷,您可以将它们用作普通数据块设备。

与其他存储设备一样,逻辑设备也在/dev目录下。您可以在两个位置访问它们:

  • /dev/卷组名/逻辑卷名
  • /dev/mapper/volume_group_name-logical_volume_name

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

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

或者,您可以运行以下命令:

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

格式化后,创建装载点:

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

然后将逻辑卷装载到适当的位置:

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

要使挂载持久化,请使用首选的文本编辑器将它们添加到/etc/fsta文件。以下示例使用nan

1sudo nano /etc/fstab
1[label /etc/fstab]
2. . .
3
4/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
5/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
6/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
7/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

编辑文件后,保存并退出。如果您使用的是Nan,请按Ctrl+c,然后按y,然后按Enter

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

结论

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

要了解有关使用lvm的更多信息,请查看我们的在Ubuntu 18.04.中使用lvm指南

Published At
Categories with 技术
comments powered by Disqus