如何在 Ubuntu 上扩展磁盘分区:针对 ext4、LVM、VPS 与双系统的完整指南

1. 介绍

在使用 Ubuntu 时,你可能会遇到“磁盘空间不足”或“因为没有空闲存储而无法安装新应用”等情况。此时,一个实用的解决方案是 分区扩容。分区扩容是指增大已有磁盘分区的大小,以更高效地利用存储空间。

Ubuntu 在服务器和桌面两方面都被广泛使用,分区管理在虚拟机、VPS(虚拟专用服务器)以及双系统等各种环境中经常需要进行。然而,许多用户会感到不确定,心里会想“该使用哪种方法?”或“如果操作失误会丢失数据吗?”

本文将尽可能清晰地讲解 Ubuntu 上的分区扩容,从简单的操作步骤到 LVM 与虚拟化环境中的高级示例。由于分区操作涉及重要风险,我们还会介绍准备工作和安全执行任务的关键要点。

本指南旨在帮助各类用户,无论是刚接触 Linux 命令行的新手,还是已经在其他发行版上使用过分区的中级用户。
分区扩容需要谨慎处理,但只要遵循正确的步骤,就能在保护重要数据的同时,充分利用存储容量。

2. 分区扩容的前置知识

在 Ubuntu 上进行分区扩容之前,了解一些基本概念有助于避免错误和问题。本节将解释分区与文件系统的基础知识、是否使用 LVM,以及当前 Ubuntu 分区布局的趋势。

2.1 什么是分区?

分区是一种将硬盘或 SSD 等物理存储设备划分为多个虚拟区域的机制。例如,一块磁盘可以被划分为系统区、用户数据区和交换区,每个区域都被视为独立的区域。Ubuntu 的系统文件、用户数据和交换空间通常会被分到不同的分区中。

2.2 分区表类型(GPT 与 MBR)

记录磁盘分区布局的主要方式有两种:GPT(GUID Partition Table)和 MBR(Master Boot Record)。

  • MBR:一种较旧的格式,支持最大 2 TB 的磁盘,并且最多只能有四个主分区。
  • GPT:一种较新的格式,支持大于 2 TB 的磁盘以及超过 128 个分区。GPT 已成为现代 Ubuntu 系统的标准。

如果不确定系统使用的是哪种格式,可以使用如下命令检查:

bash
sudo parted -l

2.3 是否使用 LVM(逻辑卷管理器)

在 Ubuntu 中,分区可以直接扩容,也可以通过 LVM(Logical Volume Manager)进行扩容,后者提供了更灵活的卷管理方式。

  • 不使用 LVM(标准分区):常见的做法是直接在分区上创建 ext4 等文件系统。
  • 使用 LVM:先在磁盘上创建物理卷(PV),再将多个 PV 合并为卷组(VG),随后在卷组中划分逻辑卷(LV)。这种结构支持灵活的大小调整,广泛用于服务器和云环境。

分区扩容的步骤会因是否使用 LVM 而有所不同。

2.4 Ubuntu 中的典型分区布局

在 Ubuntu 安装过程中,可以选择是否使用 LVM。近年来的服务器环境(尤其是 Ubuntu 20.04 及以后版本)通常推荐或默认使用 LVM。
而桌面版安装和双系统环境则常采用更简单的布局,例如单一的 ext4 分区。

2.5 扩容前的重要注意事项

在执行分区扩容之前,磁盘上必须有 未分配空间。根据磁盘布局和分区位置的不同,扩容可能无法实现。务必使用 lsblkparted 等命令检查当前磁盘配置,例如:

bash
lsblk
parted /dev/sda print

此外,强烈建议提前备份重要数据。如果因错误或意外问题导致数据丢失,拥有备份将使您能够自信地继续操作。

3. 按环境划分的分区扩展方法

在 Ubuntu 上扩展分区的过程因环境和磁盘配置而异。本节解释四种常见情形:非 LVM 环境、LVM 环境、VPS 或云系统中的在线扩展,以及双启动环境。

3.1 在非 LVM(ext4)环境中扩展分区

这是最常见的情况,即在未使用 LVM 的情况下,直接在分区上创建 ext4 等文件系统。

  1. 增加磁盘容量
  • 对于虚拟机或 VPS,请在管理控制台中增加磁盘容量。
  • 对于实体 PC,请确保有未分配的空间。
  1. 扩展分区
  • 使用 sudo partedsudo fdisk 来扩展目标分区。
  • 使用 parted 时,可以使用如下命令(示例:扩展 /dev/sda1):sudo parted /dev/sda (parted) resizepart 1 <new end position (e.g., 100%)>
  1. 扩展文件系统
  • 分区扩展后,还必须扩展文件系统。
  • 对于 ext4,运行 resize2fs 命令:sudo resize2fs /dev/sda1
  • 这会将新空间应用到文件系统。
  1. 验证扩展
  • 完成后,使用 df -h 确认磁盘容量已增加。

3.2 在 LVM 环境中扩展分区

使用 LVM 时,磁盘空间可以更灵活地扩展。

  1. 增加磁盘容量
  • 首先,扩展物理或虚拟磁盘。
  • 对于实体磁盘,确保有未分配的空间。
  1. 调整物理卷(PV)大小
  • 使新添加的空间可供 LVM 使用:sudo pvresize /dev/sda2
    *(设备名称因环境而异。)
  1. 扩展逻辑卷(LV)
  • 指定要扩展的逻辑卷:sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  • -l +100%FREE 分配所有可用的空闲空间。
  1. 扩展文件系统
  • 若使用 ext4,使用 resize2fs 扩展:sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
  1. 验证
  • 使用 df -hlsblk 检查结果。

