Hello! 欢迎来到小浪云!


【vagrant】硬盘扩容


之前一直使用vagrant作为虚拟机的作者,遇到了一项棘手的问题——虚拟硬盘空间不足。

使用df -h命令查看后,发现主硬盘(/dev/sda1)的总空间仅有10G,而通常系统镜像的初始大小就超过9G。

经查,vagrant的设计初衷是快速还原运行环境,因此在虚拟机初始化时不会分配足够的主硬盘空间。

这导致使用半年后,空间不够用,甚至无法执行pip3 install命令。

经过进一步研究,发现了一个有效的解决方案——通过vbox操作来解决vagrant的空间限制问题。

准备工作:

在本次操作中,需要使用virtualbox提供的vboxmanage命令。因此,首先需要将此命令添加到环境变量中。

  • Windows系统下,将virtualbox的安装路径添加到path项中。
  • unix系统下,操作类似。

记录原始硬盘信息:

输入以下命令:

vboxmanage showhdinfo "box-disk1.vmdk" 

记录原硬盘的uuid,之后会用到。

制作扩容版硬盘:

首先,克隆原硬盘:

vboxmanage clonehd "box-disk1.vmdk" "new-virtualdisk.vdi" --format vdi

将硬盘克隆为vdi格式后,开始扩容操作:

vboxmanage modifyhd "new-virtualdisk.vdi" --resize 30720

其中30720单位为MB,表示30G空间。

接下来,将硬盘文件转换回原来的格式(也可以直接使用vdi格式),建议不要直接覆盖原来的vmdk硬盘文件,以备份:

VBoxManage clonehd "new-virtualdisk.vdi" "resized.vmdk" --format vmdk

记录新vmdk文件的uuid信息。至此,带有原数据和新尺寸的硬盘制作完成。

将新硬盘载入使用,替换原硬盘文件:

虽然是替换,建议先备份原来的vmdk文件。

ren box-disk1.vmdk box-disk1-backup.vmdk ren resized.vmdk box-disk1.vmdk
mv box-disk1.vmdk box-disk1-backup.vmdk mv resized.vmdk box-disk1.vmdk

修改.box配置文件:

替换完硬盘后,还需最后一步。

打开原vmdk对应的box文件,将原来的vmdk的uuid信息全部替换为新vmdk文件的uuid。注意,可能有多个地方需要替换,确保替换完全。

大功告成截图纪念:

【vagrant】硬盘扩容

可以看到,主硬盘现在已扩大到30G,再也不用担心空间不够用了。

方法来源:修改Vagrant box磁盘大小

相关阅读