Last updated on:February 18, 2023 pm

在主系统以外的系统(无论是虚拟机还是多系统)分配磁盘空间时我们常常比较保守,可能会面临需要扩容根分区的情况。

Linux磁盘分区扩容(非LVM)

1 适用场景

在为主系统以外的系统(无论是虚拟机还是多系统)分配磁盘空间时我们常常比较保守,这样可能会遇到根分区空间不足的情况,如图:

但是我们的磁盘上还有空闲的空间未使用。因此我们可以将未使用部分扩展到相邻的分区中。

2 实现

2.1 进入rescue mode

  • 如果**扩容的对象是根分区(系统分区)**,则首先需要进入rescue mode。如果扩容对象为非系统分区,如/home等,则不需要进入rescue mode。

    一个简单判定是否需要进入rescue mode 或者使用安装镜像U盘启动的方法是,umount此次扩容的对象,操作系统是否会受到影响。

    • 键入命令init 1(单用户模式,仅root)进入到rescue mode

    • 或者在grub界面选择advanced启动项里的recovery mode

    最终还是进入到此界面

2.2 删除待扩容的分区

  • fdisk /dev/sda 打开fdisk工具,键入p打印当前/dev/sda磁盘的信息:

  • 依次键入d2,删除/dev/sda2分区

2.3 新建分区

  • 依次键入np2no,来重新创建/dev/sda2。由于之前删除该分区后使得它与此磁盘上未使用的空间合并,因此创建新分区时能够通过指定startend来扩大新分区的容量。

    注意在被询问是否移除新分区/dev/sda2带有的signature时,选择no,否则该分区原有的数据会丢失。

  • 如果此过程操作无误可以键入w保存并退出。如果有问题可以键入q不保存并退出。

2.4 更新分区表

  • 此时df -h查看的结果是待扩容分区容量仍然未发生变化,因为还需要调整分区表

  • e2fsck -f /dev/sda2检查分区信息

  • 调整分区大小。有两种方法:

    • 一种是卸载待扩容分区,然后运行resize2fs -f /dev/sda2

    • 另一种是不用卸载,在线扩容。不卸载 / 分区直接运行resize2fs -f /dev/sda2会得到如下报错:

    因此需要重新挂载/分区为可读写模式mount -o remount, rw /,然后就可以调整分区大小了。且未使用的空间被格式化为和根分区一致的ext4。

  • reboot之后查看结果。发现之前空闲的6.4G空间已经并入待扩容的根分区。扩容成功

3 一点补充

后期分别在不同的系统上做过尝试,发现有的Linux发行版需要重新挂载/分区来更新分区表大小,比如Kali。而有的发行版比如CentOS,Ubuntu则不需要,进入操作系统后可以直接resize2fs

Linux磁盘分区扩容(LVM)

TODO


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

【LaTeX】VSCode环境配置 Previous
各个平台和编译器预定义的宏 Next

 TOC

载入天数... 载入时分秒...