- 虽然在virtual box中可以选中虚拟机,右键克隆,但是如果一下要复制多个虚拟机的话,还是有点麻烦
- 下面使用python与VBoxManage.exe进行复制虚拟机
- 准备工作
- 将VirtualBox的安装目录加入到windows的系统环境变量里,比如我的VirtualBox安装在
C:\Program Files\Oracle\VirtualBox
,那么将该路径添加到系统环境变量Path
中,当然,你不添加到系统环境变量里,直接使用VBoxManage.exe的全路径也可以,但是推荐添加到Path
中,省的写一堆的路径
- 代码思路
- 一个csv配置文件,配置要克隆的虚拟机名称和克隆后的虚拟机名称
- 使用python执行VBoxManager的命令,将虚拟机完全复制
- 我这么干完全是因为在学某些框架的集群的时候,要一堆的虚拟机,如果使用Vbox的克隆功能,得逐个操作
- csv 文件
# centos192.168.10.215 是已有的虚拟机名称
# hadoop1.21_192.168.10.215 是给克隆出来的虚拟机名称
centos192.168.10.215,hadoop1.21_192.168.10.215
import os
import csv
def read(file):
config_ = []
with open(file, encoding='utf8') as f:
f_csv = csv.reader(f)
# headers = next(f_csv)
for row in f_csv:
config_.append(row)
return config_
# 更改虚拟介质大小VBoxManage modifyhd windowsxp-disk.vdi --resize 40000
# 克隆虚拟机介质VBoxManage clonehd <空格> 虚拟机硬盘路径 <空格> 生成的新虚拟机硬盘路径
# http://11623520.blog.163.com/blog/static/1977961201339113714444/
# 创建虚拟机VBoxManage createvm --name "pde" --ostype "Debian_64" --register --basefolder /home/hto/data/vmos/
# 创建虚拟磁盘 vboxmanage createhd --filename "/data/vbox/ubuntu/system.vdi" --size 40000
# 设置内存和网卡模式 VBoxManage modifyvm "pde" --memory 1024 --acpi on --nic1 bridged
# 设置ide通道 vboxmanage storagectl "ubuntu" --name "IDE Controller" --add ide --bootable on
# 将磁盘挂载到ide通道 vboxmanage storageattach "ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "/data/vbox/ubuntu/system.vdi"
# 将iso文件挂载到ide接口 vboxmanage storageattach "ubuntu" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /data/share/systemiso/ubuntu-10.04-server-i386.iso
# C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonevm centos192.168.10.215 --mode all --name centoscopy --register
def clone_vm(clone_str):
os.system(clone_str)
vbox_manager_path = "VBoxManage"
read = read("./vbox.csv")
# 查看VirtualBox的安装路径是否添加到PATH中
getenv = os.getenv("PATH")
print(getenv)
for r in read:
clone_str =vbox_manager_path + " clonevm " + r[0] + " --mode all --name " + r[1] + " --register"
print(clone_str)
os.system(clone_str)
exit(0)
- VBoxManage clonevm 虚拟机名称 --snapshot 该虚拟机快照名称 --options link --name 新的虚拟机名称 --register ,链接复制,上面的是完全复制,VBoxManage的Clonevm 指令