之所以要只有C盘分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容。无需人工介入
在原来的物理机10.40.41.1的CentOS 6.7上制作镜像。
宿主机坱要安装KVM相关软件:
yum groupinstall Virtualization "Virtualization Client" -y
yum install libvirt libguestfs-tools qemu virt-manager virt-viewer qemu-kvm virt-install bridge-utils -y
service libvirtd start
chkconfig libvirtd on
材料有
cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso------itellyou.cn上有得下载
virtio-win-0.1-81.iso-------百度上找的下载
上传至10.40.41.1的物理机上的/home目录下
创建镜像的硬盘文件
cd /mnt/sdf1/win2k8/
qemu-img create -f qcow2 win2k8.qcow2 40G
创建虚拟机
virt-install --connect qemu:///system --virt-type=kvm
--name win2k8 --ram 4096 --vcpus 2 --arch=x86_64
--network bridge=kvmbr0,model=virtio
--disk /mnt/sdf1/win2k8/win2k8.qcow2,format=qcow2,device=disk,bus=virtio
--cdrom /home/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso
--disk=/home/virtio-win-0.1-81.iso,device=cdrom,perms=ro
--graphics spice,listen=0.0.0.0 --video qxl --channel spicevmc
--os-type windows --os-variant win2k8
在本地Win7上安装SPICE客户端(下载链接 https://fedorahosted.org/released/virt-viewer/),Linux系统可在GUI界面下安装virt-viewer
安装完成后,运行 Remote viewer
我下载的是最新的msi版本。安装在win7电脑后,通过在跳板物理机上 virsh domdisplay win2k8先查看到这个虚拟机使用的SPICE端口号是5900
在自己电脑的客户端上新建链接
连接后
我们安装企业版,因为企业版的CPU和内存支持数量可以满足中小企业的需求,标准版支持的CPU数据只有4个太少,企业版可以支持8个CPU。而已刚好我们有这个企业版的密钥,选择(完全安装)的方式带桌面,如果只装核心版的话,只就能敲cmd命令行了,连图形界面都没有。
走到这一步时选自定义
手工加载驱动
系统需要安装两个驱动,一个网卡,一个硬盘,由于刚才我们在跳板物理机上启动镜像时,挂了两块cdrom . 其中virtio-win-0.1-81_bak.iso就是用来装这两个驱动的。
因为Server2008版本是跟Win7一起发布的,所以我们选择win7的驱动文件夹即可
安装这两个驱动,只需选中其中一个,点下一步就是自动安装,
然后再回到浏览的界面上,再进到cdrom选中下一个驱动安装
第二个驱动是硬盘驱动,安装完后,就可以读到硬盘了。
不再安装驱动,我们这里就点下一步安装操作系统,直到完成,其间会发生窗口中断,不管它,是因为安装windows时它自己会尝试重启,如果它自己不懂重启,我们就上物理机上,把虚机启动
# virsh start win2k8r2
然后只需自己电脑上重连一下VNC就可以继续看到
最终会看到系统提示我们设置一个Administrator的密码,我设置了venic8888*
镜像启动进来后,它会自动打开这个窗口
我们首要任务要做的两件事就是
1、开启机器上的远程连接
2、激活产品密钥。
手工输MAK密钥,有个弊端,就是我们现在激动的话,它会注册本地的“计算机名称”+密钥 绑定一起上传至微软服务器,将来我们的新镜像打包上传至openstack时,重新创建虚机时,我们的“计算机名称”会跟着我们的openstack名称命名,结果就是当前的密钥匙跟将来的不一致了,密钥就会失效。
当然,我们有买很多2008 R2的企业版密钥,可选择不在镜像中注册秘钥,等开通虚拟机后再注册,或者购买一个可以注册很多机器的秘钥也可以,那样也省事,
当然,如果你们只是测试的话,我们可以使用一劳永逸的方法。
那就是使用网上的第三方激活工具,但第三方注册工具必须是侵权的,不推荐,但是个人的内网测试的话,还是可以实验一下的,它的钥匙跟MAK密钥 还不一样,当前的虚机的秘钥会跟着openstack新建名称的虚拟机一起生效等于永久使用。以下将这个方法贴出供大家参考,我使用网络共享文件夹的方式,从其它机器拉到这台镜像的虚拟机上,如下图所录,左边这两个工具,一个是激活工具(这个在win7 ghost盘里是自带的,叫windows loader),这个直接可以永久激活
激活后
先别重启先,稍后再重启
按照道理,激活后的这个镜像其实可以打包上传openstack使用了,但它不会自动弹性扩容硬盘C盘,也不会自动帮修改网卡的MAC地址(多个相同的MAC地址的虚拟机之间是无法通信的)
因此,我们需要再安装Cloudbase-init 这个工具是为了让openstack能够控制它metedata,与之交互,可以实现注入管理员帐号的密钥,和扩展云主机(我们C盘的硬盘大小)等等
docker官网上的文档---镜像制作指引,上有提供下载的链接,我也是先想办法下载后通过共享文件夹上传的,安装时,先一路点next
到这个地方,它指是:我们让它这个工具,可以生成一个叫admin的管理员,它也在管理员用户组里,可以通过com1进入VNC
下一步下一步就可以开始安装了。
安装完成后,这里有两个复选框,我来解释一下,如果勾选的话,
Cloudbase-init会把这个镜像虚拟,进行初始化,并且我们到时在openstack启动虚机时,我们还得重新设置管理员密码、激活 密钥 和做一些其它像打开远程连接的设置等,(如果你有足够的密钥,或者一直可用激活工具的话,可以勾选),这里我们不要勾选,目的就是为了,保存我们刚才已经注册好的秘钥。直接完finish完成。
接下来我们就可以把左边的两个工具删除,清空回收站,重启电脑,让密钥激活生效
重启系统后,我们再手功关机
接下来压缩镜像
qemu-img convert -c -p -O qcow2 /mnt/sdf1/win2k8/win2k8.qcow2 /mnt/sdf1/win2k8/win2k8r2.qcow2
上传至controller,并导入镜像
glance image-create --name "win2k8r2"
--file win2k8r2.qcow2
--disk-format qcow2 --container-format bare
--visibility public --progress
因为我们一开始在cloudbase-init没有把镜像进行初始化,所以在初次在dashboard创建虚拟机实例时,它会在1分钟内自动重启1次的机器,用来修改主机名称,以及2分钟后重启,生成另一个管理员帐号+重置网卡物理信息,(http://cloudbase-init.readthedocs.io/en/latest/plugins.html有说明)可以从VNC界面看到这个动作。这就是不用初始化,保留免注册密钥动作的代价。如果你还没有看到另一个帐号的登录界面,那就是你不小心前提登录进去了,中断了它的自动重启,需要你自己手工重启虚拟机。