LVM究竟有多强大?原理和企业实战案例全解析

发布时间:2023年12月27日

1. lvm 简介

LVM代表”逻辑卷管理器”(Logical Volume Manager),是Linux环境中提供更高级磁盘管理功能的一套工具,使用LVM可以提供比传统分区管理更多的灵活性。 通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间。

1.1 LVM的基本组成块(building blocks)

【术语解释】
物理卷Physical volume (PV):LVM允许用户将多个物理磁盘驱动器组合成一个或多个物理卷。物理卷可以是整个磁盘驱动器,也可以是磁盘驱动器的一部分。
卷组Volume group (VG):物理卷可以组合成一个或多个卷组。卷组是一个逻辑概念,它将多个物理卷组合在一起,形成一个大容量的存储池。
逻辑卷Logical volume (LV):虚卷组可以划分为一个或多个逻辑卷。逻辑卷是用户可见的存储单元,可以像普通磁盘分区一样使用。逻辑卷可以根据需要动态调整大小。
卷组描述区域 Volume Group Descriptor Area (VGDA):用于描述物理卷、卷组、逻辑卷分配的所由信息。逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的 VGDA( 卷组描述符区域 ) 中。

1.2 示例

这里有两块物理硬盘
  硬盘1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  _ _ _ _ 
    |  分区1 20GB (物理卷)             |  分区2 30GB (物理卷)               |
    |  /dev/sda1                      |  /dev/sda2                        |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
                                  
  硬盘2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |  分区1 100GB (物理卷)                     |
    |  /dev/sdb1                               |
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|

