今天服务器报错,上去一看 ,根分区满了,由于根分区只划分了50g,而virtualbox默认把虚拟机文件保存在 ~/Virtualbox VMS/ 目录下,导致该问题。
幸好目前虚拟机数量不是很多 ,暂时关闭所有虚拟机,然后开始想办法转移。
首先,为了尽快恢复服务,我先把 virtualbox vms 移动到另外一个大容量磁盘分区
move ~/Virtualbox\ VMS /storage1/
然后在原位置建立软连接
ln -s /sotrage1/Virtualbox\ VMS ~/Virtualbox\ VMS
然后赶紧重新启动各虚拟机吧。
如果没有什么追求,到这里问题其实也已经解决了,但我想改变虚拟机配置,让它真实指向 /storage1/Virtualbox\ VMS
首先查找手册,发现有一个命令
VBoxManage setproperty machinefolder /sotrage1/Virtualbox\ VMS
这样可以改变默认设置,我想当创建新的虚拟机时,就会采用新的目录。
但是这样并不会影响旧的虚拟机,蛋疼。
继续找资料,在官方论坛上找到一个帖子,按照说明,找到这两个文件
~/.config/VirtualBox/VirtualBox.xml
~/.config/VirtualBox/VirtualBox.xml-prev
关于各虚拟机位置的位置就在 <MachineRegistry> 段里,就像:
<MachineEntry uuid="{6e59a994-d6b9-4248-a3ed-b0c858496651}" src="/storage/VirtualBox VMs/vm2-master/vm2-master.vbox"/>
更改src配置就行了
要使得配置生效,你必须先关闭所有虚拟机,这个是因为有一个后台服务进程 VBOXSVC 一直在运行,只要有虚拟机在运行,它就存在,只有关闭所有虚拟机,它才会退出,当再启动虚拟机时,它又会自动启动并读取新的配置信息.
重启一个虚拟机,然后使用 VBoxManage showvminfo
看一下,发现基本上所有路径都已经指向了新的位置,但如果你之前外挂过虚拟磁盘,那么会发现磁盘的位置还是指向到 ~/Virtualbox VMS
到这里真有点累觉不爱啊,劳资想改个位置有那么难么。
首先,我要看下目前有哪些虚拟磁盘
VBoxManage list hdds
找到 Parent uuid:base 的那个存储,进入 location 对应的目录,在该目录下又 .vbox
和 .vbox-prev
结尾的文件,依次打开他们并修改:
里面 <HardDisks> 定义了所有的hdd路径,修改location字段即可,指向新的 virtualbox vms 目录。
最后关闭或挂起所有虚拟机,再依次启动虚拟机即可。