自己折腾 PVE 虚拟机的时候,当分配的硬件资源不够了,我们没法像用 VPS 商家的产品那样能直接给个选项一键升级配置就行了,很多时候都是需要我们自己动手来操作的。
在升降配置这方面,CPU 和内存的分配都是比较好办的,可以直接在 PVE 的 Web 端上就能操作,而涉及到磁盘就比较麻烦了。
所以,为了记录下我扩容磁盘的过程方便以后需要时的自己,也为了方便那些有这方面需要的朋友,写篇文章来说道说道吧!
- 前期说明
扩容磁盘空间一般来说操作不难,但毕竟涉及到磁盘操作,风险还是有的,所以在开始之前建议大家能做备份的就先备份好,或者弄个快照也是不错的。
除了这点之外,需要说的是我操作使用的系统是 Debian 11 的,系统的磁盘分区配置都是最初安装时推荐的选项:三个分区,其中包含 Swap 分区,此外根目录拥有全部剩余空间。这是一个很常规也很基本的配置,适合大多数像我这种不怎么折腾磁盘的用户,如果你用了其它磁盘分区方案,请在按照下文操作的时候保持谨慎态度,因为可能不是所有操作都适合你。
- 一、在 PVE 上给虚拟机分配更多的磁盘空间(PVE上操作)
要给虚拟机磁盘进行扩容,首先自然是要给它分配更多的磁盘空间了。
这一步貌似没什么特别好说的,打开 PVE 的 Web 端管理页面,找到对应虚拟机的硬件选项页面,点击我们的虚拟机磁盘,然后找到页面上方的“磁盘操作”的选项,点击“调整大小”就可以给磁盘进行扩容了。
不过这里需要注意一下,调整大小这个选项不是让我们对整个磁盘的大小来进行调整的,而是你要增加多是空间给磁盘,就填多少,比如我想 30 G 扩容成 60 G 空间,那么调整大小这里就应该填写 30 而不是总大小的 60。
- 二、去除 Swap 分区(虚拟机内操作)
在 PVE 上给磁盘扩容之后,我们就可以来着手在虚拟机内操作磁盘了,而首先需要做的是删除 Swap 分区……
Swap 想法是很好的,内存不够磁盘来凑么,但是作为一名普通的博客站博主,我是不觉得这算什么好的方案了,只能说是临时顶一下,如果真要是内存不够用了,我的建议是能优化程序就优化程序,能加内存就加内存,真别太依赖 Swap。
虽然我不是很喜欢 Swap,但是无奈的是 Debian 的默认配置怎么着也会给用户创建一个 Swap 分区出来,而这个分区可能会让我们扩容磁盘时遇到一点小问题。这个问题我现在只能是凭着一点记忆来跟大家描述一下了,基本上就是由于 Swap 是最后一个分区,导致我们用 PVE 给虚拟机分配更多磁盘空间然后在虚拟机内用工具去分配这部分多出来的空间时(给第二分区的根目录用),非常容易失败。
基于这种情况,我决定先删除 Swap 分区再给根目录空间进行扩容,这样操作简单了,也更加稳妥一点了,反正 Swap 之后也不是没办法加。_(:з)∠)_
话不多说,还是来说怎么操作吧!
首先我们先要确定磁盘的 Swap 分区是哪个,可以输入下面的命令查看:
swapon -s
这里我就以我自己测试的机子为例,我的 Swap 分区是 /dev/sda3,那么接下来就是先把这个 Swap 分区取消挂载了,可以在下面两个命令里选择一个执行:
这个命令会关闭所有的 Swap
swapoff -a
这个命令会关闭指定的 Swap,记得带上分区位置,比如我的 /dev/sda3
swapoff /dev/sda3
改完之后,我们还需要将文件里的挂载信息删除一下,先打开/etc/initramfs-tools/conf.d/resume 这个文件,里面会记录有我们 Swap 分区的 UUID,先记住这个 UUID,然后把这一整行都删除掉保存文件。接着我们打开/etc/fstab 这个文件,找到前面那个文件里同样 UUID 的那行,也是删除了保存文件。
PS:编辑保存就随便用什么了,不管你是直接用 FTP 还是什么的登录上去修改文件或者用 vi nano 之类的命令都可以。
上面这些做完之后,更新一下 initramfs 和 grub,这样可以确保我们的后续操作更安全一些。参考命令如下:
update-initramfs -u
update-grub
上面的操作,是取消了 Swap 的挂载以避免系统或者其它程序仍在使用 Swap,之后我们就可以正式把 Swap 分区给删除腾出空间了。
前面有说到,我查到的 Swap 分区对应的是 /dev/sda3,我们要删除这个分区的话,需要用到 fdisk 这个命令对于整个磁盘来进行操作,那么根据我的 Swap 分区所在位置,就是如下的命令:
fdisk /dev/sda
输入这个命令之后,我们就可以删除磁盘分区了,前面我们查询知道了 Swap 分区对应的是 /dev/sda3 这个,这里我们先输入 d 回车,之后 fdisk 会让我们选择要删除的分区,像我的话是第三个分区就是输入 3 回车,执行完成之后再输入 w 回车确认保存就搞定了。
此处备注:老实说我也是第一次对磁盘的分区进行操作,虽然上面的过程都是经过我自己实际操作验证的,但是教程并不算是我自己的,我也是参考了别人的教程,原出处在这里:https://www.ghl.name/archives/debian-ubuntu-delete-swap-partition-safely.html
- 三、扩容磁盘(虚拟机内操作)
删除了 Swap 分区,阻碍扩容障碍就扫除了,接下来就是准备扩容虚拟机磁盘了~
先给 Debian 安装好分区软件 parted:
apt update
apt install parted
安装好之后,我们可以先看下现在的分区布局情况(注意要根据自己的情况写磁盘位置):
parted /dev/sda
输入完成之后,再输入 print 就可以看到现在磁盘的分区情况了,如果不出意外的话,会看到所有分区加起来的空间和磁盘实际大小相比要小,所以下面我们就需要用 parted 命令来扩容磁盘了。
在上面的 print 命令输入之后,先确定好现在的根目录 / 分区的编号是多少,比如我的是 2,那么我就可以使用下面的命令让扩容多出来的剩余空间全部分配给 2 分区使用:
resizepart 2 100%
注意,上面的命令是在你先输入了 parted /dev/sda 命令之后才能输入执行成功的。
搞定之后,扩容就算是做完了,之后就能输入命令退出 parted 了:
quit
最后为了让验证扩容效果,可以试试重启下虚拟机,然后再用 fdisk 命令查询一下:
fdisk -l
结束
好了,教程到这里就写完咯!
因为我自己平时也不会特意去管分区,都是交给机器自己分配管理的,所以第一次动起手来难免是有些紧张,生怕自己弄错了什么虚拟机就 boom 了,好在过程有惊无险。23333
另外虽然前面也说了,这里也还是要提一下,我的 Debian 虚拟机真的只是很基本的磁盘设置,既没有什么复杂的分区规则,也没有用 LVM 之类的东西,所以操作起来步骤很少也没什么难度,如果你的分区方案和我的区别很大,那么可能本教程不一定都适合你,记得谨慎操作~
PS:本次使用的特色图片来自 Pixiv 用户 moduku,出处链接:https://www.pixiv.net/artworks/104812776