前言:
kvm通常是现在的云平台的底层架构,因此,kvm是需要好好学习的。那么,如何在vm的Linux虚拟机里练习安装kvm虚拟机呢(这里,可能很多同学有点疑惑了,简单来说,就是在vm里安装的虚拟机里配置好kvm环境,然后在制作一个可以随意分发的Windows虚拟机,简称俄罗斯套娃)?
实验目的:
通过在vm虚拟机里安装kvm虚拟机,熟悉kvm的运作机制,并制作出可供云平台比如OpenStack平台使用的虚拟机镜像。
实验环境:
宿主机是Windows7旗舰版,vmware的版本是12pro,vm里安装的操作系统为centos7.6。
计划在centos7.6这个虚拟机里搭建一个完整的kvm环境,制作一个可联网的kvm虚拟机,该虚拟机版本为Windows7旗舰版。
宿主机的配置:
vm的版本:
需要用到的Windows安装包和驱动:
这里啰嗦两句了,ISO文件必须是Windows的纯净版,如果是deep,萝卜什么的定制ISO,虚拟机不会也不能引导成功。
一,kvm环境搭建
Linux虚拟机需要安装桌面和libvirt服务,kvm是每个centos自带的,内核完全支持,就不说了。虚拟机的CPU需要开启虚拟化。如下图:
Linux启动后,配置好本地仓库和virt源仓库,仓库文件内容应该如下,本地仓库的搭建见本人博客,这里就不解释了----Linux的完全本地仓库搭建指南(科普扫盲贴)_zsk_john的博客-CSDN博客_linux仓库:
[kvm]
name=kvm
baseurl=https://mirrors.aliyun.com/centos/7.9.2009/virt/x86_64/kvm-common/
enable=1
gpgcheck=0
仓库配置好后,执行以下命令安装桌面和kvm环境:
yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager
yum groupinstall " GNOME Desktop" -y
这里稍微做一个科普,kvm环境主要是由两个命令族组成(命令族的意思是一系列基本相同的命令,比如,ip 族命令,net族命令),一个是qemu族,一个是virt族。
[root@slave1 opt]# ip
ip ipa-client-automount ipcalc iprdbg ipset iptunnel
ip6tables ipa-client-install ipcmk iprdump iptables
ip6tables-restore ipa-getcert ipcrm iprinit iptables-restore
ip6tables-save ipa-getkeytab ipcs iprsos iptables-save
ipa ipa-join ipmaddr iprupdate iptables-xml
ipa-certupdate ipa-rmkeytab iprconfig ipsec iptc
[root@slave1 opt]# net
netaddr netreport netscsid netstat nettle-hash nettle-lfib-stream
[root@slave1 opt]# virt
virt-clone virt-install virtlogd virt-pki-validate virt-xml
virt-host-validate virtlockd virt-manager virt-what virt-xml-validate
root@slave1 opt]# qemu-
qemu-ga qemu-img qemu-io qemu-nbd qemu-pr-helper
比如上面的net族,我们可以认为netaddr和netsta这两个命令是一个族的,ipa ,ipset ,ip等等命令是ip族的,当然,在kvm里常用的命令是virt-clone virt-install virt-xml virsh 这么几个命令,尤其是virsh,virt-install ,virt-clone 这三个命令非常常用。
以上软件安装完毕后,需要开启libvirt服务,开启服务命令为:
systemctl start libvirtd
systemctl enable libvirtd
systemctl status libvirtd
请确保服务应该是这个样子的:
最后一段说的是我有一个虚拟机在运行,名字是win7。
[root@slave1 opt]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-05-03 17:48:06 CST; 5h 3min ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 27166 (libvirtd)
Tasks: 20 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─27166 /usr/sbin/libvirtd
├─27279 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelp...
└─27280 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelp...
May 03 18:30:51 slave1 dnsmasq-dhcp[27279]: DHCPREQUEST(virbr0) 192.168.122.60 52:54:00:f9:56:56
May 03 18:30:51 slave1 dnsmasq-dhcp[27279]: DHCPACK(virbr0) 192.168.122.60 52:54:00:f9:56:56 zsk-PC
May 03 18:30:56 slave1 dnsmasq-dhcp[27279]: DHCPINFORM(virbr0) 192.168.122.60 52:54:00:f9:56:56
May 03 18:30:56 slave1 dnsmasq-dhcp[27279]: DHCPACK(virbr0) 192.168.122.60 52:54:00:f9:56:56 zsk-PC
May 03 18:34:46 slave1 libvirtd[27166]: 2022-05-03 10:34:46.569+0000: 27166: error : qemuMonitorIO:718 : internal error: End of file from qemu monitor
May 03 22:00:47 slave1 dnsmasq[27279]: no servers found in /etc/resolv.conf, will retry
May 03 22:02:53 slave1 dnsmasq[27279]: reading /etc/resolv.conf
May 03 22:02:53 slave1 dnsmasq[27279]: using nameserver 61.128.114.166#53
May 03 22:02:53 slave1 dnsmasq[27279]: using nameserver 8.8.8.8#53
May 03 22:05:17 slave1 libvirtd[27166]: 2022-05-03 14:05:17.175+0000: 27171: warning : qemuDomainObjTaint:7564 : Domain id=4 name='win7' uu...host-cpu
Hint: Some lines were ellipsized, use -l to show in full.
安装好的虚拟机里的kvm虚拟机是这样的:
未完待续!!