LVM 概念、术语和操作简介

简介: 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 可以访问和管理的块设备:

sudo lvmdiskscan

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

/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)。

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

sudo pvcreate /dev/sda /dev/sdb
Physical volume "/dev/sda" successfully created
 Physical volume "/dev/sdb" successfully created

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

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

sudo pvs
PV     VG  Fmt Attr PSize  PFree 
 /dev/sda    lvm2 --- 200.00g 200.00g
 /dev/sdb    lvm2 --- 100.00g 100.00g

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

将物理卷添加到卷组

现在你已经从设备创建了物理卷,你可以创建一个卷组。大多数情况下,每个系统只有一个卷组,以便在分配时获得最大的灵活性。以下卷组示例命名为 LVMVolGroup。你可以根据需要为卷组命名。

要创建卷组并将两个物理卷添加到其中,请运行:

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
卷组 "LVMVolGroup" 创建成功

再次检查 pvs 输出,将指示你的物理卷现在与新卷组关联:

sudo pvs
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 列出卷组的简短摘要:

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

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

从卷组池中创建逻辑卷

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

在以下示例中,你将从卷组中创建四个单独的逻辑卷:

  • 10G 的 “projects” 卷
  • 用于网页内容的 5G 的 “www” 卷
  • 用于数据库的 20G 的 “db” 卷
  • “workspace” 卷,将占据剩余空间

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

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

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
逻辑卷 "projects" 已创建。
 逻辑卷 "www" 已创建。
 逻辑卷 "db" 已创建。

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

sudo vgs -o +lv_size,lv_name
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

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
逻辑卷 "workspace" 已创建。

使用自定义 vgs 命令检查卷组信息,注意你已经使用完所有可用空间:

sudo vgs -o +lv_size,lv_name
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 文件系统格式化你的四个逻辑卷,运行以下命令:

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

或者,你也可以运行以下命令:

sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

格式化后,创建挂载点:

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

然后将逻辑卷挂载到相应的位置:

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

为了使挂载点持久化,使用你喜欢的文本编辑器将它们添加到 /etc/fstab 文件。以下示例使用 nano

sudo nano /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 指南。


目录
相关文章
|
11月前
|
Linux Shell Go
《Linux操作系统编程》 第五章 文件和文件系统: 了解文件和文件系统的概念和特性,掌握Linux文件系统的基本操作
《Linux操作系统编程》 第五章 文件和文件系统: 了解文件和文件系统的概念和特性,掌握Linux文件系统的基本操作
100 0
|
1月前
|
物联网 Linux 网络安全
dpdk03-概念补充
dpdk03-概念补充
|
10月前
|
存储 Kubernetes API
k8s教程(基础篇)-基本概念和术语(下)
k8s教程(基础篇)-基本概念和术语(下)
75 0
|
10月前
|
存储 Kubernetes 网络协议
k8s教程(基础篇)-基本概念和术语(上)
k8s教程(基础篇)-基本概念和术语(上)
99 0
|
存储 NoSQL C语言
基本概念和术语
基本概念和术语
|
存储 NoSQL C语言
一、基本概念和术语
一、基本概念和术语
一、基本概念和术语
|
缓存 Linux 索引
文件相关概念
文件相关概念
118 0
文件相关概念
|
计算机视觉
描述性物理海洋学--第三章学习笔记
描述性物理海洋学--第三章学习笔记
|
Linux 测试技术
软件测试Linux面试题:简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
软件测试Linux面试题:简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
160 0
|
存储 大数据 调度
关于扩展技术的几个基本概念
关于扩展技术的几个基本概念
269 0