KVM虚拟化
一、环境介绍:
centos7.7
10.0.0.43
vm虚拟机(BIOS打开VT功能,vmware station打开虚拟化选项)
虚拟机设置
检查是否支持虚拟化
cat /proc/cpuinfo | grep vmx
rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pgemca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq
二、部署
配置网卡
ifcfg-ens33,本地宿主机网卡除了正常配置外,只需要加一个BRIDGE=br0就行。
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.43
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=223.6.6.6
BRIDGE=br0
新建一个ifcfg-br0网卡
#touch ifcfg-br0
文件中写入如下内容,把宿主机的ip,mask,gateway,dns都原封不动移动过来,再新加其它几个选项。
[root@localhost ~]# touch ifcfg-br0
[root@localhost ~]# mv ifcfg-br0 /etc/sysconfig/network-scripts/
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=10.0.0.43
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=223.6.6.6
DELAY=0
~
重启网卡
[root@localhost ~]# systemctl restart network.service
Job for network.service failed because the control process exited witherror code. See "systemctl status network.service" and "journalctl -xe" for details.
验证(reboot重启完后查看)
根据个人需求,安装需要的程序
[root@localhost ~]# yum install -y wget lrzsz gcc gcc-c++ vim
安装kvm
[root@localhost ~]# yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client bridge-utils virt-viewer virt-install
启动并设置开机自启动
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# systemctl enable libvirtd
查看模块
[root@localhost ~]# lsmod | grep kvm
关闭firewalld和selinux,如果有iptables的话,先关闭
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
新建两个目录存放iso文件和image文件
[root@localhost ~]# mkdir -p /data/iso
[root@localhost ~]# mkdir -p /data/vm-image
开始安装虚拟机,这里我们安装的是centos7.7
virt-install --name centos7.7 --ram 1024 --vcpus=1 --disk path=/data/vm-image/centos7.7.img,size=5 --network bridge=br0 --cdrom /data/iso/CentOS-7-x86_64-DVD-1908.iso --vnclisten=10.0.0.43 --vncport=6900 --vnc
提示如下的时候,需要打开vnc客户端软件连接
注意:
关闭虚拟机
virsh shutdown +域名
这个时候我在virsh list发现 这个虚拟机还是在运行的,并没有关闭。
我们需要安装一个acpid的服务并启动它,什么是ACPI?
ACPI是Advanced Configuration and PowerInterface缩写,高级配置和电源管理接口。
acpid中的d则代表daemon。
Acpid是一个用户空间的服务进程,它充当linux内核与应用程序之间通信的接口,负责将kernel中的电源管理事件转发给应用程序。
其实,说明了就是通过这个服务来执行电源关闭的动作,这也是为什么我们执行virsh shutdown +域名无法关机的原因。
所以,我们需要在子系统里面安装acpid,启动服务器后重启一下子系统,这样我们在virsh控制台就可以reboot和shutdown了,如果是windows,需要在宿主机上安装acpid,但是是能用shutdown命令,reboot是不可以的。不过可以用destory这个命令。
#yum install -y acpid
#/etc/init.d/acpid start或者service start acpid
如果此时我没法进入子机安装acpi协议的话,那么就无法关掉该虚拟机,此时可以用下面这种方法。
#virsh destroy +域名
这种方式的关闭,是一种删除的方式,只是在virsh list中删除了该虚拟机,更多的时候我们习惯用这个命令关机
安装vncviewer,地址https://www.realvnc.com/en/connect/download/viewer/