一、准备工作
1、检查CPU特性
CPU应该支持vmx特性以更好地运行KVM虚拟机:lscpu | grep vmx 或者 cat /proc/cpuinfo | grep vmx
[root@localhost ~]# lscpu | grep vmx
[root@localhost ~]#
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
flags : aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr
2、安装一些基础软件包(非必须)
sudo yum install -y epel-release net-tools vim unzip zip wget ftp bridge-utils
3、安装KVM及相关工具
sudo yum install -y qemu-kvm libvirt
sudo yum install -y qemu-img
sudo yum install -y virt-install.noarch
sudo yum install -y libguestfs-tools libguestfs-tools libguestfs-tools-c
如果安装不了,需要配置网络、DNS及yum源:
二、验证安装结果
1、正常应该启动加载如下:
$ lsmod | grep kvm
kvm_intel 174250 0 kvm 570658 1
kvm_intel
2、如果只加载如下:
[root@localhost ~]# lsmod | grep kvm
kvm 554609 0
irqbypass 13503 1 kvm
3、需要加载KVM模块至内核:
modprobe kvm
modprobe kvm-intel
执行报错:
[root@localhost ~]# modprobe kvm
[root@localhost ~]#
[root@localhost ~]# modprobe kvm-intel
modprobe: ERROR: could not insert ‘kvm_intel’: Operation not supported
4、开启CPU支持虚拟机:
开机时按F2、F12、DEL、ESC等键就可以进入到BIOS,进入到BIOS后,找到Configuration选项或者Security选项,然后选择Virtualization,或者Intel Virtual Technology,然后回车,将其值设置成:设置为Enabled。
三、启动相关服务
1、启动libvirtd服务并设置为开机自动运行
systemctl start libvirtd
systemctl enable libvirtd
2、检查服务状态
systemctl status libvirtd
systemctl is-enabled libvirtd
3、调整权限
将user和group前面的#去掉,让root用户可以操作
[root@Dell ~]# vim /etc/libvirt/qemu.conf
user = “root”
group = “root”
四、创建KVM虚拟机
1、创建KVM目录
mkdir /root/kvm-test
2、创建虚拟磁盘文件
qemu-img create -f qcow2 /root/kvm-test/CentOS-7.qcow2 10G
-f 指定格式 qcow2 kvm的虚拟磁盘格式
/root/kvm-test/CentOS-7.qcow2 /root/kvm-test目录及CentOS-7.qcow2文件名
10G 虚拟磁盘大小
3、上传Linux安装镜像
CentOS-7-x86_64-Minimal-1810.iso
4、安装KVM虚拟机
1)安装命令:
virt-install --virt-type kvm --name kvm-test --ram 10240 --vcpus 1 --cdrom=/root/kvm-test/CentOS-7-x86_64-Minimal-1810.iso --disk /root/kvm-test/CentOS-7.qcow2,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7
2)安装命令解释
--virt-type HV_TYPE 要使用的管理程序名称 (kvm, qemu, xen, ...)
-n NAME, --name NAME 客户机实例名称
-r MEMORY, --ram=MEMORY:虚拟机内在大小,单位为MB;
--vcpus VCPUS 配置客户机虚拟 CPU(vcpu) 数量。例如:
--vcpus 5
--vcpus 5,maxcpus=10,cpuset=1-4,6,8
--vcpus sockets=2,cores=4,threads=2
--cdrom CDROM 光驱安装介质
--disk DISK 指定存储的各种选项。例如:
--disk size=10 (在默认位置创建 10GiB 镜像)
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
配置客户机网络接口。例如:
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--network none
--network help
--graphics GRAPHICS 配置客户机显示设置。例如:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--noautoconsole 不要自动尝试连接到客户端控制台
--os-type=DISTRO_TYPE 操作系统类型,如linux、unix或windows等;
--os-variant DISTRO_VARIANT
在客户机上安装的操作系统,例如:'fedor
a18'、'rhel6'、'winxp' 等。
3)安装报错1:
Starting install… ERROR ‘virConnect’ object has no attribute
‘baselineHypervisorCPU’ Domain installation does not appear to have
been successful. If it was, you can restart your domain by running:
virsh --connect qemu:///system start kvm-test otherwise, please
restart your installation.
解决办法:将 libvirt-python-3.2.0-3 升级至 libvirt-python-4.5.0-1 即可解决
[root@localhost ~]# yum install libvirt-python
Resolving Dependencies
–> Running transaction check
—> Package libvirt-python.x86_64 0:3.2.0-3.el7_4.1 will be updated
—> Package libvirt-python.x86_64 0:4.5.0-1.el7 will be an update
–> Finished Dependency Resolution
4)安装报错2:
Starting install…
ERROR Cannot access storage file
‘/root/kvm-test/CentOS-7.qcow2’ (as uid:107, gid:107): Permission denied
解决办法:qemu.conf中将user和group前面的#去掉,让root用户可以操作,修改后重启libvirtd服务;
sed -i ‘s/#vnc_listen = “0.0.0.0”/vnc_listen = “0.0.0.0”/g’ /etc/libvirt/qemu.conf
sed -i ‘s/#group = “root”/group = “root”/g’ /etc/libvirt/qemu.conf
sed -i ‘s/#user = “root”/user = “root”/g’ /etc/libvirt/qemu.conf
service libvirtd restart
5)安装报错3:默认虚拟网络不可用或没有启动
a、检查/usr/share/libvirt/networks/目录下有没有default.xml文件;
[root@localhost ~]# cat net-define /usr/share/libvirt/networks/default.xml
<network>
<name>default</name>
<bridge name="virbr0"/>
<forward/>
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254"/>
</dhcp>
</ip>
</network>
b、重新加载并激活xml配置:
virsh net-define /usr/share/libvirt/networks/default.xml
virsh net-autostart default
virsh net-start default
c、检查默认虚拟网络是否可用
[root@localhost ~]# virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
五、VNC连接KVM虚拟机
1、查看qemu-kvm端口
[root@localhost ~]# netstat -natp | grep kvm
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 9894/qemu-kvm
tcp 0 0 192.169.8.197:5900 192.169.0.24:63646 ESTABLISHED 9894/qemu-kvm
2、开放查出来的qemu-kvm端口
iptables -I INPUT -p tcp --dport 5900 -j ACCEPT
或者
(1) 端口: firewall-cmd --zone=public --add-port=5900/tcp --permanent
(2)刷新防火墙规则: firewall-cmd --reload
验证端口,查询防火墙开放端口: firewall-cmd --zone=public --list-port
3、使用VNC Viewer连接安装KVM虚拟机
如果没有开启qemu-kvm端口,则会出现如下报错:
六、KVM虚拟机控制及状态查看
1、virsh进入交互模式
[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: ‘help’ for help with commands
‘quit’ to quit
virsh # list --all
2、list --all 查看kvm虚拟机状态
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- kvm-test shut off
3、启动虚拟机
[root@localhost ~]#virsh start kvm-test
Domain kvm-test started
virsh # list --all
Id Name State
----------------------------------------------------
2 kvm-test running
4、关闭虚拟机
[root@localhost ~]# virsh shutdown kvm-test
Domain kvm-test is being shutdown
5、销毁虚拟机
[root@localhost ~]# virsh undefine kvm-test
Domain kvm-test has been undefined