Linux磁盘扩容之LVM与普通分区扩容的区别与操作指南

 更新时间:2026年09月02日 08:38:06   作者:Mr-Wanter  
在实际工作中,我们经常会遇到服务器磁盘空间不足的情况,扩容磁盘看似简单,但不同场景下的操作方式却大相径庭,本文将通过一次真实的LVM扩容案例,详细讲解LVM架构和普通分区架构两种扩容方式的区别,帮助你快速判断该用哪种方法,需要的朋友可以参考下

前言

在实际工作中,我们经常会遇到服务器磁盘空间不足的情况。扩容磁盘看似简单,但不同场景下的操作方式却大相径庭。如果选错了方法,轻则操作失败,重则可能导致数据丢失。

本文将通过一次真实的LVM扩容案例,详细讲解LVM架构普通分区架构两种扩容方式的区别,帮助你快速判断该用哪种方法。

一、为什么要区分两种方式?

很多人在扩容时都会有一个疑问:为什么有的服务器用 lvextend,有的用 growpart

答案很简单:磁盘管理架构不同!

架构类型管理方式扩容工具复杂度
LVM架构逻辑卷管理(池化)lvextend + xfs_growfs/resize2fs稍复杂
普通分区架构直接分区管理growpart + resize2fs较简单

二、如何判断你的服务器是什么架构?

一招判断:使用lsblk命令

lsblk

场景一:LVM架构(本篇案例)

