这是 OpenStack 实施经验分享系列的第 2 篇。
OpenStack 通过 Glance 镜像部署 instance,上一节我们介绍了 linux 镜像制作方法,windows 镜像与 linux 有很大不同,今天我们以 windows2008 为例详细讨论。
镜像制作步骤如下:
1. 创建并运行 windows2008 KVM 虚拟机
2. 安装 virtio 驱动
3. 安装 cloudbase-init
4. 其他定制工作
5. 创建 Glance 镜像
6. 通过镜像部署新 instance
1. 创建并运行Windows2008 KVM虚拟机
如果有 virt-manager,这一步可以在图形界面中完成。考虑到不是所有情况都有 virt-manager,我们这里直接在 KVM 宿主机上操作。下面的步骤用于创建 windows2008 虚拟机。
首先创建一块 20G 的虚拟磁盘作为虚拟机的启动盘:
qemu-img create -f qcow2 /var/lib/libvirt/images/win2008r2sp1.qcow2 20G
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056454276024535.png]()
copy 虚拟机模板
cp template.xml win2008r2sp1.xml
template.xml 这个模板怎么来?其实很简单,通常直接 dump 现有 kvm 虚拟机的 xml 定义就可以了。比如:
virsh dumpxml [vm-id] > template.xml
修改win2008r2sp1.xml中以下各项:
虚拟机名称
虚拟磁盘(前面通过 qemu-img 创建的)和启动ISO
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056454640056132.png]()
创建虚拟机
virsh define win2008r2sp1.xml
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056454509034767.png]()
启动虚拟机
virsh start win2008r2sp1
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056454726080511.png]()
通过vnc连接虚拟机
这里 172.17.12.11 为宿主机 IP,端口号为 2(可通过 virsh vncdisplay 查询到)。连接成功后,显示虚拟机安装界面
通过向导安装操作系统,过程不再赘述。如果在安装过程中虚拟机没有自动重启,可以通过下面的命令启动虚拟机
virsh start win2008r2sp1
安装成功后,设置 IP 地址
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056455428018832.png]()
2. 安装 virtio 驱动
OpenStack 默认使用 virtio 磁盘和网卡,virtio 的性能很好。由于 windows 没有自带 virtio 的驱动,需要手动安装,步骤如下:
添加一个 virtio 类型的磁盘。
virsh edit win2008r2sp1
修改当前的网卡设备为 virtio。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170216-1487249491893001686.png image11.png]()
重启操作系统,安装 virtio 的驱动程序。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056455706050614.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056455865044652.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056455913095857.png]()
virtio driver 的下载地址为 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456102036083.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456118065846.png]()
3. 安装 cloudbase-init
cloudbase-init 使 windows 镜像部署的 instance 能够自动配置 IP 地址等个性化信息。其作用与 linux 的 cloud-init 一样,下面演示 cloudbase-init 的配置方法。
下载 cloudbase-init
https://cloudbase.it/cloudbase-init/#download
在虚拟机中安装 cloudbase-init
可通过远程桌面上传 cloudbase-init 安装程序并安装
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456466084208.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456639071784.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456341081430.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456550003683.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457037013130.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456756083466.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457031046630.png]()
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056456960038660.png]()
系统会自动关机。
4. 其他定制工作
重新启动虚拟机,完成其他定制工作,比如根据需要安装一些常用软件等。至此,windows 镜像文件已经准备好,文件路径为
/var/lib/libvirt/images/win2008r2sp1.qcow2
5. 创建 Glance 镜像
镜像创建方法与上一节 linux 镜像一样
glance image-create --name "Windows 2008 R2 SP1" --file /var/lib/libvirt/images/win2008r2sp1.qcow2 --disk-format qcow2 --container-format bare --is-public true --progress
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457163004465.png]()
6. 通过镜像部署新 instance
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457260032502.png]()
点击镜像后面的“启动云主机”按钮。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056458139099652.png]()
给 instance 命名,并点击“运行”,instance 创建成功并分配到 IP。
点击 instance 名字。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457462052071.png]()
打开 console。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457618074362.png]()
在 VNC 控制台可以看到 instance 正常启动。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457850065156.png]()
点击 Administrator 用户
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170214-1487056457850066242.png]()
第一次登录需要修改密码。
以上就是定制 OpenStack Windows 镜像的操作,下一节讨论几个镜像使用上的经验和技巧。
![http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20161211-1481452564841042229.png]()