一:KVM基础
1.1:KVM 虚拟化技术简介
- Hypervisor: KVM 是一种 Type 1 Hypervisor,这意味着它直接运行在主机操作系统之上,没有其他操作系统层。这使得 KVM 能够提供更好的性能和安全性。
- Linux 内核: KVM 利用了 Linux 内核的虚拟化功能。一旦 KVM 被加载到内核中,它就成为了一个虚拟机监视器 (VMM),能够创建和管理虚拟机。
- Guest OS: 在 KVM 上运行的操作系统被称为 Guest OS。它可以是多种不同的操作系统,如 Linux、Windows 等。
1.2:KVM 的主要组成部分
- KVM 模块: 这是一个加载到 Linux 内核中的模块,提供了硬件虚拟化的接口。
- QEMU: QEMU 是一个通用的、开源的机器模拟器,它可以在没有 KVM 的情况下模拟硬件。当与 KVM 结合时,QEMU 利用 KVM 模块提供的加速功能,从而提高性能。
- Libvirt: 这是一个用于管理虚拟机的 API 层,它提供了一种抽象层,使得用户可以通过一组标准的命令来控制虚拟机,而无需直接与 KVM 或 QEMU 交互。
KVM三种工作模式
- 客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下
- 用户模式:用户执行I/O代码,QEMU运行在这个模式下
- 内核模式:CPU调度和内存管理相关
二:搭建KVM虚拟化平台
2.1:准备KVM虚拟化环境
(1)YUM 安装 KVM
yum -y install qemu-kvm kvm核心包–虚拟操作系统模拟器加速模块
yum -y install qemu-kvm-tools qemu-kvm的工具包
yum -y install virt-install 虚拟机安装工具
yum -y install qemu-img 是QEMU的磁盘管理工具
yum -y install bridge-utils 虚拟机与外界通信的命令管理工具
yum -y install libvirt 必须要装的核心工具
yum -y install virt-manager 虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)
yum -y install libguestfs-tools 用于访问虚拟机的磁盘映像文件提供的一组命令
QEMU是“Quick Emulator”的缩写,是一个用C语言编写的开源虚拟化软件。
QEMU(Quick Emulator)快速仿真器
(2)关机,设置CPU支持虚拟化,然后开机
(3)开机后验证
[root@kvm01 ~]# cat /proc/cpuinfo | grep vmx
[root@kvm01 ~]# lsmod | grep kvm
2.2:设置 KVM 网络
这里以 Bridge(桥接)为例进行操作演示
[root@kvm01 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm01 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@kvm01 ~]# vim ifcfg-ens33
.....
BRIDGE=br0 //在文件末尾添加
[root@kvm01 ~]# vim ifcfg-br0
TYPE=Bridge
.....
NAME=br0
DEVICE=br0
[root@kvm01 ~]# systemctl restart network
[root@kvm01 ~]# ifconfig
2.3:使用 KVM 命令集管理虚拟机
1:KVM 基本功能管理
(1)查看 KVM 的配置文件存放目录
[root@kvm01 ~]# ls /etc/libvirt/qemu/
(2)查看虚拟机状态
[root@kvm01 ~]# virsh list --all
(3)虚拟机关机与开机
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh start test01
(4)强制实例系统关闭电源
[root@kvm01 ~]# virsh destroy test01
(5)通过配置文件启动虚拟机系统实例
[root@kvm01 ~]# virsh create /etc/libvirt/qemu/test01.xml
[root@kvm01 ~]# virsh list --all
(6)挂起虚拟机
[root@kvm01 ~]# virsh suspend test01
[root@kvm01 ~]# virsh list --all
(7)恢复虚拟机
[root@kvm01 ~]# virsh resume test01
[root@kvm01 ~]# virsh list --all
(8)配置虚拟机实例伴随宿主机自动启动
[root@kvm01 ~]# virsh autostart test01
(9)导出虚拟机配置
[root@kvm01 ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml
(10)虚拟机的删除与添加
删除虚拟机。
[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@kvm01 qemu]# mv test02.xml test01.xml
重新定义虚拟机。
[root@kvm01 qemu]# virsh define test01.xml
查看虚拟机信息。
[root@kvm01 qemu]# virsh list --all
(11)修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)
直接通过 vim 命令修改。
[root@kvm01 ~]# vim /etc/libvirt/qemu/test01.xml
通过 virsh 命令修改。
[root@kvm01 ~]# virsh edit test01
2. KVM 文件管理
(1)查看当前磁盘格式
[root@kvm01 ~]# qemu-img info /data_kvm/store/test01.qcow2
(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
3. 虚拟机克隆
(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
4. 虚拟机快照
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