[root@host ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda             252:0    0   20G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   19G  0 part 
  ├─centos-root 253:0    0 1017G  0 lvm  /          # ← 注意这里是 lvm
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
vdb             252:16   0 1000G  0 disk 
└─centos-root   253:0    0 1017G  0 lvm  /          # ← vdb被lvm池化
vdd             252:48   0  500G  0 disk            # ← 待扩容的新磁盘

特征

  • 磁盘下没有 part 分区,直接归属于 lvm 设备
  • 挂载点对应的是 lvm 类型的设备(如 centos-root

结论:使用 LVM扩容方式

场景二:普通分区架构(CSDN常见案例)

[root@host ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda     252:0    0   20G  0 disk 
├─vda1  252:1    0    1G  0 part /boot
└─vda2  252:2    0   19G  0 part /
vdb     252:16   0 1000G  0 disk 
└─vdb1  252:17   0 1000G  0 part /data             # ← 注意这里是 part

特征

  • 磁盘下有 part 分区
  • 挂载点直接对应一个分区(如 /dev/vdb1

结论:使用 普通分区扩容方式(CSDN步骤)

三、LVM扩容实战(本篇核心案例)

环境信息

  • 操作系统:CentOS 7+
  • 文件系统:XFS
  • 原容量:1017G(由 vda2 19G + vdb 1000G 组成)
  • 扩容磁盘:vdd 500G
  • 目标:将根目录 / 扩容至 1.5T

步骤一:清理空间(根目录100%满时务必执行)

# 清理日志文件
journalctl --vacuum-size=100M
yum clean all 2>/dev/null
> /var/log/messages

步骤二:确认文件系统类型

df -T /

输出示例

文件系统                类型  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs  1017G 1017G 505M 100% /

注意:XFS用 xfs_growfs,ext4用 resize2fs,不能混用!

步骤三:将新磁盘加入LVM

# 1. 创建物理卷(PV)
pvcreate /dev/vdd

# 2. 确认卷组名(本例为 centos)
vgs

# 3. 将新PV加入卷组(VG)
vgextend centos /dev/vdd

# 4. 确认卷组空间已增加
vgdisplay centos

步骤四:扩容逻辑卷和文件系统

# 1. 扩容逻辑卷(使用全部剩余空间)
lvextend -l +100%FREE /dev/centos/root

# 2. 扩容文件系统(XFS)
xfs_growfs /

# 3. 验证结果
df -h /

成功输出

/dev/mapper/centos-root  1.5T 1017G  501G   67% /

四、普通分区扩容方式(CSDN案例参考)

如果你的服务器是普通分区架构(lsblk 显示为 part),则使用以下步骤:

# 1. 查看分区情况
lsblk

# 2. 扩容分区(以 /dev/vdb1 为例)
growpart /dev/vdb 1

# 3. 检查并扩容文件系统
e2fsck -f /dev/vdb1      # 如果是 ext4
resize2fs /dev/vdb1

# 或对于 XFS:
xfs_growfs /data         # /data为挂载点

# 4. 验证
df -h /data

五、常见踩坑与注意事项

问题原因解决方案
resize2fs: Bad magic number文件系统是XFS,却用了ext4的工具改用 xfs_growfs
扩容后容量没变忘记扩容文件系统执行 xfs_growfsresize2fs
growpart 报错分区已经扩过,或不是分区架构lsblk 确认架构
根目录100%满,操作卡住无临时空间先清理日志腾出至少500M空间
扩容后挂载点丢失未正确挂载重新 mount 即可,数据不会丢失

六、快速判断流程图

七、两种扩容方式对服务器的影响对比

影响维度LVM扩容方式(你的场景)普通分区扩容方式(CSDN场景)
是否需要停机❌ 不需要❌ 不需要
是否需要卸载磁盘❌ 不需要(在线扩容)❌ 不需要(在线扩容)
对运行中服务的影响几乎无感知
操作秒级完成,服务持续运行
几乎无感知
操作秒级完成,服务持续运行
数据安全性🟢
只修改LVM元数据,不动已有数据
🟢
只修改分区表和文件系统元数据
操作风险点LVM元数据损坏(极少见)分区表修改时断电(极小概率)
操作回滚难度较复杂(需要缩减LV)较简单(分区表可恢复)

7.1 详细说明

7.1.1 对磁盘内容的影响

两种方式都不会损坏已有数据,因为操作本质都是修改"元数据"(类似修改目录索引),而不是移动或删除实际文件数据。

操作LVM扩容普通分区扩容
pvcreate在磁盘头部写LVM标签
vgextend修改卷组元数据
lvextend修改逻辑卷元数据
growpart修改分区表边界
xfs_growfs/resize2fs扩展文件系统元数据扩展文件系统元数据

7.1.2 对服务器服务的影响

两种方式对服务的影响都极小,原因如下:

  1. 操作时间极短:整个过程通常在 1-5秒 内完成
  2. 不中断I/O:文件系统保持挂载状态,读写操作不受影响
  3. 不重启服务:Java、Nginx、MySQL等进程继续运行
  4. 不重启系统:无需重启服务器

唯一可能的影响

  • 扩容前磁盘已100%满时,服务可能因无法写入日志而出现问题
  • 扩容完成后,这些问题会自动解决,无需任何额外操作

7.2 结论

问题答案
扩容会停服务吗?两种方式都不会
会丢数据吗?两种方式都不会
需要重启吗?两种方式都不需要
哪种更安全?两者安全性相同,取决于是否正确判断了架构

核心建议:只要先用 lsblk 确认了架构,选择了正确的扩容方式,操作就非常安全,对业务几乎无影响。

总结

关键点说明
判断方法lsblk 看 TYPE 是 lvm 还是 part
LVM扩容pvcreatevgextendlvextendxfs_growfs
普通分区扩容growpartresize2fs/xfs_growfs
文件系统XFS用 xfs_growfs,ext4用 resize2fs
核心原则先确认架构,再选对工具,最后扩容文件系统

以上就是Linux磁盘扩容之LVM与普通分区扩容的区别与操作指南的详细内容,更多关于Linux LVM与普通分区扩容的资料请关注脚本之家其它相关文章!

相关文章

  • Linux系统cpu飙高的排查方法

    Linux系统cpu飙高的排查方法

    本文介绍了如何在Linux系统中通过检查CPU使用率、系统负载、进程资源、系统调用、日志分析以及使用性能工具如perf来诊断CPU占用过高的问题,帮助用户定位和解决问题,需要的朋友可以参考下
    2024-10-10
  • CentOS7搭建gerrit 代码审查服务方法

    CentOS7搭建gerrit 代码审查服务方法

    下面小编就为大家分享一篇CentOS7搭建gerrit 代码审查服务方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Linux使用md5sum命令校验文件完整性

    Linux使用md5sum命令校验文件完整性

    在数字世界中,文件的完整性如同现实世界中的指纹一样重要,无论你是系统管理员、开发人员还是普通用户,确保你下载或传输的文件没有被篡改或损坏,都是至关重要的一步,本文将带你深入理解 md5sum 的工作原理、实际应用场景,需要的朋友可以参考下
    2026-03-03
  • Linux如何配置本地yum源(光盘镜像挂载)

    Linux如何配置本地yum源(光盘镜像挂载)

    这篇文章主要介绍了Linux如何配置本地yum源(光盘镜像挂载),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Linux Xorg占用现存过大问题的解决方案

    Linux Xorg占用现存过大问题的解决方案

    文章描述了Linux系统中Xorg占用大量显存导致CUDA出现outofmemory问题的解决过程,通过切换到字符界面再回到图形界面,有效降低了Xorg的资源占用,解决了问题
    2026-05-05
  • linux系统安装git及git常用命令

    linux系统安装git及git常用命令

    这篇文章主要介绍了linux系统安装git及git常用命令,大家参考使用吧
    2014-01-01
  • 详解ubuntu14.04搭建(迁移)hustoj记录

    详解ubuntu14.04搭建(迁移)hustoj记录

    这篇文章主要介绍了详解ubuntu14.04搭建(迁移)hustoj记录,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Apache虚拟主机VirtualHost配置项详解

    Apache虚拟主机VirtualHost配置项详解

    在Apache中,VirtualHost容器用于定义一个虚拟主机的配置,它允许在单一的物理服务器上托管多个不同的网站,每个网站可以有自己的域名、文档根目录、错误日志等,这篇文章主要介绍了Apache虚拟主机VirtualHost配置项详解,需要的朋友可以参考下
    2024-07-07
  • linux kill命令详解

    linux kill命令详解

    本篇文章主要介绍了linux kill命令详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Apache SeaTunnel 集群部署超详细教程

    Apache SeaTunnel 集群部署超详细教程

    SeaTunnel Engine 的Master服务和Worker服务分离,每个服务单独一个进程,这篇文章主要介绍了Apache SeaTunnel 集群部署详细教程,需要的朋友可以参考下
    2024-12-12

最新评论