Linux LVM 磁盘管理教程

Linux LVM 磁盘管理教程

LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 系统中用于灵活管理磁盘存储的一种机制。它将物理存储设备抽象为逻辑卷,支持动态调整大小、快照等功能,特别适用于需要频繁调整磁盘分区的场景。


一、LVM 基本概念

在理解 LVM 管理之前,需要熟悉以下几个核心概念:

  1. Physical Volume (PV):

    • 实际的物理存储设备,例如硬盘或分区(如 /dev/sda1)。
    • 是 LVM 的基础存储单元,通过 pvcreate 初始化后可用于 LVM。
  2. Volume Group (VG):

    • 由一个或多个 PV 组成的存储池。
    • 提供逻辑卷的分配空间。
  3. Logical Volume (LV):

    • 从 VG 中分配出的逻辑存储单元。
    • 类似于传统分区,可格式化并挂载。
  4. Physical Extent (PE):

    • PV 划分的基本存储块。默认大小为 4MB,可以通过 vgcreate 设置。
    • VG 中的存储空间以 PE 为单位分配给 LV。

二、LVM 的优势

  1. 灵活性 :
    • 可在不影响现有数据的情况下动态调整卷大小。
  2. 快照 :
    • 可创建卷的快照,用于备份和数据恢复。
  3. 设备抽象 :
    • 将物理设备抽象为逻辑设备,简化管理。

三、LVM 配置步骤

以下是 LVM 配置的详细过程:


1. 准备物理设备

确保有未分区的磁盘或分区。例如,假设使用 /dev/sdb 和 /dev/sdc。

查看磁盘情况:
复制代码
lsblk

2. 创建物理卷 (PV)

将设备初始化为物理卷:

复制代码
sudo pvcreate /dev/sdb /dev/sdc

验证物理卷状态:

复制代码
sudo pvs

示例输出:

复制代码
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sdb          lvm2 ---  100.00g 100.00g
  /dev/sdc          lvm2 ---  200.00g 200.00g

3. 创建卷组 (VG)

创建一个包含以上 PV 的卷组:

复制代码
sudo vgcreate my_vg /dev/sdb /dev/sdc

验证卷组状态:

复制代码
sudo vgs

示例输出:

复制代码
  VG     #PV #LV #SN Attr   VSize   VFree
  my_vg    2   0   0 wz--n- 300.00g 300.00g

4. 创建逻辑卷 (LV)

从卷组中分配空间创建逻辑卷。例如,创建一个 100GB 的逻辑卷:

复制代码
sudo lvcreate -L 100G -n my_lv my_vg

验证逻辑卷状态:

复制代码
sudo lvs

示例输出:

复制代码
  LV     VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  my_lv  my_vg -wi-a----- 100.00g

5. 格式化逻辑卷

对逻辑卷进行格式化,例如使用 ext4 文件系统:

复制代码
sudo mkfs.ext4 /dev/my_vg/my_lv

6. 挂载逻辑卷

创建挂载点并挂载逻辑卷:

复制代码
sudo mkdir /mnt/mydata
sudo mount /dev/my_vg/my_lv /mnt/mydata

验证挂载:

复制代码
df -h

将挂载写入 /etc/fstab,以便开机自动挂载:

复制代码
echo '/dev/my_vg/my_lv /mnt/mydata ext4 defaults 0 0' | sudo tee -a /etc/fstab

四、LVM 管理操作

1. 扩展逻辑卷

假设需要扩展逻辑卷 my_lv 的大小:

  1. 确认 VG 的剩余空间:

    复制代码
    sudo vgs
  2. 扩展逻辑卷大小(增加 50GB):

    复制代码
    sudo lvextend -L +50G /dev/my_vg/my_lv
  3. 扩展文件系统:

    • ext4 文件系统 :

      复制代码
      sudo resize2fs /dev/my_vg/my_lv
    • xfs 文件系统 :

      复制代码
      sudo xfs_growfs /mnt/mydata

2. 缩减逻辑卷

  1. 先卸载逻辑卷:

    复制代码
    sudo umount /mnt/mydata
  2. 缩减文件系统:

    复制代码
    sudo e2fsck -f /dev/my_vg/my_lv
    sudo resize2fs /dev/my_vg/my_lv 80G
  3. 缩减逻辑卷:

    复制代码
    sudo lvreduce -L 80G /dev/my_vg/my_lv
  4. 重新挂载:

    复制代码
    sudo mount /dev/my_vg/my_lv /mnt/mydata

3. 添加新磁盘到卷组

  1. 添加新磁盘 /dev/sdd:

    复制代码
    sudo pvcreate /dev/sdd
    sudo vgextend my_vg /dev/sdd
  2. 验证扩展:

    复制代码
    sudo vgs

4. 创建快照

创建逻辑卷的快照以便备份或回滚:

复制代码
sudo lvcreate -L 10G -s -n my_lv_snapshot /dev/my_vg/my_lv

快照会出现在 lvs 输出中,可用于备份操作。


5. 删除逻辑卷、卷组、物理卷

  1. 卸载逻辑卷:

    复制代码
    sudo umount /mnt/mydata
  2. 删除逻辑卷:

    复制代码
    sudo lvremove /dev/my_vg/my_lv
  3. 删除卷组:

    复制代码
    sudo vgremove my_vg
  4. 删除物理卷:

    复制代码
    sudo pvremove /dev/sdb /dev/sdc

五、LVM 常用命令总结

功能 命令 示例
查看磁盘状态 lsblk lsblk
初始化 PV pvcreate pvcreate /dev/sdb
查看 PV 信息 pvs / pvdisplay pvs
创建 VG vgcreate vgcreate my_vg /dev/sdb /dev/sdc
查看 VG 信息 vgs / vgdisplay vgs
创建 LV lvcreate lvcreate -L 100G -n my_lv my_vg
查看 LV 信息 lvs / lvdisplay lvs
扩展 LV lvextend + resize2fs lvextend -L +50G /dev/my_vg/my_lv
删除 LV lvremove lvremove /dev/my_vg/my_lv

六、总结

通过以上步骤,您可以灵活地使用 LVM 管理磁盘存储。LVM 提供了强大的功能,包括动态调整分区大小、创建快照和扩展卷组容量等,是现代 Linux 系统中磁盘管理的核心工具之一。

注意事项:

  1. 备份数据:任何涉及磁盘调整的操作都有潜在风险。
  2. 监控存储使用情况:确保 VG 和 LV 的空间分配合理。
  3. 快照使用:不要长时间保留快照,以免影响性能。
相关推荐
大哥您好7 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
数据库小学妹7 小时前
国产数据库怎么选?兼容、迁移、核心案例与融合架构四道关
数据库·架构·国产数据库·数据库迁移·融合数据库
IvorySQL8 小时前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
饺子大魔王的男人8 小时前
后台表格、查询、流程总在重复写?我用ToolJet把PostgreSQL直接做成可远程访问的业务系统
数据库·postgresql
道满科技8 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
Gauss松鼠会8 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Android系统攻城狮8 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP8 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
我科绝伦(Huanhuan Zhou)9 小时前
Linux 通用压力测试脚本合集:磁盘 + 网络
linux·网络·压力测试