为 OpenStack Nova 制作 Windows 镜像
2011年06月22日 | 标签: cloud, kvm, nova, openstack, ubuntu, windows | 作者:vpsee
上次 VPSee 给 OpenStack Nova 制作 Ubuntu 镜像的时候忘了介绍制作 Windows 镜像和在 Nova 上运行 Windows 虚拟机的情况,前几天刚好有人在微薄上问到这个问题。在 Nova 上运行 Windows 的虚拟机其实很容易,和运行 Linux 虚拟机差不多:先制作一个 Windows 虚拟机镜像(模板),然后再以这个镜像为模板来创建 Windows 虚拟机(实例)。
安装 Windows 镜像
创建一个 10GB 大小的 “硬盘”(raw 格式):
$ kvm-img create -f raw windowsxp.img 10G Formatting 'windowsxp.img', fmt=raw size=10737418240
openstack 启动虚拟机实例的时候使用的是 virtio 接口,但是 windows 默认没有这个接口的驱动,所以需要额外的驱动。然后使用 ISO 文件的 windowsxp.iso 安装盘来安装 Windows:
$ wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ virtio-win-1.1.16.vfd $ sudo kvm -m 1024 -cdrom windowsxp.iso -drive file=windowsxp.img,if=virtio,boot=on \ -fda virtio-win-1.1.16.vfd -boot d -nographic -vnc :0
在另外一台机器上使用 vnc 客户端就可以看到 windows 安装过程和进行操作:
$ vncview 172.16.39.111:5900
安装完 windows 后可以进行一些必要的定制,比如打开 RDP 访问、设置防火墙不要屏蔽 RDP 等,这时候也可以安装一些必要软件,要注意的是这个是以后的模板,要尽量保持系统原样,最好不要做定制也不要装任何软件,可以留给客户自己做,定制这东西每个人口味都不同。
发布 Windows 镜像
windows 虚拟机镜像做好以后就可以发布到云里了,注册镜像后会得到一个标志符 ami-00000004,以后就用这个 ami-00000004 来识别云里面的镜像(还记得我们上次做的 ubuntu 镜像的标志符是 ami-00000003 吗?):
$ euca-bundle-image -i windowsxp.img Checking image Encrypting image Splitting image... Part: windowsxp.img.part.00 Part: windowsxp.img.part.01 ... Part: windowsxp.img.part.65 Generating manifest /tmp/windowsxp.img.manifest.xml $ euca-upload-bundle -b mybucket -m /tmp/windowsxp.img.manifest.xml Checking bucket: mybucket Uploading manifest file Uploading part: windowsxp.img.part.00 ... Uploading part: windowsxp.img.part.65 Uploaded image as mybucket/windowsxp.img.manifest.xml $ euca-register mybucket/windowsxp.img.manifest.xml IMAGE ami-00000004
检验一下 windows 镜像是否上传成功,ami-00000004 就是我们刚做的 windows 镜像:
$ euca-describe-images IMAGE aki-00000001 mybucket/vmlinuz-2.6.32-28-server.manifest.xml available public x86_64 kernel IMAGE ari-00000002 mybucket/initrd.img-2.6.32-28-server.manifest.xml available public x86_64 ramdisk IMAGE ami-00000003 mybucket/ubuntutemplate.img.manifest.xml available public x86_64 machine aki-00000001 ari-00000002 IMAGE ami-00000004 mybucket/windowsxp.img.manifest.xml untarring public x86_64 machine
第一个 Windows 虚拟机实例
有了这个 windows 模板(镜像)以后我们就可以以这个 “镜像” 为模板来为云计算用户创建 n 个 windows 虚拟机,运行之前需要 key:
$ euca-describe-keypairs KEYPAIR mykey 76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05 $ euca-run-instances -k mykey -t m1.small ami-00000004 RESERVATION r-er0zkjm7 mycloud default INSTANCE i-00000003 ami-00000004 scheduling mykey (mycloud, None) 0 m1.small 2011-06-20T14:08:45Z unknown zone
然后用 nova-manage 命令检查是否成功运行 windows 虚拟机,状态栏 state 应该是 running 状态:
$ sudo nova-manage vm list instance node type state launched image kernel ramdisk project user zone index i-00000003 node01running 2011-06-20 14:12:49 7 mycloud vpsee None 0
大功告成,用一个 RDP 客户端连接 windows 就可以了(这个 windows 云虚拟机使用的是内部 IP):
# rdesktop 192.168.3.4
windows的密码是固定的吗?
初始镜像的密码就是安装 Windows 时的密码,启动 Windows 后需要自己更改密码。
@vpsee
$ euca-describe-keypairs
KEYPAIR mykey 76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05
$ euca-run-instances -k mykey -t m1.small ami-00000004
这个m1.small是用ami-04创建的一个虚机吗?
这里的mykey的名字是上面查看到keypairs的名称是一样的是吧?
m1.small 是虚拟机型号,ami-00000004 是模板(image)序号。
koory@openstack:~$ euca-bundle-image -i windowsxp.img
Invalid cert
vpsee你好!出现这样的现象是什么问题?谢谢.
问题解决了,没仔细看vpsee写的文章。打扰~
請問一下 我按照你的文件安裝了 OpenStack Compute over Ubuntu 11.04 是可以運行的 同時也安裝了第一個 instance Ubuntu 10.10 可以連得上 也可以登入 一切正常 但是我嘗試著根據你的這篇文章安裝 Windows XP instance run 起來正常 也可以透過 VNC 連進去安裝成功 可是接下來 euca-run-instance 之後 running 正常 卻無法登入也無法 ping. 我想知道有需要針對這個 Windows instance 另外做網路設定嗎?
@Christine
你在 windows 里面设置网络和固定 IP/gateway 再试一下。
我也遇到了与7楼相同问题,可以正常启动、DHCP分配IP地址,就是不可以连接WINDOWS实例。VNC与RDESKTOP都不可以。直接用KVM启动这个虚拟机,提示没网卡驱动。
我遇到的问题是, 发布模板之后, 创建虚拟机实例之后使用 VNC连上发现 硬盘是不可启动设备:
显示:
booting from harddisk
boot faild: not a bootable disk
我创建的模板本身的硬盘镜像绝对是可以启动的, 已经另试验过了..
myhost@myhost:~$ euca-bundle-image -i windowsxp.img
Invalid cert
vpsee你好!我也出现koory 同样的问题,但是我还没有找到原因,请帮忙谢谢!
问题解决了,谢谢
能分享下,问题是怎么解决的吗?我也出现这样的情况了。
想问一下,我做windows7镜像的时候没有安装virtio,后面怎么补救?
vpsee您好!
请教一个问题,我做好winxp镜像成功,instance显示是running,有两个ip地址,为何我都不能ping通?
无法远程连接啊!
期望您的解答!
我也是如上做了,用kvm起的时候是可以上网的,可是上传后显示running但console-output是空的,也ping不到不知是什么原因,请教~~
@vpsee
为何我要start instance时会出现api error的讯息
系统Fedora16 64位
qemu -boot d -m 512 -cdrom Deepin.iso -drive file=xp.img,boot=on -fda virtio-win-1.1.16.vfd -vnc :1
以下命令后,在另一终端中vnc登录,一直卡在“Booting from Hard Disk。。。”
Deepin.iso此用virt-manager可以正常安装
请教下vpsee!多谢了~~
想請問有高手知道輸入
$ euca-bundle-image -i windowsxp.img
Invalid cert
這樣結果是出錯在哪??
要怎麼修正??
謝謝
已解決,謝謝
你好,我制作的时候,出现了一个错误,提示无法辨别raw的提示,是啥原因导致的呢?麻烦,抽空帮帮忙,谢谢
你好,请问当我输入euca-register mybucket/windowsxp.img.manifest.xml
时,报错:UnknownError: An unknown error has occurred. Please try your request again. (前面我上传的步骤都正确,输入 euca-describe-availability-zones verbose
时也能显示:AVAILABILITYZONE nova available
AVAILABILITYZONE |- node00
AVAILABILITYZONE | |- nova-scheduler enabled :-) 2011-05-22 10:32:31
AVAILABILITYZONE | |- nova-network enabled :-) 2011-05-22 10:32:32
AVAILABILITYZONE | |- nova-compute enabled :-) 2011-05-22 10:32:24
)
请大牛帮帮忙!!!!!
@vpsee
我的window7虚机启动时没有网卡和声卡,什么原因哦?谢谢!
@MyName
原因很多,要到 /var/log/ 里面看错误日志才知道啥问题。
执行sudo kvm -m 1024 -cdrom windowsxp.iso -drive file=windowsxp.img,if=virtio,boot=on \
-fda virtio-win-1.1.16.vfd -boot d -nographic -vnc :0命令会报下面的错误:
drive with bus=0, unit=0 (index=0) exists
请教下是为什么问题,img的问题?