使用LVM动态调整磁盘空间

给虚拟机分配了 1T 的磁盘, 初始化系统后发现只使用了 100G, 记录下拓展磁盘空间的过程

1
2
3
4
5
6
7
8
9
10
11
songdaoyuan@ubuntu-oss:$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2105
loop1 7:1 0 87M 1 loop /snap/lxd/27037
loop2 7:2 0 40.4M 1 loop /snap/snapd/20671
sda 8:0 0 1T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 1022G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 100G 0 lvm /
sr0 11:0 1 1024M 0 rom

根据lsblk输出, 可知系统使用了LVM(逻辑卷管理)来管理磁盘空间。

在当前配置中, 逻辑卷ubuntu-vg-ubuntu-lv的大小为 100G, 而物理卷 sda3 的总容量为 1022G。要将逻辑卷扩展到使用剩下的全部空间

步骤 1检查物理卷的可用空间

首先, 需要确认物理卷(sda3)上是否有足够的未分配空间

vgdisplay

在输出中, 找到 Free PE / Size, 即卷组中有多少未分配的空间

步骤 2扩展逻辑卷

扩展逻辑卷将额外的可用空间分配给现有的逻辑卷。使用 lvextend 命令将当前逻辑卷扩展到新的大小

1
2
3
4
5
# 例如, 如果你想扩展到 900G, 可以运行以下命令
lvextend -L 900G /dev/ubuntu-vg/ubuntu-lv

# 或者, 如果你想扩展到使用所有剩余的可用空间, 可以运行
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

步骤 3调整文件系统大小

扩展逻辑卷后, 文件系统仍然保持原来的大小, 需要扩展文件系统以利用新分配的空间

对于常用的 ext4 文件系统, 你可以使用以下命令:

resize2fs /dev/ubuntu-vg/ubuntu-lv

步骤 4确认扩展成功

df -h /

LVM的使用说明

LVM, 全称为Logical Volume Management(逻辑卷管理), 是一种存储管理技术, 用于管理硬盘分区和卷的逻辑抽象层。它最初由IBM开发, 后来被Linux社区广泛采用和扩展。以下是对LVM的详细介绍
基本概念

  • 物理卷(Physical Volume, PV)是LVM管理的物理存储设备, 可以是硬盘、分区或RAID阵列。

  • 卷组(Volume Group, VG)是由一个或多个物理卷组成的存储池。卷组可以动态地添加或删除物理卷。

  • 逻辑卷(Logical Volume, LV)是用户实际使用的存储空间, 从卷组中划分出来。逻辑卷可以像普通分区一样被挂载。

  • 物理扩展(Physical Extent, PE), 物理卷被划分成固定大小的块, 这些块称为物理扩展。

  • 逻辑扩展(Logical Extent, LE), 逻辑卷也是由相同大小的块组成, 这些块称为逻辑扩展。逻辑扩展和物理扩展一一对应。

优点和注意事项

优点:

灵活性, LVM允许在不重新分区的情况下动态调整逻辑卷的大小。

简化管理通过管理卷组, 可以更容易地管理多个物理存储设备。

备份和恢复支持快照功能, 方便数据备份和系统恢复。

高可用性可以实现存储的冗余和故障转移。

注意事项:

性能 虽然LVM提供了极大的灵活性, 但可能会带来轻微的性能开销。
兼容性 LVM逻辑卷在某些旧版系统或LiveCD中可能无法识别, 需要特别注意。
备份 在进行任何重大更改之前, 确保数据备份。

LVM通过其逻辑抽象层, 极大地简化了存储管理, 特别是在需要动态调整存储空间或进行高可用性配置的环境中。

工作流程

创建物理卷

pvcreate /dev/sdX

创建卷组

vgcreate my_volume_group /dev/sdX

创建逻辑卷

lvcreate -n my_logical_volume -L 10G my_volume_group

格式化和挂载

1
2
mkfs.ext4 /dev/my_volume_group/my_logical_volume
mount /dev/my_volume_group/my_logical_volume /mnt

调整逻辑卷大小

增加大小

1
2
lvextend -L +5G /dev/my_volume_group/my_logical_volume
resize2fs /dev/my_volume_group/my_logical_volume

减少大小

1
2
resize2fs /dev/my_volume_group/my_logical_volume 10G
lvreduce -L 10G /dev/my_volume_group/my_logical_volume

常用命令

显示物理卷信息pvs

显示卷组信息vgs

显示逻辑卷信息lvs

扩展卷组vgextend my_volume_group /dev/sdY

创建快照lvcreate --size 10G --snapshot --name snap /dev/my_volume_group/my_logical_volume