当前位置:首页>Linux>Linux 在线扩容

Linux 在线扩容

  • 2026-10-11 06:40:32
Linux 在线扩容
一台 Linux虚拟机,系统盘从 50GB 扩容到 200GB,根分区/ 使用 LVM 管理(/dev/mapper/ubuntu--vg-ubuntu--lv),挂载在/ 上。业务正在运行,要求 零停机 完成扩容。

完整操作实录

步骤 1:确认磁盘状态

# 查看磁盘和分区总大小lsblk# NAME                         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS# sda                            8:0    0  200G  0 disk   ← 磁盘已识别 200G# ├─sda1                         8:1    0    1M  0 part# ├─sda2                         8:2    0    2G  0 part /boot# └─sda3                         8:3    0   48G  0 part   ← 分区还是 48G#   └─ubuntu--vg-ubuntu--lv    253:0    0   48G  0 lvm  /  ← LV 也是 48G# 查看卷组状态sudo vgdisplay# VG Size: 47.99 GiB# Free PE / Size: 0 / 0   ← 卷组无空闲空间

步骤 2:扩展物理分区

# 使用 parted 在线扩展分区sudo parted /dev/sda(parted) print# Warning: Not all of the space available to /dev/sda appears to be used...(parted) resizepart 3# Partition number? 3# End? [50.0GB]? 100%   ← 扩展到磁盘末尾# 或输入具体大小如 215GB(parted) print# 确认 sda3 已从 48G 变为约 213G(parted) quit

步骤 3:通知内核重新读取分区表

# 关键:不重启让内核识别新分区大小sudo partprobe -s# /dev/sda: gpt partitions 1 2 3

步骤 4:扩展 LVM 物理卷

sudo pvresize /dev/sda3# Physical volume "/dev/sda3" changed# 1 physical volume(s) resized / 0 not resizedsudo pvs# PV         VG          Fmt  Attr PSize   PFree# /dev/sda3  ubuntu-vg   lvm2 a--  199.02g 151.02g  ← 新增约 151G 空闲

步骤 5:扩展逻辑卷 + 文件系统

# 推荐方式:-r 参数自动识别并扩展文件系统sudo lvextend -r-l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

步骤 6:验证扩容结果

df-h /# /dev/mapper/ubuntu--vg-ubuntu--lv  196G   15G  172G   8% /  ← 根分区已扩容sudo lvs# LV     VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert# ubuntu-lv ubuntu-vg -wi-ao---- 199.02g
全程无重启,业务零中断,耗时约 2-3 分钟。

二、6 种扩容场景全指南

场景 1:LVM 根分区扩容(VG 有空闲空间)

适用:云盘扩容后,VG 已有未分配空间。

# 一步完成:扩展 LV + 文件系统sudo lvextend -r-L +20G /dev/mapper/centos-root# 或扩展到指定总大小sudo lvextend -r-L 100G /dev/mapper/centos-root# 或使用全部空闲空间sudo lvextend -r-l +100%FREE /dev/mapper/centos-root

场景 2:LVM 根分区扩容(VG 无空闲空间,需新增磁盘)

适用:虚拟机新增虚拟磁盘,或物理机插入新硬盘。

# 1. 识别新磁盘(如 /dev/sdb)lsblk# 2. 初始化物理卷sudo pvcreate /dev/sdb# 3. 扩展到卷组sudo vgextend ubuntu-vg /dev/sdb# 4. 扩展逻辑卷和文件系统sudo lvextend -r-l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv# 5. 验证df-h /

场景 3:非 LVM 的 ext4 根分区扩容

适用:传统分区方式,无 LVM 层。

# 1. 确认分区类型sudo lsblk -f# NAME   FSTYPE LABEL UUID                                 MOUNTPOINT# vda# └─vda1 ext4   root  33b46ac5-7482-4aa5-8de0-60ab4c3a4c78 /# 2. 扩展物理分区(parted)sudoparted /dev/vda(parted) resizepart 1End? [50GB]? 100%(parted) quit# 3. 通知内核sudo partprobe# 4. 在线扩展文件系统sudo resize2fs /dev/vda1# 5. 验证df-h /

场景 4:XFS 文件系统在线扩容

适用:CentOS/RHEL 默认使用 XFS 根分区。

# XFS 只能在线扩容(必须已挂载),不能离线扩容sudo xfs_growfs /# 或指定挂载点sudo xfs_growfs /data# 结合 LVM 一步完成sudo lvextend -r-L +50G /dev/mapper/rhel-root# -r 参数会自动调用 xfs_growfs

场景 5:云服务器系统盘扩容

适用:在云平台控制台扩容系统盘后,在系统内完成分区扩展。

# 阿里云/华为云通用流程# 1. 在控制台扩容云盘(如从 40G 到 100G)# 2. 安装 growpart 工具(部分系统自带)sudoaptinstall cloud-guest-utils   # Ubuntu/Debiansudo yum install cloud-utils-growpart # CentOS/RHEL# 3. 扩展分区(假设系统盘为 /dev/vda,分区为 /dev/vda3)sudo growpart /dev/vda 3# 4. 扩展文件系统# ext4:sudo resize2fs /dev/vda3# xfs:sudo xfs_growfs /# 5. 验证df-h

场景 6:物理机/虚拟机磁盘扩容后,扩展已有 PV 所在分区

适用:VMware/Hyper-V 中扩展了已有虚拟磁盘,需要扩大已有分区上的 PV。

# 1. VMware 中扩展虚拟磁盘(如从 100G 到 200G)# 2. 确认磁盘已识别新大小sudofdisk-l /dev/sda# Disk /dev/sda: 214.7 GB  ← 已识别# 3. 使用 parted 扩展分区(不删除数据)sudoparted /dev/sda(parted) resizepart 3100%(parted) quit# 4. 通知内核sudo partprobe# 5. 扩展 PVsudo pvresize /dev/sda3# 6. 扩展 LV 和文件系统sudo lvextend -r-l +100%FREE /dev/mapper/centos-root# 7. 验证df-h /

三、核心命令速查

步骤
命令
说明
查看磁盘
lsblk, fdisk   -l
确认磁盘总大小和分区结构
查看 LVM
pvs, vgs, lvs
查看物理卷、卷组、逻辑卷状态
扩展分区
parted → resizepart
在线调整分区大小
通知内核
partprobe -s
不重启重新读取分区表
扩展 PV
pvresize /dev/sdXN
让 LVM 识别分区新大小
扩展 LV
lvextend -L +size /dev/vg/lv
扩展逻辑卷
扩展文件系统
resize2fs (ext4) / xfs_growfs (XFS)
在线扩展文件系统
一键完成
lvextend -r -l +100%FREE /dev/vg/lv
扩展 LV + 自动扩展 FS

最新文章

随机文章