当前位置:首页>Linux>Linux 在线扩容零停机:一次真实操作 + 6 种场景全指南

Linux 在线扩容零停机:一次真实操作 + 6 种场景全指南

  • 2026-10-11 07:53:56
Linux 在线扩容零停机:一次真实操作 + 6 种场景全指南
哈喽各位技术同好,欢迎来到虚拟化时代君(XNHCYL)

收不到推送?别急,先点个⭐星标,系统才知道你是真爱。

我是虚拟化时代君,一个把服务器当朋友的技术宅。这里专注分享 虚拟化 / 云计算 / 运维实战 / 脚本技巧 / 软件工具 / 白嫖资源,能少踩坑的,绝不让你多走一步弯路。

每天更新,不定时掉福利,技术路上我们一起卷。

第一章、Linux 在线扩容零停机:一次真实操作 + 6 种场景全指南

Rocky Linux 10.1 虚拟机,VMware 给 vmdk 加了 10G,要让系统真正用上这 10G。全程在线,不重启、不卸载、业务不中断。

写在前面

事情起因很简单:一台跑了 Telegram 告警机器人 的 Rocky Linux 10 虚拟机,根分区使用率冲到 63%,再涨下去日志就要爆。VMware 那边直接把 vmdk 从 20G 扩到 30G,整个过程在 vCenter 点几下就完了。

但接下来才是真正的活——Linux 系统里 lsblk 看到的还是 20G。

扩盘这件事,VMware 只完成了一半。剩下的一半在系统里:内核要识别、分区要重画、LVM 要刷新、文件系统要在线扩。任何一步漏了,10G 都是空气。

本文是这次操作的完整复盘:6 步把 17G 扩到 27G,零停机。然后把同样的方法论铺开到另外 6 种常见场景——LVM+ext4、非 LVM、新加独立硬盘、阿里云/腾讯云/AWS 云盘——一篇收齐。


一、本次真实操作记录(LVM + xfs)

0. 操作前现状

[root@vmrocky ~]# lsblkNAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSsda           8:0    0   20G  0 disk├─sda1        8:1    0  600M  0 part /boot/efi├─sda2        8:2    0    1G  0 part /boot└─sda3        8:3    0 18.4G  0 part  ├─rl-root 253:0    0 16.4G  0 lvm  /  └─rl-swap 253:1    0    2G  0 lvm  [SWAP][root@vmrocky ~]# df -hT /Filesystem          Type  Size  Used Avail Use% Mounted on/dev/mapper/rl-root xfs    17G   11G  6.1G  63% /

结构:sda3 → PV → VG(rl) → LV(rl-root) → xfs → /

VMware 把 vmdk 从 20G 扩到 30G,但 Linux 没感知,lsblk 还是 20G。

1. 让内核识别新容量(SCSI rescan)

# 扫描所有 SCSI host,发现新设备 / 新容量for h in /sys/class/scsi_host/host*/scan; do echo '- - -' > $h; done# 强制 sda 重读自己的容量echo 1 > /sys/class/block/sda/device/rescan

验证:

[root@vmrocky ~]# lsblk /dev/sdasda           8:0    0   30G  0 disk     ← 已变成 30G├─sda1 ...├─sda2 ...└─sda3        8:3    0 18.4G  0 part     ← 分区还是 18.4G,下一步处理
关键:扩盘后 sda 容量更新了,但分区表里的 sda3 还停在老位置。

2. 扩 sda3 分区(growpart)

Rocky 10 默认没装 growpart,先装:

dnf install -y cloud-utils-growpart

然后:

growpart /dev/sda 3# 输出:CHANGED: partition=3 start=3328000 old: size=38612992 ... new: size=59586527

growpart 自动把分区扩到磁盘末尾,无需手算扇区,在线安全(不会动 sda1/sda2)。

为什么不用 fdisk / parted?两者也行,但 fdisk 要删了重建分区(步骤多易错),parted resizepart 交互式且不同版本行为有差异。growpart 是云镜像标配,最稳。

