KVM三种工作模式
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下
用户模式:用户执行I/O代码,QEMU运行在这个模式下
内核模式:CPU调度和内存管理相关
QEMU(Quick EMUlator)是一个开源的通用模拟器和虚拟化软件,由Fabrice Bellard创建。 它允许在一个平台上运行一个或多个操作系统,这些操作系统与宿主机(运行QEMU的机器)的原生操作系统完全隔离。QEMU具有以下主要功能:
QEMU可以独立使用,也经常与其他虚拟化和模拟工具一起使用,如VirtualBox或VMware的用户界面,或者与libvirt这样的虚拟化管理库配合使用,以简化虚拟机的管理和操作。这使得QEMU在软件开发、测试、系统管理、教育和研究等领域有广泛应用
主机 |
. 操作系统 |
IP地址 |
主要软件 |
kvm01 |
CentOS 7.9 x86_64 |
192.168.10.108 |
KVM 虚拟机 |
kvm02 |
CentOS 7.9 x86_64 |
192.168.10.109 |
(1)安装 KVM。
(2)完成基本的 KVM 操作管理(创建、启动、停止等)。
(3)完成 KVM 命令行操作虚拟机。
(1)准备 KVM 装环境。
(2)安装 KVM。
(3)配置 KVM 桥接网络。
(4)创建 KVM 存储池并安装虚拟机。
(5)命令行操作虚拟机。
yum -y install qemu-kvm
yum -y install qemu-img
yum -y install bridge-utils
yum -y install qemu-kvm-tools
yum -y install virt-install
yum -y install libvirt
yum -y install virt-manager
yum -y install libguestfs-tools
备注:
qemu-kvm : kvm核心包–虚拟操作系统模拟器加速模块
qemu-img :是QEMU的磁盘管理工具
bridge-utils:虚拟机与外界通信的命令管理工具
qemu-kvm-tools :qemu-kvm的工具包
virt-install:虚拟机安装工具
libvirt:必须要装的核心工具
virt-manager:虚拟机图形管理工具(宿主机有桌面环境时可以考虑安装,命令操作或者远程控制则不需要)
libguestfs-tools:用于访问虚拟机的磁盘映像文件提供的一组命令
QEMU是“Quick Emulator”的缩写,是一个用C语言编写的开源虚拟化软件。
QEMU(Quick Emulator)快速仿真器
[root@localhost ~]# hostnamectl set-hostname kvm01
[root@localhost ~]# bash
[root@kvm01 ~]# vim /etc/hosts
192.168.10.201 kvm01
192.168.10.202 kvm02
[root@kvm01 ~]# systemctl stop firewalld
[root@kvm01 ~]# systemctl disable firewalld
[root@kvm01 ~]# setenforce 0
[root@kvm01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@kvm01 ~]# cat /proc/cpuinfo | grep vmx
[root@kvm01 ~]# lsmod | grep kvm
安装完成后还需要开启 libvirtd 服务,以开启相关支持。
[root@kvm01 ~]# systemctl start libvirtd
[root@kvm01 ~]# systemctl enable libvirtd
这里以 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
将分辨率修改为1024*768
备注:
在此处做个快照,为后面章节做好实验环境
在另一台kvm主机上重复以上操作,最后也做个快照
[root@kvm01 ~]# virt-manager
存储池的名称为:kgc
存储池的目录为:/data_kvm/store
在kgc的存储池中添加存储卷
存储卷名称为:test01
卷最大容量10G
[root@kvm01 ~]# virsh -h
[root@kvm01 ~]# ls /etc/libvirt/qemu/
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh shutdown test01
[root@kvm01 ~]# virsh start test01
[root@kvm01 ~]# virsh destroy test01
[root@kvm01 ~]# virsh create /etc/libvirt/qemu/test01.xml
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh suspend test01
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh resume test01
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh autostart test01
[root@kvm01 ~]# virsh dumpxml test01 > /etc/libvirt/qemu/test02.xml
删除虚拟机。
[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
直接通过 vim 命令修改。
[root@kvm01 ~]# vim /etc/libvirt/qemu/test01.xml
通过 virsh 命令修改。
[root@kvm01 ~]# virsh edit test01
[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
…… //省略部分内容
使用这个命令需要安装 libguestfs-tools-c 工具包。
[root@kvm01 ~]# virt-cat -a /data_kvm/store/test01.qcow2 /etc/sysconfig/grub
virt-edit 命令,用于编辑文件,用法与 vim 基本一致。
[root@kvm01 ~]# virt-edit -a /data_kvm/store/test01.qcow2 /etc/resolv.conf
virt-df 命令用于查看虚拟机磁盘信息。
[root@kvm01 ~]# virt-df -h test01
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
[root@kvm01 ~]# virsh list --all
[root@kvm01 ~]# virsh start test02
KVM 虚拟机要使用镜像功能,磁盘格式必须为 qcow2。下面介绍 KVM 虚拟机快照备
份的过程。
[root@kvm01 ~]# virsh snapshot-create test01
已生成域快照 1503494464
[root@kvm01 ~]# virsh snapshot-current test01
[root@kvm01 ~]# virsh snapshot-list test01
[root@kvm01 ~]# virsh snapshot-create test01
[root@kvm01 ~]# virsh snapshot-list test01
[root@kvm01 ~]# virsh snapshot-revert test01 1503494464
[root@kvm01 ~]# virsh snapshot-current test01
[root@kvm01 ~]# virsh snapshot-delete test01 1503494464