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磁盘的信息:
- 依次键入
d
,2
,删除/dev/sda2分区
2.3 新建分区
依次键入
n
,p
,2
,no
,来重新创建/dev/sda2。由于之前删除该分区后使得它与此磁盘上未使用的空间合并,因此创建新分区时能够通过指定start
和end
来扩大新分区的容量。注意在被询问是否移除新分区/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 协议 ,转载请注明出处!