LVM 逻辑卷管理:不停机扩容磁盘的正确方式

LVM 逻辑卷管理:不停机扩容磁盘的正确方式

买云服务器时硬盘往往选得比较保守,等到磁盘快满了才想扩容。直接挂新磁盘可以,但每个应用要分别挂载到不同路径,管理起来麻烦。LVM(Logical Volume Manager)逻辑卷管理器允许把多块磁盘组合成一个大的存储池,然后灵活分配给不同的逻辑卷,扩容时不需要重建分区,甚至不需要停机。

LVM 三层结构

复制代码
物理卷(PV,Physical Volume)
  ↓ 组合成
卷组(VG,Volume Group)
  ↓ 分割成
逻辑卷(LV,Logical Volume)
  ↓ 格式化并挂载
文件系统

类比:PV 是原材料,VG 是仓库,LV 是仓库里分隔出来的储物间。

安装 LVM 工具

bash 复制代码
sudo apt install -y lvm2

在云服务器上新挂载磁盘后的操作

以 雨云 rainyun+com 的服务器为例,在控制台新增一块数据盘(比如 /dev/vdb),然后在系统里操作。

雨云新用户注册填优惠码 2026off 能领 5 折优惠券。

bash 复制代码
# 查看当前磁盘
lsblk
# NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
# vda    252:0    0   40G  0 disk
# └─vda1 252:1    0   40G  0 part /
# vdb    252:16   0   50G  0 disk  ← 新增的磁盘

# 查看已有 LVM 信息
sudo pvdisplay   # 物理卷
sudo vgdisplay   # 卷组
sudo lvdisplay   # 逻辑卷

从零开始创建 LVM

bash 复制代码
# 1. 创建物理卷(PV)
sudo pvcreate /dev/vdb
# Physical volume "/dev/vdb" successfully created.

# 2. 创建卷组(VG)
sudo vgcreate data_vg /dev/vdb
# Volume group "data_vg" successfully created

# 3. 创建逻辑卷(LV)
# 创建一个 20GB 的逻辑卷
sudo lvcreate -L 20G -n data_lv data_vg

# 或者使用全部可用空间
sudo lvcreate -l 100%FREE -n data_lv data_vg

# 4. 格式化
sudo mkfs.ext4 /dev/data_vg/data_lv

# 5. 挂载
sudo mkdir /data
sudo mount /dev/data_vg/data_lv /data

# 6. 开机自动挂载
echo '/dev/data_vg/data_lv /data ext4 defaults 0 2' | sudo tee -a /etc/fstab

扩展现有逻辑卷

情况A:卷组里还有空间

bash 复制代码
# 查看卷组剩余空间
sudo vgs

# 扩展逻辑卷(增加 20GB)
sudo lvextend -L +20G /dev/data_vg/data_lv

# 扩展后必须扩展文件系统
sudo resize2fs /dev/data_vg/data_lv  # ext4
# 或者
sudo xfs_growfs /data                 # xfs

这步操作不需要卸载磁盘,不需要停机,数据完全安全。

情况B:需要添加新磁盘扩展

bash 复制代码
# 新磁盘 /dev/vdc 挂载后
# 创建新物理卷
sudo pvcreate /dev/vdc

# 把新 PV 加入现有卷组
sudo vgextend data_vg /dev/vdc

# 现在卷组有了更多空间,再执行上面的 lvextend
sudo lvextend -L +50G /dev/data_vg/data_lv
sudo resize2fs /dev/data_vg/data_lv

扩展根分区(/)

根分区已满是常见的紧急情况。如果根分区使用了 LVM(Ubuntu 安装时选择 LVM 的情况),可以热扩展:

bash 复制代码
# 查看根分区所在的逻辑卷
df -h /
# /dev/mapper/ubuntu--vg-ubuntu--lv  ...

# 扩展(使用卷组全部剩余空间)
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

# 扩展文件系统
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

注意:如果根分区不是 LVM,需要重启到 Live CD 操作,无法热扩展。所以新建服务器时推荐选择 LVM 分区方式。

缩减逻辑卷(危险操作,需要谨慎)

bash 复制代码
# 先卸载
sudo umount /data

# 检查文件系统
sudo e2fsck -f /dev/data_vg/data_lv

# 缩小文件系统(先于 LV 缩小)
sudo resize2fs /dev/data_vg/data_lv 15G

# 再缩小逻辑卷
sudo lvreduce -L 15G /dev/data_vg/data_lv

# 重新挂载
sudo mount /data

警告:先缩文件系统,再缩逻辑卷;顺序反了会丢失数据。

快照(备份神器)

LVM 快照可以在几秒内创建一个一致的磁盘快照,非常适合数据库备份:

bash 复制代码
# 创建快照(分配 5GB 作为 CoW 存储空间)
sudo lvcreate -L5G -s -n data_lv_snap /dev/data_vg/data_lv

# 挂载快照读取数据
sudo mount -o ro /dev/data_vg/data_lv_snap /mnt/snap

# 备份快照
sudo tar czf /backup/data-$(date +%Y%m%d).tar.gz /mnt/snap

# 卸载并删除快照
sudo umount /mnt/snap
sudo lvremove /dev/data_vg/data_lv_snap

常用命令速查

bash 复制代码
# 物理卷
sudo pvs          # 简洁显示
sudo pvdisplay    # 详细信息
sudo pvcreate     # 创建
sudo pvremove     # 删除

# 卷组
sudo vgs
sudo vgdisplay
sudo vgcreate
sudo vgextend     # 添加 PV 到 VG

# 逻辑卷
sudo lvs
sudo lvdisplay
sudo lvcreate
sudo lvextend     # 扩展
sudo lvreduce     # 缩减
sudo lvrename     # 重命名
sudo lvremove     # 删除

LVM 是服务器磁盘管理的最佳实践,主要价值是弹性扩容------业务增长导致磁盘不够时,买一块新磁盘加入卷组,几条命令完成扩容,整个过程不停服。云服务商控制台加磁盘 + Linux LVM 扩容,是比迁移整个服务器便宜得多的应对磁盘紧张的方法。

相关推荐
非凡ghost5 小时前
AI修图不“造假“,摄影师的出片效率加速器
服务器·前端·人工智能·电脑
和裕5 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
智购科技无人售货机工厂店6 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
Ruiery6 小时前
Linux 6.6内核 PCIe 深度解析(十):PCIe Port Driver(portdrv)— 一个物理 Port,拆出五个逻辑服务
linux·运维·服务器
天天喝旺仔7 小时前
Python asyncio 异步编程实战:用协程与事件循环构建高性能网络服务
服务器·网络·python·性能优化·fastapi
运维行者_7 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则
数安旭说7 小时前
企业终端行为审计建设:本地审计 + 网络审计构建完整溯源取证体系
运维·数据安全·软件需求·溯源·审计·网络审计
Elastic 中国社区官方博客8 小时前
在 Elasticsearch 中回填时间序列数据:通过批量 API 加载数月的历史指标数据
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
Horn Still Sounds8 小时前
Linux网络并发服务器模型与SQLite数据库学习笔记
linux·服务器·数据库
10mAh8 小时前
【Linux】CPU 100% 怎么排查?——top、pidstat、jstack 到线程定位实战
linux·运维·服务器