bingxin
Published on 2025-07-25 / 7 Visits
0

LVM-储存介绍及其实践

一次使用Linux server过程中发现的新知识:

LVM(Logical Volume Manager,逻辑卷管理器)是一种用于Linux系统的存储管理工具,它提供了一种比传统分区更灵活的存储管理方式。LVM允许管理员动态调整磁盘存储的分配,创建、调整和删除卷,而不会中断系统的运行。

LVM的基本概念

LVM由以下几个主要部分组成:

  1. Physical Volume (PV):物理卷,通常是物理硬盘或硬盘分区,是LVM的最底层单位。

  2. Volume Group (VG):卷组,是由一个或多个物理卷组成的存储池,逻辑卷是在卷组的基础上创建的。

  3. Logical Volume (LV):逻辑卷,从卷组中分配出来的存储单位,可以被挂载并用于存储文件系统。

LVM的主要特性

  • 动态扩展:可以在线增加或减少卷组和逻辑卷的大小。

  • 快照:可以创建逻辑卷的快照,以便进行备份或恢复。

  • 条带化:可以将数据分布在多个物理卷上,提高I/O性能。

  • 镜像:可以在多个物理卷上保存数据副本,提高数据的可靠性。

+----------------------------+
|          LVM结构           |
+----------------------------+
|     Volume Group (VG)      |
|  +-------+   +-------+     |
|  |  PV1  |   |  PV2  |     |
|  | (HDD) |   | (HDD) |     |
|  +-------+   +-------+     |
|            ...             |
|  +-------+   +-------+     |
|  |  PVn  |   |  PVm  |     |
|  | (HDD) |   | (HDD) |     |
|  +-------+   +-------+     |
|                            |
+-------------|--------------+
              |
              v
+----------------------------+
|     Logical Volume (LV)    |
|  +-------+   +-------+     |
|  |  LV1  |   |  LV2  |     |
|  |       |   |       |     |
|  +-------+   +-------+     |
|            ...             |
|  +-------+   +-------+     |
|  |  LVx  |   |  LVy  |     |
|  |       |   |       |     |
|  +-------+   +-------+     |
+----------------------------+

图解说明

  1. PV(Physical Volume,物理卷):底层存储单元,通常是硬盘或分区。

  2. VG(Volume Group,卷组):由多个PV组成的存储池。

  3. LV(Logical Volume,逻辑卷):从VG中分配出来的可用存储单元,可以像传统分区一样使用。

实践

添加剩余空间到逻辑卷

首先检查VG中是否还有未分配空间

vgdisplay ubuntu-vg

💡 当然,可以先用sudo vgdisplay 查看vg名字,这里假设是ubuntu-vg

还要看lv目录,实践应该是用lsblk看:

找到free(可用空间),上图显然没有,如果有:

# 使用百分比划分空间
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
#使用具体数值划分空间
sudo lvextend -L +50G /dev/ubuntu-vg/ubuntu-lv

最后,再更新下文件系统:

sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

添加磁盘到VG

  1. 首先,找硬盘:lsblk

    应该找到个sdb或者什么sd开头的硬盘名字

    初始化为物理卷(PV):

sudo pvcreate /dev/sdb
  1. 扩展卷组(VG) 将新的物理卷添加到现有的卷组(假设现有卷组名称是 ubuntu-vg):

sudo vgextend ubuntu-vg /dev/sdb
  1. 验证

sudo vgdisplay

然后就有free空间,扩容到逻辑卷就看开头步骤。

移除硬盘

⚠️很麻烦,尽量不要出现缩容情况

top:从逻辑LV中空出要移除硬盘的空间:(比如减10G)

sudo lvreduce -L -10G /dev/ubuntu-vg/ubuntu-lv
  1. 移动数据

    首先,需要确保从要移除的物理卷上移动所有数据到其他物理卷。使用 pvmove 命令将数据迁移。假设要移除的物理卷是 /dev/sdb1

    sudo pvmove /dev/sdb1
    
  2. 从卷组中移除物理卷:

    sudo vgreduce ubuntu-vg /dev/sdb1
    
  3. 从物理卷中移除 LVM 元数据:

    sudo pvremove /dev/sdb1