3.3 在 VPS 和云环境中的在线扩展

在 VPS 或云环境中,通常希望在不重启服务器的情况下扩展分区。此时 growpart 命令非常有用。

  1. 增加磁盘容量
  • 通过供应商的管理控制台添加磁盘容量。
  1. 使用 growpart 扩展分区
  • 若已安装 cloud-utils 包,可使用 growpartsudo growpart /dev/sda 1
  • 这会自动扩展分区(例如 /dev/sda1)。
  1. 扩展文件系统
  • 然后使用 resize2fs 扩展文件系统:sudo resize2fs /dev/sda1
  1. 验证
  • 使用 df -h 确认扩展。

3.4 双启动(Windows / Ubuntu)环境中的调整

当 Windows 与 Ubuntu 安装在同一磁盘上时,如果未分配空间不在 Ubuntu 分区相邻位置,可能无法进行扩展。

  • 移动未分配空间
  • 使用 Windows 分区工具(如 MiniTool Partition Wizard)将未分配空间移动到 Ubuntu 分区旁边。
  • 在 Ubuntu 中扩展
  • 按照上述标准扩展步骤操作。
  • 备份是强制性的
  • 双启动环境更容易出现问题,因此在继续之前务必备份数据。

4. 故障排除与常见问题

在分区扩展的前、后或过程中可能会出现各种问题和疑问。本节汇总了常见问题及典型错误的解决方案。

4.1 常见问题 (FAQ)

Q1. 我找不到空闲(未分配)空间。该怎么办?
A. 分区扩展需要未分配的空间。使用 lsblksudo parted /dev/sda print free 检查磁盘状态。如果没有未分配空间,删除不必要的分区或在虚拟环境中增大磁盘容量。

Q2. 如果我没有使用 LVM,是否需要 pvresizelvextend
A. 不需要。这些命令仅在使用 LVM 时才必需。对于普通的 ext4 分区,按照 “扩展分区 → 扩展文件系统” 的步骤操作。可以使用 lsblksudo pvs 检查系统是否使用了 LVM。

Q3. 分区旁边没有未分配空间。我还能扩展它吗?
A. 分区扩展必须有相邻的未分配空间。如果未分配空间位于其他位置,需要使用 MiniTool Partition Wizard 等工具调整分区顺序或位置。修改分区前务必备份数据。

Q4. 在 Ubuntu 正在运行时修改分区安全吗?
A. 系统分区(如 /)或已挂载的分区在使用中可能无法扩展。建议使用 Live USB 启动后进行操作。许多云服务器和 VPS 环境支持在线扩展,但如果出现错误,可能需要临时卸载分区或重启。

Q5. swap 分区阻碍了扩展。我该怎么办?
A. 暂时使用 swapoff 禁用 swap,删除 swap 分区,完成扩展后再重新创建 swap(如有需要),并相应更新 /etc/fstab

Q6. 我在虚拟环境中增大了磁盘大小,但操作系统没有识别,为什么?
A. 在 hypervisor(VMware、VirtualBox 等)中扩容后,操作系统需要重新扫描设备。可使用以下命令:
echo 1 > /sys/class/block/sdX/device/rescan,或重启系统,亦可运行 partprobe

Q7. GPT 与 MBR 有何区别,应该选哪种?
A. GPT 支持大于 2TB 的磁盘和更多分区,推荐用于现代系统。只有在需要兼容旧系统时才选择 MBR。

4.2 常见错误及解决方案

  • “no free space available” → 需要相邻的未分配空间。调整分区位置后重试。
  • “device is busy” 或 “resource busy” → 分区已挂载或正在使用。卸载后或使用 Live USB。
  • “The partition is currently in use” → 目标分区处于活动状态。停止相关服务或重启后再试。
  • “resize2fs: Bad magic number in super-block” → 请确认文件系统类型。对于 XFS,请使用 xfs_growfs 而非 resize2fs

5. 执行后检查与总结

完成分区扩展后,务必验证结果,以确保没有因操作失误或意外问题导致的异常。

5.1 如何验证扩展结果

(1) 检查磁盘使用情况
使用 df -h 显示已挂载分区的使用量和可用空间。确认扩展后的分区显示出预期的容量增长。

df -h

(2) 检查分区布局
lsblk 命令以树形结构展示存储设备和分区,可用于核对大小和布局。

lsblk

(3) 使用 parted 进行详细检查
sudo parted /dev/sda print free 等命令提供分区表和未分配空间的详细信息。

(4) 对 LVM 的额外检查
如果使用 LVM,使用 sudo lvssudo vgs 确认卷组和逻辑卷的大小。

5.2 操作后的注意事项

  • 管理备份数据 → 若扩展成功且系统稳定,可清理临时备份;若仍有顾虑,可保留备份一段时间。
  • 文件系统检查 → 为了更安全,可运行 fsck 进行文件系统检查。
    sudo fsck /dev/sda1
    

(仅在卸载分区后运行。)

  • 重新启动要求 在大多数情况下,不需要重新启动。然而,在某些虚拟或物理环境中,重新启动可确保操作系统完整识别新的磁盘大小。

5.3 摘要

通过遵循适当的准备步骤和正确的操作流程,Ubuntu 上的分区扩展可以顺利完成。务必提前备份数据,并仔细验证结果,以自信地应对意外问题。

分区和存储管理是系统管理和日常使用的关键任务。我们希望本文能帮助您在 Ubuntu 环境中有效管理磁盘空间。

侍エンジニア塾