Linux分区如何进行扩展缩小
小樊
37
2025-12-08 02:35:42
Linux 分区扩展与缩小的完整指南
一、核心原则与准备
- 先明确当前是 LVM 还是 非LVM,以及文件系统类型(ext2/3/4 或 XFS)。扩容与缩容的先后顺序不同:
- 扩容:先扩大“底层空间”(分区/LV/磁盘),再扩大“文件系统”。
- 缩容:先缩小“文件系统”,再缩小“底层空间”。
- 文件系统差异:
- ext2/3/4:支持在线/离线增大与缩小(缩小前必须检查并离线)。
- XFS:仅支持在线增大,不支持缩小。
- 在线与离线:
- LVM 逻辑卷:多数场景下 LV 可在线扩容;缩小 LV 前需先卸载文件系统。
- 非LVM 分区:通常需要卸载后才能调整;根分区多需救援模式或 LiveCD 操作。
- 连续空间要求:
- 非LVM 要扩容的分区后面需有相邻未分配空间;若空闲在前面,通常需要备份后删除重建分区。
- 重要提示:
- 操作前务必完整备份,并在关键步骤前创建快照(云盘/虚拟机环境)。
- 缩小操作有数据损坏风险,务必确认空闲空间足够且流程正确。
二、LVM 场景
- 常用命令速览
- 查看:df -hT、lvs、vgs、pvs
- 扩容 LV:lvextend -L +10G /dev/vg/lv 或 -l +100%FREE
- 扩容文件系统:
- ext2/3/4:resize2fs /dev/vg/lv
- xfs:xfs_growfs 挂载点
- 缩小 LV(仅 ext*):先卸载 → e2fsck -f → resize2fs → lvreduce
- 示例 1(ext4,增大 LV 并同步文件系统)
- 扩容 LV
lvextend -L +20G /dev/centos/root
- 在线扩展 ext4 文件系统
resize2fs /dev/centos/root
- 示例 2(ext4,缩小 LV 并把空间给 root)
- 卸载要缩小的 LV(如 /home)
umount /home
- 强制检查并缩小文件系统到目标大小(如 200G)
e2fsck -f /dev/centos/home
resize2fs /dev/centos/home 200G
- 缩小 LV 到与文件系统一致
lvreduce -L 200G /dev/centos/home
- 重新挂载并检查
mount /home
df -h
- 将空闲空间扩展到 root
lvextend -l +100%FREE /dev/centos/root
resize2fs /dev/centos/root
- 示例 3(xfs,仅能增大)
- 扩容 LV
lvextend -L +50G /dev/centos/home
- 扩展 XFS 文件系统(指定挂载点)
xfs_growfs /home
- 示例 4(swap 扩容)
- 关闭 swap
swapoff /dev/mapper/vg-swap
- 扩容 LV
lvextend -L +1G /dev/mapper/vg-swap
- 重新格式化并启用
mkswap /dev/mapper/vg-swap
swapon /dev/mapper/vg-swap
三、非 LVM 场景
- 基本思路
- 扩容:卸载分区 → 调整分区大小(工具如 fdisk/parted/gparted)→ 扩展文件系统 → 重新挂载。
- 缩容:卸载分区 → 检查并缩小文件系统 → 调整分区大小 →(可选)再次让文件系统填满分区。
- 示例 1(ext4 缩小分区)
- 卸载
umount /dev/sda2
- 强制检查
e2fsck -f /dev/sda2
- 缩小文件系统到目标大小(如 10G)
resize2fs /dev/sda2 10G
- 调整分区大小(保持起始扇区不变,仅改结束扇区;可用 parted 的 resizepart)
parted /dev/sda
(parted) resizepart 2 10G
- 让文件系统填满分区(如仍有余量)
resize2fs /dev/sda2
- 挂载并检查
mount /dev/sda2 /mnt
df -h
- 示例 2(ext4 扩大分区)
- 确保分区后侧有相邻未分配空间。
- 用 fdisk/parted 删除并重建分区(保持起始扇区不变,仅扩大结束扇区),或使用 gparted 在线调整。
- 扩展文件系统
resize2fs /dev/sda2
- 示例 3(xfs 仅能增大)
- 扩大分区后执行
xfs_growfs 挂载点
- 重要限制
- 非LVM 要扩容的分区必须与其后方的未分配空间相邻;若空闲在前面,通常需要备份数据、删除并重建分区。
四、云盘与系统盘在线扩容
- 适用于云服务器系统盘(如 ECS 云盘)在控制台扩容后,在系统内扩展分区与文件系统。
- 步骤
- 安装工具
- CentOS/Alibaba Cloud Linux:yum install -y cloud-utils-growpart xfsprogs
- Ubuntu/Debian:apt-get install -y cloud-guest-utils xfsprogs
- 查看磁盘与分区
fdisk -l
df -Th
- 扩展分区(growpart 对指定分区号)
growpart /dev/vda 1
- 扩展文件系统
- ext2/3/4:resize2fs /dev/vda1
- xfs:xfs_growfs /
- 验证
df -h
- 注意
- 内核版本较旧(如 < 3.6.0)可能需要重启完成分区表更新。
- 操作前创建快照;某些环境需确保分区工具版本匹配。
五、常见问题与排错
- 无法卸载分区
- 使用 fuser -mvki 挂载点或 lsof +d 挂载点定位占用进程并终止后再卸载。
- 缩小失败提示空间不足
- 目标大小必须大于已用空间;ext4 缩小前先 e2fsck -f 并 resize2fs 到目标值,再缩小分区。
- XFS 无法缩小
- XFS 不支持在线/离线缩小;如需缩小,通常需备份数据、重建分区并格式化后再恢复。
- 根分区调整
- 非LVM 的根分区多需在救援模式/LiveCD下操作;LVM 的根 LV 可在线扩容,但缩小需先卸载(救援模式)。
- 分区顺序导致无法扩容
- 非LVM 扩容要求未分配空间与目标分区相邻且在后方;否则需备份、删除重建分区。
- 风险提示
- 分区与文件系统调整存在数据丢失风险;请先完整备份/快照,在维护窗口操作,并逐项校验结果。