3. 扩 PV(物理卷)

pvresize /dev/sda3# 输出:Physical volume "/dev/sda3" changed#       1 physical volume(s) resized

PV 现在感知到底层分区变大了,VG 自动多出 10G 可用空间。

4. 扩 LV(逻辑卷)

lvextend -l +100%FREE /dev/rl/root# 输出:Size of logical volume rl/root changed from 16.41 GiB to 26.41 GiB

-l +100%FREE 表示吃掉 VG 里所有剩余 extents。

也可写成 -L +10G(精确加 10G)。

5. 扩文件系统

xfs 只能扩、不能缩,且必须在挂载状态下扩:

xfs_growfs /# 输出:data blocks changed from 4301824 to 6923264

6. 验证

[root@vmrocky ~]# df -hT /Filesystem          Type  Size  Used Avail Use% Mounted on/dev/mapper/rl-root xfs    27G   11G   16G  40% /

完成 — / 从 17G → 27G,使用率 63% → 40%,零停机。


二、一行命令版(同构环境复用)

确认是 LVM + xfs 且只有一个数据盘 sda 的场景:

dnf install -y cloud-utils-growpart && \for h in /sys/class/scsi_host/host*/scan; do echo '- - -' > $h; done && \echo 1 > /sys/class/block/sda/device/rescan && \growpart /dev/sda 3 && \pvresize /dev/sda3 && \lvextend -l +100%FREE /dev/$(vgs --noheadings -o vg_name | tr -d ' ')/root && \xfs_growfs / && \df -hT /

三、其他扩容场景

场景 A:LVM + ext4

前 4 步完全一样(rescan → growpart → pvresize → lvextend),最后一步换:

resize2fs /dev/mapper/rl-root

resize2fs 对 ext2/3/4 都适用,在线扩容也支持。

场景 B:非 LVM,分区直接挂载(xfs)

例如 /dev/sda1 直接挂在 /data:

# 1. rescanfor h in /sys/class/scsi_host/host*/scan; do echo '- - -' > $h; doneecho 1 > /sys/class/block/sda/device/rescan# 2. 扩分区growpart /dev/sda 1# 3. 扩文件系统(xfs)xfs_growfs /data

场景 C:非 LVM + ext4

growpart /dev/sda 1resize2fs /dev/sda1

场景 D:新加一块独立硬盘(不是扩老盘)

加的是 sdb,需要:

# 1. 识别for h in /sys/class/scsi_host/host*/scan; do echo '- - -' > $h; donelsblk    # 应该看到 sdb# 2. 两条路线 ——# 路线 1:扩入现有 LVM(推荐)pvcreate /dev/sdbvgextend rl /dev/sdb            # rl 是你的 VG 名lvextend -l +100%FREE /dev/rl/rootxfs_growfs /# 路线 2:独立挂载点mkfs.xfs /dev/sdbmkdir /data2mount /dev/sdb /data2# 持久化echo "UUID=$(blkid -s UUID -o value /dev/sdb)  /data2  xfs  defaults  0 0" >> /etc/fstab

场景 E:根分区扩容失败的兜底(分区不连续)

如果新加的空间不在末尾、或 sda3 后面还有别的分区,growpart 会失败。两种处理:

  1. 加新盘扩 LVM
    (见场景 D 路线 1)—— 最干净
  2. 物理移动分区
    (要离线,要备份,新手别碰)

场景 F:阿里云 / 腾讯云 / AWS 云盘在线扩容

云厂商控制台扩完盘后步骤一致,只是设备名不同(可能是 vda、nvme0n1、xvda):

# 阿里云 / 腾讯云:通常是 vdagrowpart /dev/vda 1xfs_growfs /        # 或 resize2fs /dev/vda1# AWS Nitro:nvme0n1growpart /dev/nvme0n1 1xfs_growfs /

四、文件系统对照速查表

