前言:
接上篇文章
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
我们可以使用官方的镜像,通过cloud-init快速的使用openstack,但这样是有问题的,比如,以centos镜像为例,某些时候可能需要高版本的内核,或者其它的一些特殊定制,这个时候使用官方镜像就不太合适了,因为改动比较多,可能会存在使用失败的风险(比如,某个项目需要特别定制的环境)虽然使用cloud-init可能会达成目标,但复杂程度可能会很高。因此,自制镜像还是非常有必要的。
另外,官方并不提供Windows的镜像(Linux的所有版本镜像都是提供的),如果想在openstack中创建Windows系统的kvm虚拟机,无疑,只有自制镜像这一个方法了。
一,
自制openstack可以使用的Linux镜像
网上有非常多得自制Linux版kvm镜像的,没什么好说的,Linux基本都是支持virtio驱动的,在这里就不重复以往的内容了
kvm环境搭建:https://zskjohn.blog.csdn.net/article/details/124658437
kvm安装centos:https://zskjohn.blog.csdn.net/article/details/124656132
只是需要注意几点:1,kvm环境很重要,尽量使用高内核版本那个kvm 2,虚拟网卡br0也是很重要的 3,安装包文件也就是ISO文件尽量从官网下载
4,虚拟机安装完毕后,需要使用libguestfs工具包里的工具压缩节约磁盘空间,方便虚拟机在其它系统内运行。
#######附:--os-variant参数如何设定?找对应的,填写short ID,比如,要安装的是winserver 2021,那就写win2k12
[root@k8s-node2 opt]# osinfo-query os Short ID | Name | Version | ID ----------------------+----------------------------------------------------+----------+----------------------------------------- alpinelinux3.5 | Alpine Linux 3.5 | 3.5 | http://alpinelinux.org/alpinelinux/3.5 alpinelinux3.6 | Alpine Linux 3.6 | 3.6 | http://alpinelinux.org/alpinelinux/3.6 alpinelinux3.7 | Alpine Linux 3.7 | 3.7 | http://alpinelinux.org/alpinelinux/3.7 alpinelinux3.8 | Alpine Linux 3.8 | 3.8 | http://alpinelinux.org/alpinelinux/3.8 alt.p8 | ALT p8 StarterKits | p8 | http://altlinux.org/alt/p8.starterkits alt.p9 | ALT p9 StarterKits | p9 | http://altlinux.org/alt/p9.starterkits alt.sisyphus | ALT regular | sisyphus | http://altlinux.org/alt/sisyphus alt8.0 | ALT 8 Education | 8.0 | http://altlinux.org/alt/8.0 alt8.1 | ALT 8.1 | 8.1 | http://altlinux.org/alt/8.1 ####后面的略略略。。。。。。。。。。。。。。。。 win2k12 | Microsoft Windows Server 2012 | 6.3 | http://microsoft.com/win/2k12 win2k12r2 | Microsoft Windows Server 2012 R2 | 6.3 | http://microsoft.com/win/2k12r2 win2k16 | Microsoft Windows Server 2016 | 10.0 | http://microsoft.com/win/2k16 win2k19 | Microsoft Windows Server 2019 | 10.0 | http://microsoft.com/win/2k19 win2k3 | Microsoft Windows Server 2003 | 5.2 | http://microsoft.com/win/2k3 win2k3r2 | Microsoft Windows Server 2003 R2 | 5.2 | http://microsoft.com/win/2k3r2 ####后面的略略略。。。。。。。。。。。。。。。。
二,
自制openstack可以使用的Windows镜像
window镜像比较麻烦,麻烦点在于一个是磁盘驱动和网卡驱动的选择和安装,另一个是系统的激活问题,比如,win7激活可能需要工具,如何上传工具到虚拟机里?
Windows xp 虚拟机的安装:https://zskjohn.blog.csdn.net/article/details/126357233
Windows 7 旗舰版 虚拟机的安装:kvm安装Windows7旗舰版_晚风_END的博客-CSDN博客_kvm windows
####注:操作系统的安装ISO文件必须是纯净版的,而纯净版的操作系统是没有virtio驱动文件的,因此,可以下载其它云计算爱好者自制的集成了virtio驱动的文件,例如virtio_cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso这样的文件,其内自带virtio驱动
下面以cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso为例,在安装一遍(下载地址:MSDN, 我告诉你 - 做一个安静的工具站):
1,kvm环境
[root@k8s-node2 opt]# virsh -c qemu:///system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # version Compiled against library: libvirt 4.5.0 Using library: libvirt 4.5.0 Using API: QEMU 4.5.0 Running hypervisor: QEMU 1.5.3
2,
系统内核
[root@k8s-node2 opt]# uname -a Linux k8s-node2 5.4.228-1.el7.elrepo.x86_64 #1 SMP Thu Dec 15 18:03:40 EST 2022 x86_64 x86_64 x86_64 GNU/Linux
3,
网络概况:
[root@k8s-node2 opt]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000 link/ether 00:0c:29:85:c7:73 brd ff:ff:ff:ff:ff:ff inet6 fe80::20c:29ff:fe85:c773/64 scope link valid_lft forever preferred_lft forever 3: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN qlen 1000 link/ipip 0.0.0.0 brd 0.0.0.0 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:85:c7:73 brd ff:ff:ff:ff:ff:ff inet 192.168.0.13/24 brd 192.168.0.255 scope global br0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe85:c773/64 scope link valid_lft forever preferred_lft forever 5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 52:54:00:51:64:c3 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52:54:00:51:64:c3 brd ff:ff:ff:ff:ff:ff 8: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:15:7f:11:d9 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever
4,
直接执行安装命令:
创建虚拟磁盘
[root@k8s-node2 opt]# qemu-img create -f qcow2 /opt/win2k12r2.qcow2 15G Formatting '/opt/win2k12r2.qcow2', fmt=qcow2 size=16106127360 encryption=off cluster_size=65536 lazy_refcounts=off
执行安装(这里是挂载两个光驱,硬盘模式要指定为IDE,如果是virtio将不能认到硬盘):
virt-install --name=win2k12r2 --ram 2048 --vcpus=2 --os-type=windows --os-variant win2k12r2 --disk path=/opt/win2k12r2.qcow2,bus=ide,size=15,format=qcow2 --accelerate --disk device=cdrom,path=/opt/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso --disk device=cdrom,path=/opt/virtio-win-0.1.102.iso --vnc --vncport=5955 --vnclisten=0.0.0.0 --network bridge=br0 --force --autostart --boot cdrom
驱动等待进入这个界面的时候在挂载:
接上面图片,下一步:
选择第四个数据中心安装,如果选择不带gui的,安装完成后将会是黑屏,只有一个cmd窗口:
接受许可:
因为是IDE,所以直接认到了,下一步
把E盘的网卡驱动选择了,隐藏那个√去掉:
等待安装完成:
此时登陆虚拟机,可以看到网卡驱动是virtio了(如果不是virtio,显示的是e1000,那么,需要修改xml文件指定为virtio):
安装完毕后,关闭虚拟机,重新编辑xml配置文件,将两个光驱卸载掉,再次重新启动:
cp /etc/libvirt/qemu/win2k12r2.xml ./
删除的内容:
<disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/opt/cn_windows_server_2012_r2_vl_x64_dvd_2979220.iso'/> <target dev='hdb' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/opt/virtio-win-0.1.102.iso'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk>
再次启动虚拟机:
[root@k8s-node2 opt]# virsh create win2k12r2.xml Domain win2k12r2 created from win2k12r2.xml
设置密码,就可以使用了
最后一步,压缩镜像:(一般压缩完了的话,可以小一半)
virt-sparsify --compress /opt/win2k12r2.qcow2 newwin2k12r2.img
当然,此镜像没有安装 cloudbase-init 服务,但不影响在私有云上运行
##########附:系统激活
可以有N种方式,不过秘钥激活成功率比较低,KMS工具还是比较可靠
虚拟机安装完毕后,开启远程连接服务,上传KMS工具即可。
密钥 Windows Server 2012 R2(ServerStandard)
安装密钥:
NB4WH-BBBYV-3MPPC-9RCMV-46XCB
产品密钥:
MMPXK-NBJDQ-JPM34-WX3FM-G276W
在openstack上运行此镜像,连接到控制台后,查看网卡信息应该如下:
可以ping通外网(virtio的驱动才可以正确联网,如果是其它的驱动上网会非常困难):