测试环境:openstack mitaka 。
需要启动 nova,glance 和 cinder 服务。

问题
Openstack是一个通用的云计算架构。虚拟机的生命周期管理,涉及很多操作。官方dashboard界面提供了诸如镜像导入,创建虚拟机,指定网络接口,挂载云硬盘等功能。但是,dashboard没有涉及一个重要的问题:镜像从何而来?dashboard界面上并没有提供制作虚拟机镜像模板的功能。制作kvm虚拟机镜像,一般是求助于libvirt工具,例如virt-manager。
希望在openstack平台上解决虚拟机模板制作问题,例如,如何在openstack制作win10虚拟机模板?

基本思路
  1. 创建nova虚拟机,可以从iso镜像启动,也就是从win10系统光盘启动虚拟机。
  2. windows系统安装,需要加载virtio磁盘驱动,否则虚拟机看不到硬盘。win10系统光盘不提供virtio驱动。virtio驱动光盘是一个独立的ISO,先导入glance,然后以cinder volume形式挂载到虚拟机,设备是CDROM,总线使用IDE。
  3. 虚拟机硬盘以nova临时磁盘的形式提供。在系统安装完成之后,临时磁盘仍然存在。利用qemu-img工具将临时磁盘导出为独立镜像,然后再导入glance,作为win10虚拟机模板。
操作过程
下载 win10 安装光盘。进行 SHA1SUM 校验。
054c741ded8989f4d0d419946eb37182f20e4482 cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso

下载 virtio 驱动光盘。例如,virtio-win-0.1.112.iso 。进行 SHA1SUM 校验。
b4a46bec520cadc7346cb1b8e74bd4ee5f067232 virtio-win-0.1.112.iso

为 win10 光盘创建 glance 镜像。
# wincd="f5af2a14-373b-4b46-8896-d3a3421c55aa"
# openstack image create --id ${wincd} --container-format bare --disk-format iso --file cn_windows_10_multiple_editions_version_1703_updated_march_2017_x64_dvd_10194190.iso --public win10-ver1703-x64.iso

为 virtio 光盘创建 glance 镜像。
# drvcd="64d860dc-c7fc-49fb-afee-4d0e66c5d537"
# openstack image create --id ${drvcd} --container-format bare --disk-format iso --file virtio-win-0.1.112.iso --public virtio-win-0.1.112.iso

生成一个拥有临时磁盘的 nova flavor。disk 5G用于安装光盘ISO。临时磁盘50G。
# flavorid="902b0d8d-7dc0-41ec-b5ff-c4546706202c"
# openstack flavor create --id ${flavorid} --ram 4096 --disk 5 --ephemeral 50 --vcpus 2 --public install-iso

查看neutron网络。
# neutron net-list
指定一个网络。
# netid="c07149bb-654a-4393-a5a8-240c220cf177"
或任意指定一个
# netid=$(neutron net-list -f value --field id|head -n 1)

创建虚拟机。用 cinder 映射 virtio-win 驱动盘。
# nova boot --image ${wincd} --flavor ${flavorid} --block-device id=${drvcd},source=image,dest=volume,bus=ide,type=cdrom,size=1 --nic net-id=${netid} install-os

接下来,安装操作系统。直到安装完成,然后关机。





虚拟机的uuid。
# vmuuid="a50cc4ff-639f-4a74-a927-276b5e1a9f09"

转换虚拟机临时磁盘,保存到合适的目录。
# qemu-img convert -p -O qcow2 -S 4k /var/lib/nova/instances/${vmuuid}/disk.eph0 test.qcow2

创建win10模板。
# openstack image create --container-format bare --disk-format qcow2 --file test.qcow2 --public win10-template

删除临时镜像。
# rm test.qcow2

删除install-os虚拟机实例。
# openstack server delete $vmuuid

现在从 glance 镜像 win10-template,可以启动 win10 虚拟机。至此全部完成。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