当前位置:首页>Linux>Linux磁盘扩容实战经验分享

Linux磁盘扩容实战经验分享

  • 2026-09-10 11:40:58
Linux磁盘扩容实战经验分享

适用场景:虚拟机磁盘从 200G 扩到 500G(hypervisor 层已扩),系统使用 GPT 分区表 + LVM,需要把新增空间扩容到 /home。 文件系统:Rocky Linux 默认 XFS(只能扩大,不能缩小)。


一、环境现状

设备
大小
类型 / 用途
/dev/sda
500 GiB
整块虚拟磁盘(GPT)
/dev/sda1
600 MiB
EFI System,挂载 /boot/efi
/dev/sda2
1 GiB
/boot
/dev/sda3
198.4 GiB
Linux LVM(卷组 rl)
/dev/sda4
300 GiB
新建分区(本次扩容用)

卷组 rl 内逻辑卷:

  • rl-root 70G,挂载 /
  • rl-swap 7.9G,SWAP
  • rl-home 120.5G,挂载 /home ← 本次扩容目标

二、查看当前分区情况

通过fdisk -l查看 总磁盘为500G,原实际在用的为200G

fdisk -lGPT PMBR size mismatch (419430399 != 1048575999) will be corrected by write.Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectorsDisk model: Virtual diskUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gptDisk identifier: 7AF193B8-A86E-492C-9CB4-4F3A77C95FE6Device       Start       End   Sectors   Size Type/dev/sda1     2048   1230847   1228800   600M EFI System/dev/sda2  1230848   3327999   2097152     1G Linux filesystem/dev/sda3  3328000 419428351 416100352 198.4G Linux LVMDisk /dev/mapper/rl-root: 70 GiB, 75161927680 bytes, 146800640 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/rl-swap: 7.88 GiB, 8455716864 bytes, 16515072 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/rl-home: 120.54 GiB, 129423638528 bytes, 252780544 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes
  • 首次 fdisk -l 提示的 GPT PMBR size mismatch (419430399 != 1048575999) will be corrected by write,是因为磁盘在 hypervisor 层从约 200G 扩到了 500G,但 GPT 的备份头还停留在旧位置。
[root@localhost ~]# lsblkNAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTSsda           8:0    0   500G  0 disk├─sda1        8:1    0   600M  0 part /boot/efi├─sda2        8:2    0     1G  0 part /boot└─sda3        8:3    0 198.4G  0 part  ├─rl-root 253:0    0    70G  0 lvm  /  ├─rl-swap 253:1    0   7.9G  0 lvm  [SWAP]  └─rl-home 253:2    0 120.5G  0 lvm  /home

2. 为什么 sda4 是 "Linux filesystem" 而不是 "Linux LVM"?

因为执行 t 修改类型时输入了 8e,但提示 Type of partition 4 is unchanged。原因是:

  • 8e 是 MBR/DOS 分区表中 "Linux LVM" 的类型码,不是 GPT 的类型别名。
  • 你的磁盘是 GPT 分区表(Disklabel type: gpt)。在 GPT 下,fdisk 不认 8e,所以没生效,分区保持默认的 "Linux filesystem"。
  • 在 GPT 下,fdisk 里 "Linux LVM" 的别名是 30(对应 GUID E6D6D379-F507-44C2-A23C-238F2A3DF928)。

重要:分区类型只是一个"标记/提示",并不影响 LVM 实际工作。pvcreate 在任何类型的分区上都能成功。所以即使类型是 "Linux filesystem",下面的扩容步骤也能正常完成。但为规范、便于运维识别,建议改成 Linux LVM。


三、完整操作步骤

⚠️ 操作前务必备份重要数据 / 做快照。LVM/分区操作有风险。 全程使用 root 用户。

步骤 0:(强烈建议)先备份或快照

在虚拟化平台对该虚拟机打快照,或备份 /home 重要数据。

步骤 1:用 fdisk 新建分区 sda4

若 sda4 已经创建好,可跳过本步,直接进入步骤 2。 下面是完整的 fdisk 交互过程,# 后为说明,无需输入。

fdisk /dev/sdaWelcome to fdisk (util-linux 2.37.4).Changes will remain in memory only, until you decide to write them.Be careful before using the write command.GPT PMBR size mismatch (419430399 != 1048575999) will be corrected by write.This disk is currently in use - repartitioning is probably a bad idea.It's recommended to umount all file systems, and swapoff all swappartitions on this disk.Command (m for help): n             #新建分区Partition number (4-128, default 4): #回车黑认使用4First sector (419428352-1048575966, default 419428352): #回车Last sector, +/-sectors or +/-size{K,M,G,T,P} (419428352-1048575966, default 1048575966):                               #回车按默认值Created a new partition 4 of type 'Linux filesystem' and of size 300 GiB.Command (m for help): w                #保存The partition table has been altered.Syncing disks.

