- 环境说明:
- Centos 7
环境检测
- 安装和使用KVM前,需事先确认
CPU
是否支持硬件虚拟化
。如果返回lm
(KVM仅支持x84_64平台,lm即64位)及vmx/svm
(vmx:英特尔CPU虚拟化技术; svm:AMD的CPU虚拟化技术)中任一值则说明CPU支持硬件虚拟化技术。
# grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
- 如果使用的是
VMware Workstation
,则需要开启虚拟化引擎
。
代码语言:javascript复制启用KVM
# modprobe kvm #装载kvm模块。如果没有手动装载,在使用KVM时,系统将自动装载
# lsmod | grep -i kvm #检测当前系统是否已装载KVM模块
使用
virt-manager
管理KVM
- 安装
kvm
相关软件包
# yum -y install qemu-kvm libvirt-daemon-kvm virt-manager
# systemctl start libvirtd.service
- 如下图所示,安装
kvm
后,将自动在本地创建一个名为virbr0
的NAT虚拟网桥
- 查看当前本机所有桥设备。一般来说,我们直接使用
NAT桥
做虚拟机相关操作即可;同时,除了可以使用自动生成的桥,我们也可以自定义桥。
自定义桥
- 创建一个自定义的
物理桥
# yum -y install bridge-utils
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-ens33 ifcfg-br0
# vim ifcfg-ens33
代码语言:javascript复制# vim ifcfg-br0
代码语言:javascript复制# systemctl restart network.service
- 此时,ens33不在是网卡设备,而是相当于交换机,并连接到物理桥br0上
- 可以看见,此时多了一个桥。现在,我们可以基于自动创建的NAT桥或自定义的物理桥来使用KVM虚拟机了。
代码语言:javascript复制使用KVM虚拟机
# virt-manager #启动图像管理工具
- 选择相应的系统,等待安装完毕即可。
使用自定义存储设备
- 创建自定义的存储块设备
# mkdir -pv /vm/images
mkdir: created directory ‘/vm’
mkdir: created directory ‘/vm/images’
# qemu-img create -f qcow2 -o size=120G,preallocation=metadata /vm/images/c1.qcow2
Formatting '/vm/images/c1.qcow2', fmt=qcow2 size=128849018880 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off
# virt-manager #在创建虚拟机上,除了选择存储块时不同外,其它没什么区别,依据安装向导提示安装即可(如果选择的是PXE安装,需选定网卡启动模式)
导入KVM虚拟镜像系统
- 下载kvm测试系统Cirros
# cp cirros-0.3.0-x86_64-disk.img /vm/images/c4.img
代码语言:javascript复制使用原生
qemu-kvm
管理虚拟机
# qemu-kvm #键入命令行后系统会提示无法找到该命令,这是因为官方推荐使用libvirt工具栈(eg:virsh)。如果确定想使用qemu-kvm,创建一个软链接到PATH路径下即可。
# ln -sv /usr/libexec/qemu-kvm /usr/bin/ #执行程序的路径通过"rpm -q qemu-kvm"获取即可
# ‘/usr/bin/qemu-kvm’ -> ‘/usr/libexec/qemu-kvm’
# cp cirros-0.3.0-i386-disk.img /vm/images/c7.img
# qemu-kvm -name c2 -m 64 -smp 4,sockets=2,cores=2 -drive file=/vm/images/c7.img,if=virtio,media=disk -nographic #如果没有手动指定 默认使用vnc
- 这里,可能会遇到的一个问题时,
Cirros
项目为了测试网络的联通性,默认会远程连接到一个IP地址测试,如果失败,将持续30次,直到网络畅通或全部失败,才启动。如下:
- 为提高测试速度,我们可以使用该项目下载目录下,名称带有
no-cloud
的镜像文件,即可跳过该网络测试检查。
# cp cirros-0.3.0-nocloud-disk.img /vm/images/c8.img
# qemu-kvm -name c8 -m 64 -smp 4,sockets=2,cores=2 -drive file=/vm/images/c8.img,if=virtio,media=disk -vnc :0 & #或使用--daemonize显示声明置于后台
- 查看当前KVM服务状态
- 远程连接到KVM虚拟机
# vncviewer :0 #此处表示连接到第1号桌面。同理,5901则为2号