KVM的基础使用

2019-03-05 16:03:50 浏览数 (1)

  • 环境说明:
    • Centos 7

环境检测

  • 安装和使用KVM前,需事先确认CPU是否支持硬件虚拟化。如果返回lm(KVM仅支持x84_64平台,lm即64位)及vmx/svm(vmx:英特尔CPU虚拟化技术; svm:AMD的CPU虚拟化技术)中任一值则说明CPU支持硬件虚拟化技术。
代码语言:javascript复制
# grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
  • 如果使用的是VMware Workstation,则需要开启虚拟化引擎

启用KVM

代码语言:javascript复制
# modprobe kvm #装载kvm模块。如果没有手动装载,在使用KVM时,系统将自动装载
# lsmod | grep -i kvm #检测当前系统是否已装载KVM模块

使用virt-manager管理KVM

  • 安装kvm相关软件包
代码语言:javascript复制
# yum -y install qemu-kvm libvirt-daemon-kvm virt-manager
# systemctl start libvirtd.service
  • 如下图所示,安装kvm后,将自动在本地创建一个名为virbr0的NAT虚拟网桥
  • 查看当前本机所有桥设备。一般来说,我们直接使用NAT桥做虚拟机相关操作即可;同时,除了可以使用自动生成的桥,我们也可以自定义桥。

自定义桥

  • 创建一个自定义的物理桥
代码语言:javascript复制
# 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虚拟机了。

使用KVM虚拟机

代码语言:javascript复制
# virt-manager #启动图像管理工具
  • 选择相应的系统,等待安装完毕即可。

使用自定义存储设备

  • 创建自定义的存储块设备
代码语言:javascript复制
# 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
代码语言:javascript复制
# cp cirros-0.3.0-x86_64-disk.img /vm/images/c4.img

使用原生qemu-kvm管理虚拟机

代码语言:javascript复制
# 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的镜像文件,即可跳过该网络测试检查。
代码语言:javascript复制
# 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虚拟机
代码语言:javascript复制
# vncviewer :0 #此处表示连接到第1号桌面。同理,5901则为2号

0 人点赞