虚拟机模板
1. 虚拟机模板管理界面总览
虚拟机模板主界面如下:
虚拟机模板管理有以下功能:
- 添加一个模板
- 把虚拟机拷贝成模板
- 查看模板配置
- 修改模板配置
- 删除模板
- 编辑模板的镜像
在此界面中,可以增加、修改、删除虚拟机模板,也可以把一个虚拟机拷贝成模板。
2. 添加虚拟机模板
点“增加”按钮,弹出增加虚拟机模板的界面,见下图:
模板类型有:
- 普通模板: 当从此类型的模板创建虚拟机时,会把已准备好的的模板的镜像文件直接复制成虚拟机的OS镜像盘。
- ISO模板: 为从ISO镜像文件中安装一个虚拟机提供配置模板。
在界面的“模板配置”是需要输入一段xml的内容,这个内容是与Linux下的虚拟机管理命令virsh dumpxml中得到的虚拟机的xml配置是基本相同的,但在此xml配置文件,但其中的一些配置项用一些占位符如{vm_name}、{vm_uuid}等取代,一个xml内容的示例如下:
<domain type='kvm'>
<name>{vm_name}</name>
<uuid>{vm_uuid}</uuid>
<title>{vm_title}</title>
<memory unit='KiB'>{vm_mem_size}</memory>
<currentMemory unit='KiB'>{vm_mem_size}</currentMemory>
<vcpu placement='static'>{vm_cpu_cores}</vcpu>
<os>
<type arch='{cpu_arch}' machine='{kvm_machine}'>hvm</type>
<bootmenu enable='yes'></bootmenu>
</os>
<features>
<acpi></acpi>
<apic></apic>
</features>
<cpu mode='host-passthrough' check='partial' />
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'></timer>
<timer name='pit' tickpolicy='delay'></timer>
<timer name='hpet' present='no'></timer>
<timer name='hypervclock' present='yes'></timer>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'></suspend-to-mem>
<suspend-to-disk enabled='no'></suspend-to-disk>
</pm>
<devices>
<emulator>{emulator}</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'></driver>
<source file='{vm_os_file}'></source>
<target dev='hda' bus='ide'></target>
<boot order='1'></boot>
<alias name='ide0-0-0'></alias>
<address type='drive' controller='0' bus='0' target='0' unit='0'></address>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'></driver>
<source file='{iso_file}'></source>
<backingStore></backingStore>
<target dev='hdb' bus='ide'></target>
<readonly></readonly>
<boot order='2'></boot>
<alias name='ide0-0-1'></alias>
<address type='drive' controller='0' bus='0' target='0' unit='1'></address>
</disk>
<disk type='file' device='cdrom'>
<target dev='sdda' bus='sata'/>
<readonly/>
<alias name='sata0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<target dev='sddb' bus='sata'/>
<readonly/>
<alias name='sata0-0-1'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<disk type='file' device='cdrom'>
<target dev='sddc' bus='sata'/>
<readonly/>
<alias name='sata0-0-2'/>
<address type='drive' controller='0' bus='0' target='0' unit='2'/>
</disk>
<disk type='file' device='cdrom'>
<target dev='sddd' bus='sata'/>
<readonly/>
<alias name='sata0-0-3'/>
<address type='drive' controller='0' bus='0' target='0' unit='3'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<alias name='usb'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'></address>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<alias name='usb'></alias>
<master startport='0'></master>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'></address>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<alias name='usb'></alias>
<master startport='2'></master>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'></address>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<alias name='usb'></alias>
<master startport='4'></master>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'></address>
</controller>
<controller type='pci' index='0' model='pci-root'>
<alias name='pci.0'></alias>
</controller>
<controller type='ide' index='0'>
<alias name='ide'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'></address>
</controller>
<controller type='virtio-serial' index='0'>
<alias name='virtio-serial0'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'></address>
</controller>
<controller type='sata' index='0'>
<alias name='sata0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</controller>
<controller type='scsi' index='0' model='virtio-scsi'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='{mac_address}'></mac>
<source bridge='br0'></source>
<target dev='vnet0'></target>
<model type='virtio'></model>
<alias name='net0'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'></address>
</interface>
<serial type='pty'>
<source path='/dev/pts/3'></source>
<target port='0'></target>
<alias name='serial0'></alias>
</serial>
<console type='pty' tty='/dev/pts/3'>
<source path='/dev/pts/3'></source>
<target type='serial' port='0'></target>
<alias name='serial0'></alias>
</console>
<input type='tablet' bus='usb'>
<alias name='input0'></alias>
<address type='usb' bus='0' port='1'></address>
</input>
<input type='mouse' bus='ps2'>
<alias name='input1'></alias>
</input>
<input type='keyboard' bus='ps2'>
<alias name='input2'></alias>
</input>
<graphics type='vnc' port='{vnc_port}' autoport='no' listen='0.0.0.0' keymap='en-us' passwd='{vnc_password}'>
<listen type='address' address='0.0.0.0'></listen>
</graphics>
<sound model='ich6'>
<alias name='sound0'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'></address>
</sound>
<memballoon model='virtio'>
<alias name='balloon0'></alias>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'></address>
</memballoon>
</devices>
</domain>
当模板类型为“普通模板”时,占位符如下:
- {vm_name} : 虚拟机在Linux物理机下的真实名称。
- {vm_uuid}:虚拟机的uuid
- {vm_title}:虚拟机的title,即显示的名称
- {vm_mem_size}:虚拟机的内存大小,单位为KB
- {vm_cpu_cores}:虚拟机的vcpu数
- {vm_os_file}:虚拟机的OS镜像文件名
- {mac_address}:虚拟机网卡的MAC地址
- {vnc_port}:虚拟机的VNC端口
- {vnc_password}:虚拟机的VNC密码
当用此模板创建虚拟机时,这些占位符会被替换成真实的值。
当模板类型为“ISO模板”时,多了一个占用符:
- {iso_file}:这表示ISO镜像文件的路径。
当增加了类型为“普通模板”的虚拟机模板后,需要在每台物理机上增加真正的模板镜像文件后,才能根据此模板创建虚拟机,方法如下:
zfs create zp01/tpl00000001
cp centos7.4.qcow2 /zp01/tpl00000001/.
上面命令中的“centos7.4.qcow2”是已准备好的安装有操作系统的虚拟机OS盘的镜像文件。
点“把虚拟机拷贝成模板”按钮,弹出如下界面,见下图:
在此界面中输入已有虚拟机的ID和模板名称,点“提交按钮”后就开始创建模板。注意只能把已关电的虚拟机拷贝成模板,所以请保证虚拟机处于关电状态中,另在整个创建模板的过程中,千万不要启动虚拟机,否则创建出的模板的镜像文件会存在不一致的情况。
在把虚拟机拷贝成模板的过程中,因为要把镜像文件拷贝到所有物理机上,所以此过程会花费较长的时间,没有完成之前,看到的模板状态都是“同步中”:
当状态从“同步中”变成“正常”之后,模板才完成了创建过程。
若是添加ISO模板,则填写好上诉信息就可创建成功。
若是添加普通模板,则需要上传虚拟机镜像文件才能使用。
上传虚拟机镜像文件后,该模板就可使用了。
3 把虚拟机拷贝成模板:
需要填写被拷贝的虚拟机ID,以及模板名称,即可把虚拟机拷贝成普通模板,方便之后快速创建虚拟机,创建就能用。
4. 查看模板配置:
可查看该模板的配置信息:
5. 修改模板配置:
可修改模板ID、模板名称、模板配置的信息:
6. 删除模板:
选择一个模板,点击删除,即可删除该模板:
7. 编辑模板的镜像:
此功能只有用虚拟机拷贝成的模板才有,选择该模板,点击进入镜像编辑界面,可编辑模板的镜像。
在此界面中,在搜索框中可以按“物理机名称”、“物理机IP”搜索该模板的镜像,同样支持通配符百分号“%”及下划线“_”。
创建镜像的虚拟机:
注:此方法创建的虚拟机被禁用快照功能。
创建成功:
创建后可进行虚拟机的基础功能:删除、开机、重启关机、强制重启、登录、管理,这一系列基础功能在虚拟机列表管理模块有详细讲解。若是修改了镜像,可点击修改生效使修改生效。