文件系统
在线扩容
命令
缩容
xfs
支持
xfs_growfs <挂载点>
 不支持
ext4
支持
resize2fs <设备>
(需先 umount + e2fsck)
ext3
支持
resize2fs <设备>
(同上)
btrfs
支持
btrfs filesystem resize max <挂载点>
同上
zfs
支持
zpool online -e <pool> <dev>
不支持

五、避坑清单

  1. rescan 前先 lsblk 留一份现状
    ,扩完对比,确认是预期的盘变大。
  2. 多块盘环境
    :echo 1 > /sys/class/block/sdX/device/rescan 指定具体盘,避免误扫。
  3. growpart 报错 NOCHANGE: partition X is size ... could only be grown by ...
    :磁盘容量没刷新到内核,重新 rescan,必要时确认 VMware 那边真的保存了。
  4. xfs 不能缩
    :规划时宁可 LV 先小后扩,别一次给死。
  5. 快照保护
    :生产环境扩容前,VMware 拍快照;LVM 的话 lvcreate -s -L 1G -n snap /dev/rl/root 也能保。
  6. swap 在同 VG 内
    :不影响扩 root,但 swap 想扩需 swapoff → lvextend → mkswap → swapon,会短暂没有 swap。
  7. fstab 用 UUID 而非设备名
    :新加盘后设备名可能变。
  8. 不要在 sda3 后面有别的分区时贸然 growpart
    :会失败,看场景 E。

六、回滚 / 应急

LVM 体系下扩容不可逆(xfs 不能缩),所以:

  • 扩之前拍 VMware 快照
  • 扩文件系统这一步前,可以先 lvextend 但暂不 xfs_growfs,验证 LV 大小没问题再扩 fs
  • 万一 xfs_growfs 失败但 LV 已扩大:xfs 状态不会损坏,重试即可;最坏情况从快照回滚

七、附:一键巡检脚本片段

扩容后顺手核对:

echo "=== 块设备 ===" && lsblkecho "=== 文件系统 ===" && df -hTecho "=== LVM ===" && vgs && lvsecho "=== inode ===" && df -i /

官方Github:  https://github.com/Aidan-996/linux-ops-notes

操作日期:2026-05-11 目标主机:某台 Rocky Linux 10.1 虚拟机 结果:/ 17G → 27G,业务零中断


如果你在做企业 IT 运维,类似 VMware/Linux/AD/NetScaler 的实战记录我会持续往这个仓库收。觉得有用,欢迎关注公众号,下一篇打算写新加独立硬盘并入 LVM 的完整流程。

【以上内容均属虚拟化时代君整理,大家仅供参考!】


往期回顾
点击下方链接阅读精彩文章
Windows系统自动巡检,5秒内发现问题,助你轻松优化电脑
Citrix Netscaler 爆出9.3评分高危漏洞,修复CVE-2026-3055 和 CVE-2026-4368,建议紧急修复
Citrix Netscaler 又更新了Netscaler 14.1-66.54版本,授权模式已经改变
Citrix Netscaler 又更新了、授权模式已完全变化,您的设备还授权正常吗?
Citrix Netscaler又更新了?新版支持Nutanix AHV导入!
漏洞风险再次升级 | Citrix NetScaler(CVE-2025-5349 & 5777)已遭在野利用,紧急排查!
玩的不是存储,是上百万资产!DELL PowerStore 入门白嫖实操体验
突发!17000个Citrix云桌面某分支无法登录,PVS云桌面启动后的致命错误背后是...?
全网独创VMware Horizon和Citrix云桌面免费对接Radius进行Google二次认证教程
Citrix Virtual Apps and Desktops云桌面内网Storefront登录流程详解

资源申明:小编更新资源文章只是为了给大家提供一个绿色学习的平台,如果你在本站看到的任何图片文字有涉及到你的利益以及版权都可以联系小编删除。联系微信:XNHSDJ

最新文章

随机文章