news 2026/5/9 5:11:19

手把手教你用parted为Ubuntu 22.04/home目录无损扩容(附GPT分区表操作)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用parted为Ubuntu 22.04/home目录无损扩容(附GPT分区表操作)

手把手教你用parted为Ubuntu 22.04的/home目录无损扩容(附GPT分区表操作)

当你第一次安装Ubuntu时,可能没预料到/home目录会这么快被塞满——下载的电影、开发环境的容器镜像、编译中间文件,不知不觉就占满了当初分配的那点可怜空间。别急着删文件或重装系统,用parted这个神器就能像搭积木一样重新调整分区布局,把闲置空间挪给/home用。下面我会用最稳妥的方式,带你一步步完成这个操作,确保你的猫照片和代码仓库安然无恙。

1. 准备工作:安全扩容的黄金法则

在动磁盘分区之前,有四个必须检查的事项:

  1. 完整备份重要数据:哪怕99%成功的操作也有1%的风险,用rsynctar/home目录打包到外接硬盘
  2. 确认分区表类型:现代Ubuntu默认使用GPT分区表,用sudo parted -l查看,找到带有"Partition Table: gpt"字样的行
  3. 准备Live USB:万一操作失误导致系统无法启动,可以用Ubuntu安装U盘进入"Try Ubuntu"模式修复
  4. 计算空间需求:用df -h查看当前/home使用情况,比如:
$ df -h /home Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p3 200G 186G 14G 94% /home

关键提示:操作前务必卸载/home分区!用sudo umount /home,如果提示设备忙,可能需要进入单用户模式。

2. 分区手术:用parted调整GPT分区边界

2.1 定位目标分区

首先用lsblk找到/home对应的物理分区,比如可能是/dev/nvme0n1p3。然后启动parted交互模式:

sudo parted /dev/nvme0n1

输入print free查看空闲空间分布,你会看到类似这样的输出:

Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 boot, esp 2 538MB 10.7GB 10.2GB ext4 3 10.7GB 215GB 204GB ext4 home 215GB 256GB 41.0GB Free Space

2.2 调整分区边界

假设我们要把末尾的41GB空闲空间合并到/home分区(编号3):

  1. 先删除原分区(不会丢失数据):
    (parted) rm 3
  2. 新建扩展后的分区(注意保持起始点不变):
    (parted) mkpart primary ext4 10.7GB 256GB
  3. 设置分区名称:
    (parted) name 3 home

危险操作警示:绝对不要调整系统启动分区(通常是编号1的EFI分区)的边界,这会导致系统无法引导。

3. 文件系统扩容:让系统识别新空间

分区调整只是改了"围墙"位置,还需要扩展文件系统才能真正使用空间:

sudo e2fsck -f /dev/nvme0n1p3 # 强制检查文件系统 sudo resize2fs /dev/nvme0n1p3 # 调整ext4文件系统大小

完成后用df -h检查,应该能看到/home的可用空间增加了。如果遇到"contains a mounted filesystem"错误,说明你忘了卸载分区。

4. 疑难排错:常见问题解决方案

4.1 分区错位修复

有时调整分区后会出现"Partition ends after the end of the disk"警告,这时需要:

  1. sudo fdisk -l查看实际磁盘容量
  2. 重新计算精确的结束扇区(通常比磁盘总容量小1MB)
  3. 在parted中用unit s切换为扇区单位重新操作

4.2 空间未生效处理

如果resize2fs后空间没变化,可能是LVM卷组在作祟。用这套组合拳:

sudo pvresize /dev/nvme0n1p3 # 调整物理卷 sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-home # 扩展逻辑卷 sudo resize2fs /dev/mapper/ubuntu--vg-home # 扩展文件系统

4.3 系统无法启动应急方案

如果重启后卡在grub rescue界面,用Live USB启动后:

  1. 挂载原系统分区:
    sudo mount /dev/nvme0n1p2 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi
  2. 重新安装grub:
    sudo chroot /mnt grub-install /dev/nvme0n1 update-grub

5. 进阶技巧:分区优化与自动化

5.1 分区对齐优化

现代SSD需要2048扇区对齐以获得最佳性能,在parted中创建分区时使用:

(parted) mkpart primary ext4 10.7GB 256GB align=optimal

5.2 自动化脚本示例

对于需要频繁调整的测试环境,可以编写这样的脚本:

#!/bin/bash DEVICE="/dev/nvme0n1" HOME_PART=3 NEW_SIZE="100%" sudo umount /home sudo parted $DEVICE resizepart $HOME_PART $NEW_SIZE sudo e2fsck -f ${DEVICE}p$HOME_PART sudo resize2fs ${DEVICE}p$HOME_PART sudo mount -a

记得用chmod +x给脚本添加执行权限。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 5:09:31

高通8155座舱Hypervisor实战:手把手教你理解HAB与virtIO的通信差异

高通8155座舱Hypervisor实战:HAB与virtIO通信框架深度解析 在智能座舱系统开发中,高通8155平台凭借其强大的计算能力和灵活的虚拟化架构,已成为行业主流选择。这套系统的核心挑战之一,是如何高效安全地在QNX Host与Android Guest之…

作者头像 李华
网站建设 2026/5/9 5:08:59

ESL设计与ARM MaxSim工具链在SoC开发中的应用

1. 电子系统级(ESL)设计概述现代SoC设计正面临前所未有的复杂性挑战。根据行业数据,过去十年间硬件复杂度增长了43倍,而软件复杂度更是飙升了900倍。这种指数级的增长使得传统RTL级设计方法显得力不从心——约30%的设计会偏离性能预期50%以上&#xff0c…

作者头像 李华
网站建设 2026/5/9 4:55:03

Godot游戏服务器开发:Nakama插件集成与实时多人对战实现

1. 项目概述:当游戏服务器遇上Godot引擎如果你正在用Godot引擎开发一款需要在线功能的游戏,比如多人对战、排行榜、实时聊天或者玩家数据云存储,那你肯定绕不开一个核心问题:后端服务器怎么搞?自己从头搭建一套&#x…

作者头像 李华
网站建设 2026/5/9 4:54:32

AItrika:医学影像AI开发开源工具箱,端到端解决方案实践指南

1. 项目概述:当AI遇上医学影像,一个开源工具箱的诞生如果你是一名医学影像领域的研究者、开发者,或者是对AI辅助诊断感兴趣的工程师,那么你一定对“数据”和“模型”这两个词又爱又恨。爱的是,它们代表了精准医疗的未来…

作者头像 李华