之前一直使用vagrant作为虚拟机的作者,遇到了一项棘手的问题——虚拟硬盘空间不足。
使用df -h命令查看后,发现主硬盘(/dev/sda1)的总空间仅有10G,而通常系统镜像的初始大小就超过9G。
经查,vagrant的设计初衷是快速还原运行环境,因此在虚拟机初始化时不会分配足够的主硬盘空间。
这导致使用半年后,空间不够用,甚至无法执行pip3 install命令。
经过进一步研究,发现了一个有效的解决方案——通过vbox操作来解决vagrant的空间限制问题。
准备工作:
在本次操作中,需要使用virtualbox提供的vboxmanage命令。因此,首先需要将此命令添加到环境变量中。
记录原始硬盘信息:
输入以下命令:
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文件。
- Windows系统:
ren box-disk1.vmdk box-disk1-backup.vmdk ren resized.vmdk box-disk1.vmdk
- Linux系统:
mv box-disk1.vmdk box-disk1-backup.vmdk mv resized.vmdk box-disk1.vmdk
修改.box配置文件:
替换完硬盘后,还需最后一步。
打开原vmdk对应的box文件,将原来的vmdk的uuid信息全部替换为新vmdk文件的uuid。注意,可能有多个地方需要替换,确保替换完全。
大功告成截图纪念:
可以看到,主硬盘现在已扩大到30G,再也不用担心空间不够用了。
方法来源:修改Vagrant box磁盘大小