记一次有惊无险的 Linux 下根分区大小调整经历
记一次有惊无险的 Linux 下根分区大小调整经历
你将在本文中读到以下内容:使用 fdisk 工具恢复分区顺序、删除交换分区后需要的修复工作
如果你只是想了解如何扩容磁盘,请看文章最后的结论部分。
请注意,请不要效仿本文中的错误操作。只有你遇到了相似的问题,才可以运用文章中的补救措施。由于作者并不精通 Linux,不保证文章内容准确,采用文章中的方法,后果自负。本文没有配屏幕截图。
前情提要
由于 Windows 系统过于卡顿,因此最近开始使用 Linux 操作系统,选用的是 Ubuntu 22.04 LTS 发行版。使用过程中逐渐感到磁盘空间不足,遂打算扩充磁盘空间以供使用。
当前系统环境
我已有的磁盘情况如下(按照在磁盘上的顺序排列):
/dev/sda
:机械硬盘,容量为 1 TB。sda2
:逻辑分区。sda5
:交换分区(swap),容量 16 GB。sda6
:Linux 根目录,容量 64 GB。
sda1
:位于磁盘最后的 NTFS 分区,容量约 800 GB。
/dev/sdb
:SSD。sdb1
上装有 Windows 11 操作系统。
预期结果
由于交换分区过大,完全用不完,计划将交换分区缩小至 4 GB,并将 sda6
向前扩展 12 GB。
附注:后续使用证明,4 GB 交换分区有些捉襟见肘,一般来说将近吃满,长时间不关机会完全吃满导致电脑卡顿,后续又调整为 8 GB。我的电脑内存是 8 GB,供参考。
摸索过程
在 Ubuntu 主系统上的操作
我打开了 GNOME「磁盘」工具,解除挂载之后企图调节 swap 分区大小,发现不能调节,遂打算删除后重建。(请不要效仿,后果自负。)
删除 swap 之后,系统提示内核无法响应分区序号的更改,/dev/sda6
变为 /dev/sda5
,让我重新启动操作系统。
我瞬间慌了,立刻找到闲置的优盘,开始烧写 Ventoy,制作启动盘。烧写完成之后,重启进入 Live CD。
在 Live CD 中的抢救工作
进入 Live CD 之后直接启动 GParted 图形界面(Ubuntu Live CD 预装)查看分区情况。创建新的 swap 分区,调节主分区大小(时间会很长),然后重启。
调节之后的分区情况如下:
sda2
:逻辑分区。sda6
:swap 分区,容量 4 GB。sda5
:Linux 根目录,容量 76 GB。
sda1
:位于磁盘最后的 NTFS 分区,容量约 800 GB。
附注:如果硬盘上有 swap 分区,Live CD 会使用它。GParted 会用「🔑」标记挂载的分区,你需要右键点击取消挂载。
引导失败 — 修复分区序号
重启之后无法进入操作系统。屏幕上显示的内容如下:
error: unknown filesystem.
Entering rescue mode...
grub rescue> _
这个画面显然使我不安。我用电源键关机重新进入 Live CD。通过搜索,我知道是分区序号改变的缘故。1经过摸索,总结修复过程如下:
- 执行
sudo fdisk /dev/sda
; - 用
x
进入高级模式,f
执行分区序号调整。
调整之后,分区序号会重新排列,变成了这样:
sda1
:逻辑分区。sda5
:swap 分区,容量 4 GB。sda6
:Linux 根目录,容量 76 GB。
sda2
:位于磁盘最后的 NTFS 分区,容量约 800 GB。
sda1
和 sda2
交换了,但不影响使用2。
后续收尾 — 关于交换分区
经过一番摸索和修复,系统终于可以正常启动了,但仍然会遇到下面两个问题。
问题 1 启动时控制台界面会一直跳光标,一分钟后显示:
Gave up waiting for suspend/resume device
之后才会出现 GUI 启动界面。这是交换分区被重新创建,UUID 不同造成的。
解决方法:删除 /etc/initramfs-tools/conf.d/resume
,并执行 update-initramfs -u
。3
问题 2 重启之后,系统也不会使用这个新的交换分区。
解决方法:运行 sudo blkid
,获得新建的交换分区的 UUID,输出如下:
/dev/sda5: UUID="********-****-****-****-************" TYPE="swap" PARTUUID="********-**"
编辑 /etc/fstab
,如下:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda6 during installation
UUID=********-****-****-****-************ / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=********-****-****-****-************ none swap sw 0 0 # 修改此处的 UUID
重启系统,终于正常了。
结论
本文主要焦点在误操作之后的恢复。一般来说,只要不贪图方便,正常操作,不会出现问题。正常的磁盘扩充过程:重启进入 Live CD,直接通过 GParted 工具调整分区大小。
以及,谨记名言:
早晚别刷机!
电脑引导用的是分区 UUID,发生此情况的原因尚不明确。欢迎留言分享。↩︎
后续挂载时系统莫名其妙提示需要到 Windows 中执行
chkdsk /f
修复,不知原因,故记录于此。↩︎如果你继续遇到错误,请参考 ubuntu - Boot blocks with "Gave up waiting for suspend/resume device" - Unix & Linux Stack Exchange。↩︎