说明:

  • 首次 fdisk -l 出现 GPT PMBR size mismatch ... will be corrected by write,在执行 w 写入时会被自动修正,无需手动处理。
  • 新建分区默认类型是 Linux filesystem,下一步再改为 LVM。

步骤 2:用 fdisk 把 sda4 类型改为 Linux LVM(推荐)

关键点:GPT 分区表里 Linux LVM 的别名是 30,不是 MBR 的 8e。 之前输入 8e 提示 Type ... is unchanged 就是这个原因。

方式 A —— 用 fdisk 交互修改:

fdisk /dev/sda                         # 再次进入 fdiskCommand (m for help): t                # t = 修改分区类型Partition number (1-4, default 4): 4   # 选择分区 4(也可直接回车用默认)Partition type or alias (type L to list all): 30                                       # 输入 30(GPT 的 Linux LVM 别名)                                       # 可先输入 L 查看全部别名Changed type of partition 'Linux filesystem' to 'Linux LVM'.Command (m for help): w                # 写入并退出The partition table has been altered.Syncing disks.

提示:在 t 之后输入 L 可列出所有 GPT 类型别名,其中30 = Linux LVM、20 = Linux filesystem、19 = Linux swap、1 = EFI System。

方式 B —— 用 sgdisk(非交互,更省事;sgdisk 用 8e00 表示 Linux LVM):

sgdisk -t 4:8e00 /dev/sda

验证:

fdisk -l /dev/sda | grep sda4# 期望看到类型变为:Linux LVM

注意:分区类型只是标记,即使保持 "Linux filesystem",后续 pvcreate/扩容也能成功,改成 LVM 只是更规范。

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

磁盘正在使用中,分区表更改不会立即对内核生效,需要刷新:

partprobe /dev/sda# 若 partprobe 不可用或失败,可用:# partx -u /dev/sda

确认 sda4 已被识别:

lsblk /dev/sda

如果上述命令均提示设备忙、内核仍未识别 sda4,则重启服务器后再继续(重启最稳妥)。

步骤 4:创建物理卷(PV)

pvcreate /dev/sda4

验证:

pvs# 期望列表中出现 /dev/sda4

步骤 5:把新 PV 加入卷组 rl

vgextend rl /dev/sda4

验证(应能看到 VG 空闲空间增加约 300G):

vgsvgdisplay rl | grep -i free

步骤 6:扩展逻辑卷 rl-home

把卷组里全部空闲空间分给 /home:

lvextend -l +100%FREE /dev/mapper/rl-home

如果不想全部给 home,只加固定大小,改用:lvextend -L +300G /dev/mapper/rl-home

验证:

lvslvdisplay /dev/mapper/rl-home | grep -i "LV Size"

步骤 7:扩展文件系统(XFS)

先确认文件系统类型:

df -T /home# Rocky 默认是 xfs

XFS 扩容(注意:XFS 用挂载点,且可在线扩容):

xfs_growfs /home

如果 /home 是 ext4(用 df -T 确认),则改用:resize2fs /dev/mapper/rl-home

步骤 8:最终验证

df -h /homelsblk

四、命令速查(确认类型后可直接照抄)

# 0. 新建分区(fdisk 交互):n → 回车 → 回车 → 回车 → w#    (或一行非交互:sgdisk -n 4:0:0 /dev/sda)# 1. 改分区类型为 LVM(GPT)#    fdisk 交互:t → 4 → 30 → wsgdisk -t 4:8e00 /dev/sda# 2. 刷新分区表(必要时改为重启)partprobe /dev/sdalsblk /dev/sda# 3. 扩容 LVM 三连pvcreate /dev/sda4vgextend rl /dev/sda4lvextend -l +100%FREE /dev/mapper/rl-home# 4. 扩展文件系统(XFS)xfs_growfs /home# 5. 验证df -h /home

五、注意事项与常见问题

  • 类型 8e vs 30
    :MBR 用 8e,GPT 用 30(fdisk)或 8e00(sgdisk)。这是本次"类型没改成功"的根因。
  • 类型不影响功能
    :即使保持 "Linux filesystem",pvcreate 也能用,扩容仍可完成;改成 LVM 只是更规范。
  • XFS 只能扩大不能缩小
    :扩容方向不可逆,操作前确认目标卷选对(本次是 rl-home)。
  • XFS 用挂载点扩容
    :xfs_growfs /home,而非设备名;resize2fs 才是用设备名。
  • 分区表刷新失败
    :partprobe / partx -u 不生效时,重启是最可靠的办法。
  • PMBR mismatch
    :写入分区表(w)时已自动修正,无需额外处理。
  • 务必先备份/快照
    :任何分区与卷操作都有数据丢失风险。

最新文章

随机文章