KVM三种工作模式
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下
用户模式:用户执行I/O代码,QEMU运行在这个模式下
内核模式:CPU调度和内存管理相关
1.1.3 案例环境
1. 本案例实验环境
主机 | . 操作系统 | IP地址 | 主要软件 |
kvm01 | CentOS 7.9 x86_64 | 192.168.10.108 | KVM 虚拟机 |
kvm02 | CentOS 7.9 x86_64 | 192.168.10.109 |
2. 案例需求
(1)安装 KVM。
(2)完成基本的 KVM 操作管理(创建、启动、停止等)。
(3)完成 KVM 命令行操作虚拟机。
3. 案例实现思路
(1)准备 KVM 装环境。
(2)安装 KVM。
(3)配置 KVM 桥接网络。
(4)创建 KVM 存储池并安装虚拟机。
(5)命令行操作虚拟机。
1.2 搭建 KVM 虚拟化平台
1.2.1 准备 kvm 虚拟化环境
1.安装
(1)YUM 安装 KVM
yum -y install qemu-kvm
yum -y install qemu-kvm-tools
yum -y install virt-install
yum -y install qemu-img
yum -y install bridge-utils
yum -y install libvirt
yum -y install virt-manager
yum -y install libguestfs-tools
备注:
qemu-kvm : kvm核心包–虚拟操作系统模拟器加速模块
qemu-kvm-tools :qemu-kvm的工具包
virt-install:虚拟机安装工具
qemu-img :是QEMU的磁盘管理工具
bridge-utils:虚拟机与外界通信的命令管理工具
libvirt:必须要装的核心工具
virt-manager:虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)
QEMU是“Quick Emulator”的缩写,是一个用C语言编写的开源虚拟化软件。
QEMU(Quick Emulator)快速仿真器
libguestfs-tools:用于访问虚拟机的磁盘映像文件提供的一组命令
(2)关机,设置CPU支持虚拟化,然后开机
(3)开机后验证
[root@kvm01 ~]# cat /proc/cpuinfo | grep vmx
[root@kvm01 ~]# lsmod | grep kvm
(4)开启 libvirtd 服务
安装完成后还需要开启 libvirtd 服务,以开启相关支持。
[root@kvm01 ~]# systemctl start libvirtd
[root@kvm01 ~]# systemctl enable libvirtd
2.设置 KVM 网络
这里以 Bridge(桥接)为例进行操作演示
[root@kvm01 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm01 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@kvm01 ~]# vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.10.108
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=223.6.6.6
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
[root@kvm01 ~]# vim ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.10.108
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=223.6.6.6
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
[root@kvm01 ~]# systemctl restart network
[root@kvm01 ~]# ifconfig
备注:
在此处做个快照,为后面章节做好实验环境
在另一台kvm主机上重复以上操作,最后也做个快照
3.KVM 管理
[root@kvm01 ~]# virt-manager
(1)创建存储池
存储池的名称为:bdqn
存储池的目录为:/data_kvm/store
(2)创建存储卷
在bdqn的存储池中添加存储卷
存储卷名称为:test01
卷最大容量10G
(3)将Linux系统的ISO文件拷贝到/opt目录下,并关闭存储设置
(4)在kvm01的主机上新建虚拟机,名称为test01
1.2.2 使用 KVM 命令集管理虚拟机
1:KVM 基本功能管理
(1)查看命令帮助
[root@kvm01 ~]# virsh -h
(2)查看 KVM 的配置文件存放目录
[root@kvm01 ~]# ls /etc/libvirt/qemu/
(3)查看虚拟机状态
[root@kvm01 ~]# virsh list --all
(4)虚拟机关机与开机
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh start test01
(5)强制实例系统关闭电源
[root@kvm01 ~]# virsh destroy test01
(6)通过配置文件启动虚拟机系统实例
[root@kvm01 ~]# virsh create /etc/libvirt/qemu/test01.xml
[root@kvm01 ~]# virsh list --all
(7)挂起虚拟机
[root@kvm01 ~]# virsh suspend test01
[root@kvm01 ~]# virsh list --all
(8)恢复虚拟机
[root@kvm01 ~]# virsh resume test01
[root@kvm01 ~]# virsh list --all
(9)配置虚拟机实例伴随宿主机自动启动
[root@kvm01 ~]# virsh autostart test01
(10)导出虚拟机配置
[root@kvm01 ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml
(11)虚拟机的删除与添加
删除虚拟机。
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh undefine test01
查看删除结果,test01 的配置文件被删除,但是磁盘文件不会被删除。
[root@kvm01 ~]# ls /etc/libvirt/qemu/
通过 virsh list --all 查看不到 test01 的信息,说明此虚拟机被删除。
[root@kvm01 ~]# virsh list --all
通过备份的配置文件重新定义虚拟机。
[root@kvm01 ~]# cd /etc/libvirt/qemu
[root@bdqn qemu]# mv test02.xml test01.xml
重新定义虚拟机。
[root@bdqn qemu]# virsh define test01.xml
查看虚拟机信息。
[root@bdqn qemu]# virsh list --all
(12)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
直接通过 vim 命令修改。
[root@kvm01 ~]# vim /etc/libvirt/qemu/test01.xml
通过 virsh 命令修改。
[root@kvm01 ~]# virsh edit test01
3. KVM 文件管理
(1)查看当前磁盘格式
[root@kvm01 ~]# qemu-img info /data_kvm/store/test01.qcow2
备注:
如果虚拟机磁盘文件不是 qcow2 格式,可以通过 qemu-img 命令转换磁盘文件格式,
如执行以下操作可以将 test01 虚拟机 raw 格式磁盘转换至 qcow2 格式。
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# qemu-img convert -f raw -O qcow2 /data_kvm/store/test01.img /data_kvm/store/test01.qcow2
执行转换磁盘格式的命令后还需要修改 test01 的 xml 配置文件中磁盘的类型与磁盘文件名。
[root@kvm01 ~]# virsh edit test01
…… //省略部分内容
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data_KVM/store/test01.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
(2)virt-cat 命令,类似于 cat 命令
使用这个命令需要安装 libguestfs-tools-c 工具包。
[root@kvm01 ~]# virt-cat -a /data_kvm/store/test01.qcow2 /etc/sysconfig/grub
(3)virt-edit 命令
virt-edit 命令,用于编辑文件,用法与 vim 基本一致。
[root@kvm01 ~]# virt-edit -a /data_kvm/store/test01.qcow2 /etc/resolv.conf
(4)virt-df 命令
virt-df 命令用于查看虚拟机磁盘信息。
[root@kvm01 ~]# virt-df -h test01
4. 虚拟机克隆
(1)查看虚拟机状态
[root@kvm01 ~]# virsh list --all
(2)从 test01 克隆 test02
[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
(3)查看虚拟机状态
[root@kvm01 ~]# virsh list --all
(4)启动虚拟机
[root@kvm01 ~]# virsh start test02
5. 虚拟机快照
KVM 虚拟机要使用镜像功能,磁盘格式必须为 qcow2。下面介绍 KVM 虚拟机快照备
份的过程。
(1)对 test01 创建快照
[root@kvm01 ~]# virsh snapshot-create test01
已生成域快照 1503494464
(2)查看虚拟机快照版本信息
[root@kvm01 ~]# virsh snapshot-current test01
(3)查看快照信息
[root@kvm01 ~]# virsh snapshot-list test01
(4)创建新快照
[root@kvm01 ~]# virsh snapshot-create test01
(5)查看快照信息
[root@kvm01 ~]# virsh snapshot-list test01
(6)恢复虚拟机状态
[root@kvm01 ~]# virsh snapshot-revert test01 1503494464
(7)查看虚拟机快照版本信息
[root@kvm01 ~]# virsh snapshot-current test01
(8)删除快照
[root@kvm01 ~]# virsh snapshot-delete test01 1503494464