CentOS 分区扩展实用指南
一、前置准备与总体思路
- 备份重要数据,避免操作失误导致数据丢失。
- 明确当前磁盘布局与文件系统类型:使用命令查看磁盘与分区(如:lsblk、fdisk -l),查看卷组与逻辑卷(如:vgs、lvs),查看挂载与文件系统(如:df -h、df -T)。
- 区分两类场景:
- 使用 LVM(常见路径为 /dev/mapper/centos-root 或 /dev/mapper/cl-root):先扩 LV,再扩文件系统。
- 非 LVM 的“普通分区”(如直接在 /dev/sda1 上的 ext4/xfs):先扩“分区”,再扩文件系统。
- 文件系统扩容命令对应关系:
- ext2/ext3/ext4 → resize2fs
- xfs → xfs_growfs(通常对挂载点执行,如 xfs_growfs /)
二、场景一 使用 LVM 扩容(推荐)
- 典型目标:给 / 扩容,或从 /home 回收空间给 /。
- 步骤
- 扩容底层“物理磁盘/云盘”容量(虚拟机或云平台控制台先扩容)。
- 识别新增空间:
- 若是同一块盘上新增未分配空间:用 growpart /dev/sda 分区号 扩展该分区(如:growpart /dev/sda 2)。
- 若是新增一块盘(如 /dev/sdb):先分区(如 fdisk /dev/sdb,类型选 8e/LVM),再 partprobe 让内核识别。
- 将新增分区初始化为 PV:pvcreate /dev/sdaX(或 /dev/sdb1)。
- 扩容 VG:vgextend centos /dev/sdaX(卷组名可能是 centos 或 cl,用 vgs 确认)。
- 扩容 LV:
- 全部空闲空间给根:lvextend -l +100%FREE /dev/centos/root
- 指定大小:lvextend -L +50G /dev/centos/root
- 扩容文件系统:
- xfs:xfs_growfs /(或 xfs_growfs /dev/mapper/centos-root)
- ext4:resize2fs /dev/centos/root
- 验证:df -h 查看容量是否已增加。
- 示例(从 /home 回收空间给 /)
- 卸载并移除 home 的 LV:umount /home && lvremove /dev/mapper/centos-home
- 扩展根 LV:lvextend -L +100G /dev/centos/root
- 扩展根文件系统:xfs_growfs /
- 重建 home LV 并挂载:
- lvcreate -L 150G -n home centos
- mkfs.xfs /dev/mapper/centos-home
- mount /dev/mapper/centos-home /home
- 验证:df -h。
三、场景二 非 LVM 的普通分区扩容(直接在 /dev/sda1 等)
- 步骤
- 先在虚拟化/云平台把磁盘扩容(如从 100G 扩到 200G)。
- 扩展分区表内该分区大小:
- 推荐:growpart /dev/sda 1(扩展 /dev/sda1 分区)
- 或传统方式(fdisk):记录原分区的“起始扇区”,删除后重建分区,起始扇区必须一致,结束扇区用默认或指定更大值,保存退出。
- 让内核重读分区表:partprobe。
- 扩展文件系统:
- ext4:resize2fs /dev/sda1
- xfs:xfs_growfs /mount_point(如 xfs_growfs /)
- 验证:df -h。
- 注意:MBR 与 GPT 均可使用 growpart;GPT 场景下若提示修复分区表备份,按提示输入 Fix 完成修复后再扩展。
四、常见要点与排错
- 扩容顺序务必正确:底层“磁盘/分区” →(LVM 则再扩)PV → VG → LV → 最后扩“文件系统”。文件系统扩容是必须步骤,否则 df -h 不会反映新容量。
- 工具与命令对应关系:
- 扩分区:growpart(推荐)、fdisk/parted
- 扩 LVM:pvcreate、vgextend、lvextend
- 扩文件系统:resize2fs(ext)、xfs_growfs(xfs)
- 在线调整限制:xfs_growfs 通常对“已挂载”的文件系统执行;ext4 的 resize2fs 支持在线扩容。
- 卸载失败处理:若卸载 /home 提示忙,可用 fuser -m -v -k /home 结束占用进程后再卸载。
- 云盘与虚拟化:云硬盘先在控制台扩容,再用 growpart 扩分区;虚拟机先在 VMware/KVM 等工具里扩展虚拟磁盘。
- 风险提示:分区与 LVM 操作有数据风险,务必先完整备份,并在变更窗口内执行。