PVE 上的用来做监控的一台虚拟机,因为安装系统时经验不足,预分配的硬盘容量很快就快用满了。这台虚拟机装的比较早,当时为了图省事,图快,直接挂载了 ISO 镜像手动引导安装,而没有用 Cloud-Init 来引导,这就导致它作为一个私有云环境下的虚拟机,硬盘容量却不能自动扩展,非常地难受。。这篇博客主要记录一下手动在线扩容 ext4 分区的过程,填一下因为装系统时图省事,没有研究最佳实践而遗留下来的坑。
§0. 安装必需的工具
|
|
parted
是硬盘分区工具,这里用来查看磁盘分区情况,按需删除不需要的分区,以及扩展分区容量resize2fs
用来扩展文件系统容量,以使操作系统可以识别并使用扩展后的硬盘分区- 俺这台机器系统是 Debian 11,如果是 CentOS 7 的话应该用
yum install
来安装
§1. 开始扩容
查看当前磁盘的分区情况:
|
|
俺这里硬盘容量是 20 GB,扩容前是 10 GB,本文开始前在 PVE 后台给该虚拟机对应的硬盘增加了 10 GB,因此目前的分区使用情况是:
/dev/sda1
- 9712 MB- 根分区,文件系统是 ext4
/dev/sda2
- 1 KB- 扩展分区
/dev/sda5
- 1022 MB- swap 分区
其中需要扩容的是 /dev/sda1
,但是因为其后有非空闲的分区(扩展分区和 swap 分区),不能直接扩展容量,所以下面分三步走:
- 删除扩展分区和 swap 分区
- 给根分区扩容
- 将 swap 功能添加回来
如果你只有 sda1
一个分区,说明没有扩展分区和单独的 swap 分区,那么可以直接开始扩容,跳过其他部分。
§删除扩展分区和 swap 分区
如果磁盘上待扩容的分区后方没有其他分区,可以跳过本节,直接开始扩容。
首先关闭 swap:
|
|
编辑 /etc/fstab
和 /etc/initramfs-tools/conf.d/resume
这两个文件,删除 swap 所在的行,然后更新引导配置:
|
|
此时可以删除分区了:
|
|
§给根分区扩容
|
|
此时分区容量已经扩展完成了,但是文件系统还未识别扩展的容量,所以扩展的容量还没法使用。下面扩展一下文件系统 :
|
|
此时不出意外的话应该扩容完成了,可以使用 df -h
来查看容量。
§将 swap 功能添加回来
如果不需要 swap,这部分可以直接跳过。
首先创建一个 swap 文件(俺这里创建一个 1 GB 大小的):
|
|
修改文件权限:
|
|
激活 swap 文件:
|
|
使用 sudo swapon -s
或 free -m
命令,查看 swap 功能是否已激活。
开机自动挂载 swap:
|
|
参考链接: