admin 管理员组

文章数量: 887021

前言:

接上篇文章

云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)https://zskjohn.blog.csdn/article/details/128993374https://zskjohn.blog.csdn/article/details/128993374我们可以使用官方的镜像,通过cloud-init快速的使用openstack,但这样是有问题的,比如,以centos镜像为例,某些时候可能需要高版本的内核,或者其它的一些特殊定制,这个时候使用官方镜像就不太合适了,因为改动比较多,可能会存在使用失败的风险(比如,某个项目需要特别定制的环境)虽然使用cloud-init可能会达成目标,但复杂程度可能会很高。因此,自制镜像还是非常有必要的。

另外,官方并不提供Windows的镜像(Linux的所有版本镜像都是提供的),如果想在openstack中创建Windows系统的kvm虚拟机,无疑,只有自制镜像这一个方法了。

一,

自制openstack可以使用的Linux镜像

网上有非常多得自制Linux版kvm镜像的,没什么好说的,Linux基本都是支持virtio驱动的,在这里就不重复以往的内容了

kvm环境搭建:https://zskjohn.blog.csdn/article/details/124658437

kvm安装centos:https://zskjohn.blog.csdn/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/alpinelinux/3.5  
 alpinelinux3.6       | Alpine Linux 3.6                                   | 3.6      | http://alpinelinux/alpinelinux/3.6  
 alpinelinux3.7       | Alpine Linux 3.7                                   | 3.7      | http://alpinelinux/alpinelinux/3.7  
 alpinelinux3.8       | Alpine Linux 3.8                                   | 3.8      | http://alpinelinux/alpinelinux/3.8  
 alt.p8               | ALT p8 StarterKits                                 | p8       | http://altlinux/alt/p8.starterkits  
 alt.p9               | ALT p9 StarterKits                                 | p9       | http://altlinux/alt/p9.starterkits  
 alt.sisyphus         | ALT regular                                        | sisyphus | http://altlinux/alt/sisyphus        
 alt8.0               | ALT 8 Education                                    | 8.0      | http://altlinux/alt/8.0             
 alt8.1               | ALT 8.1                                            | 8.1      | http://altlinux/alt/8.1

####后面的略略略。。。。。。。。。。。。。。。。       
 win2k12              | Microsoft Windows Server 2012                      | 6.3      | http://microsoft/win/2k12           
 win2k12r2            | Microsoft Windows Server 2012 R2                   | 6.3      | http://microsoft/win/2k12r2         
 win2k16              | Microsoft Windows Server 2016                      | 10.0     | http://microsoft/win/2k16           
 win2k19              | Microsoft Windows Server 2019                      | 10.0     | http://microsoft/win/2k19           
 win2k3               | Microsoft Windows Server 2003                      | 5.2      | http://microsoft/win/2k3            
 win2k3r2             | Microsoft Windows Server 2003 R2                   | 5.2      | http://microsoft/win/2k3r2   
####后面的略略略。。。。。。。。。。。。。。。。          
      

二,

自制openstack可以使用的Windows镜像

window镜像比较麻烦,麻烦点在于一个是磁盘驱动和网卡驱动的选择和安装,另一个是系统的激活问题,比如,win7激活可能需要工具,如何上传工具到虚拟机里?

Windows xp 虚拟机的安装:https://zskjohn.blog.csdn/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的驱动才可以正确联网,如果是其它的驱动上网会非常困难):

本文标签: 镜像 文档 社区 openstack Linux