LVM方式
  卷组VG1 (/dev/mapper/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |  逻辑卷1 20GB               |  逻辑卷2 30GB                   |  逻辑卷3 100GB                     |
    |  /dev/mapper/homevol       |  /dev/mapper/datavol            |  /dev/mapper/mediavol              |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ |_ _ _ _ _ _ _ _ _ _ _ _ _   _ _  _ _|

2. LVM 优点

比起正常的硬盘分区管理,LVM更富于弹性:

  • 使用卷组(VG),用户将多个物理磁盘驱动器组合成一个大容量的存储池,提供更大的存储空间。
  • 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
  • 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。
  • 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
  • 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。
  • 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
  • 灵活性更强,用户根据需要动态调整逻辑卷的大小,而无需重新分区或重新格式化磁盘驱动器。
  • 灵活的逻辑卷管理方式。创建、删除、扩展逻辑卷都比较方便灵活。

LVM是一种功能强大的磁盘管理工具,可以提供灵活的存储管理和数据保护功能。它广泛应用于服务器和企业环境中,但也可以在个人计算机上使用。`

3. LVM 缺点

  • 增加了存储系统的复杂性。LVM将物理存储抽象并创建多层架构,管理和维护会更复杂。
  • Windows系统并不支持LVM,若使用双系统,你将无法在Windows上访问LVM分区。
  • 单点失败风险,LVM的元数据和组成是中心化的,如果元数据损坏可能会造成整个LVM不可用。
  • 性能影响,LVM的多层架构会增加I/O的开销,可能会对性能带来轻微影响。

4. 在LVM上安装Arch Linux

快速预览:

  • 创建物理卷(PV)所在的分区,设置分区格式为’Linux LVM’,对应的十六进制码为8e(MBR)或8e00(GPT)。
  • 创建物理卷(PV)。如果你只有一个硬盘,那么你最好只创建一个分区一个物理卷;如果你有多个硬盘,你可以创建多个分区,在每个分区上分别创建一个物理卷。
  • 创建卷组(VG),并把所有物理卷加进卷组。
  • 在卷组(VG)上创建逻辑卷(LV)。

4.1 创建分区

提示:注意: 尽管多数情况下推荐首先对磁盘设备进行分区,但根据实际用户需要,该步骤是可选的。

使用fdisk或其他分区工具创建分区。fdisk是一个用来管理磁盘分区的传统命令行工具。当你使用fdisk命令并附加-l参数以及一个磁盘设备名(比如/dev/sda),这个命令将会列出指定的磁盘设备上所有分区的信息。
# fdisk /dev/sda
依次输入:n、p、1、p、t、L、8e、p、w
n:新建分区 (Add a new partition)
p:新建主分区 (Create a primary partition)
1:指定分区号为 1 (Set the partition number to 1)
输入两次 p 时,初次没有给出其含义,它通常不是用作输入命令。 如果是错误输入,第二次的 p 将展示当前分区表 (Print the partition table)
t:改变分区类型 (Change the partition’s system id)
L:列出所有已知的分区类型 (List known partition types)
8e:将分区类型设置为 Linux LVM (Set the partition type to Linux LVM)
再次:展示当前分区表,展示进行的修改 (Print the partition table to show the changes made)
w:将更改保存到磁盘然后退出 fdisk (Write the changes and exit fdisk)

4.2、创建物理卷(PV)

使用pvcreate命令将分区标记为LVM物理卷。例如,如果分区为/dev/sda2,可以运行以下命令:pvcreate /dev/sda2
可通过以下命令列出可被用作物理卷的设备:

# lvmdiskscan

警告: 请确认你对正确的设备进行操作,否则会导致文件丢失!

在列出的设备上创建物理卷:

# pvcreate DEVICE

该命令在各个设备上创建LVM使用的头部。如#LVM基本组成所示, DEVICE可以是磁盘(如/dev/sda或/dev/xvda),分区(如/dev/sda2或/dev/xvda1)或环回设备。例如:

# pvcreate /dev/sda2

你可以用以下命令查看已创建好的物理卷:

# pvdisplay

注意: 如果你用的是未格式化过且擦除块(erase block)大小小于1M的SSD,请采用以下命令pvcreate --dataalignment 1m /dev/sda来设置对齐(alignment),可以参考链接(英文)

4.3 创建卷组(VG)

使用vgcreate命令创建LVM卷组。例如,可以运行以下命令:vgcreate myvg /dev/sda2,其中myvg是卷组的名称。
创建完成物理卷(PV)之后,下一步就是在该物理卷创建卷组(VG)了。 首先必须先在其中一个物理卷(PV)创建一个卷组。

# vgcreate <volume_group> <physical_volume>

例如:

# vgcreate myvg /dev/sda2

然后让该卷组扩大到其他所有的物理卷:

# vgextend <volume_group> <physical_volume>
# vgextend <volume_group> <another_physical_volume>
...

例如:

# vgextend myvg /dev/sdb1
# vgextend myvg /dev/sdc

其中,“VolGroup00”名字换成你自己起的名字即可。接下来可以用以下命令查看卷组:

# vgdisplay

注意: 你可以创建多个的卷组,但这将使你的硬盘空间分布在不同(逻辑)磁盘上。

4.4 多卷组一步创建

LVM支持将卷组与物理卷的创建聚合在一个命令中。例如,为了在前文提到的三个设备中创建名为VolGroup00的卷组,可以执行如下命令:

# vgcreate myvg /dev/sda2 /dev/sdb1 /dev/sdc

该命令首先会在分区上创建物理卷(如果之前没有创建过),再创建一个包含三个物理卷的卷组。如果设备上已经存在文件系统,命令会提出警告。

4.5 创建逻辑卷(LV)

使用lvcreate命令创建LVM逻辑卷。例如,可以运行以下命令:lvcreate -L 20G myvg -n lvoldata,其中mylv是逻辑卷的名称,-L参数指定逻辑卷的大小。
创建完卷组(VG)之后,就可以开始创建逻辑卷(LV)了。输入下面命令以指定新逻辑卷的名字、大小及其所在的卷组:

# lvcreate -L <size> <volume_group> -n <logical_volume>

例如:

# lvcreate -L 10G myvg -n lvoldata

该逻辑卷创建完后,你就可以通过/dev/mapper/myvg-lvoldata或/dev/myvg/lvoldata来访问它。与卷组命名类似,你可以按你的需要将逻辑卷命名。
你可以指定一个或多个物理卷来限制LVM分配数据空间的位置。比如你希望在较小的SSD硬盘上创建根文件系统,并在较慢的机械硬盘上创建家目录卷,仅需把物理卷设备加入到命令中,例如:

# lvcreate -L 10G myvg -n lvoldata /dev/sdc1

如果你想让要创建的逻辑卷拥有卷组(VG)的所有未使用空间,请使用以下命令:

# lvcreate -l +100%FREE  <volume_group> -n <logical_volume>

可以通过以下命令来查看逻辑卷:

# lvdisplay

注意: 为了使上述命令能正常运行,你可能需要加载device-mapper内核模块(请使用命令modprobe dm-mod)。
提示: 一开始可以创建小一点的逻辑卷,在卷组里留下一部分未使用空间,以后就可以根据需要再作扩展了。

4.6 建立文件系统与挂载逻辑卷

现在你的逻辑卷应该已经在/dev/mapper/和/dev/YourVolumeGroupName中了。如果你无法在以上位置找到它,请使用以下命令来加载模块、并扫描与激活卷组:

# modprobe dm-mod
# vgscan
# vgchange -ay

格式化逻辑卷:使用mkfs命令格式化逻辑卷。例如,如果逻辑卷为/dev/mapper/myvg-lvoldata,可以运行以下命令:mkfs.ext4 /dev/mapper/myvg-lvoldata
挂载逻辑卷:创建一个目录作为挂载点,并使用mount命令将逻辑卷挂载到该目录。例如,可以运行以下命令:mkdir -p /datamount /dev/mapper/myvg-lvoldata /data
现在你可以在逻辑卷上创建文件系统并像普通分区一样挂载它了:

# mkfs.<fstype> /dev/mapper/<volume_group>-<logical_volume>
# mount /dev/mapper/<volume_group>-<logical_volume> /<mountpoint>

例如:

# mkfs.ext4 /dev/mapper/myvg-lvoldata
# mount /dev/mapper/myvg-lvoldata /data

警告: 挂载点请选择你所新建的逻辑卷(例如:/dev/mapper/myvg-lvoldata),不要使用逻辑卷所在的实际分区设备(即不要使用:/dev/sda2)。

以上是在LVM上安装Arch Linux的基本步骤。请注意,这只是一个简要的概述,具体步骤可能因个人需求和系统配置而有所不同。在进行此类操作之前,请确保备份重要数据,并在熟悉LVM和Arch Linux安装过程的情况下进行操作。

更精彩企业LVM案例与最佳实战经验

  1. 给LVM分区扩容(加一块硬盘)
  2. 新添加一块硬盘制作LVM卷并进行分区挂载
  3. 给lvm分区扩容(不加硬盘,直接加容量,从10G增加20G)
文章来源:https://blog.csdn.net/chentongsan/article/details/135243478
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。