一、基本概述
1.KVM原理
广义的KVM包含两部分,一部分是基于Linux内核支持KVM内核模块,另一部分是简化和修改Qemu。
KVM内核模块处理器和内存支持虚拟机运行,Qemu主要处理I/O为用户提供空间工具进行处理。
2.KVM三种工作模式
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下 (客户是虚拟机)
- 用户模式:qeum
- 内核模式:模拟cpu,内存
用户模式:用户执行I/O代码,QEMU运行在这个模式下,
- QEMU
- libkvm :通过iovtl进入内核
- Ioctl:输入输出控制器
- Fd:通过ioctl向设备驱动器(dev/kvm)创建,运行(虚拟机)操作。
内核模式:CPU调度和内存管理相关。
二、实验分析
1.准备 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:用于访问虚拟机的磁盘映像文件提供的一组命令
关机,设置CPU支持虚拟化,然后开机
[root@kvm01 ~]# cat /proc/cpuinfo | grep vmx (查看主机是否支持虚拟化技术)[root@kvm01 ~]# lsmod | grep kvm ( 内核模块是否支持)
安装完成后还需要开启 libvirtd 服务,以开启相关支持。
[root@kvm01 ~]# systemctl start libvirtd
[root@kvm01 ~]# systemctl enable libvirtd
2.设置KVM网络
[root@kvm01 ~]# cd /etc/sysconfig/network-scripts/
[root@kvm01 network-scripts]# cp ifcfg-ens33 ifcfg-br0
备注:
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
3.KVM 管理
[root@kvm01 ~]# virt-manager
(1)创建存储池
存储池的名称为:kgc
存储池的目录为:/data_kvm/store
(2)创建存储卷
在bdqn的存储池中添加存储卷
存储卷名称为:test01
卷最大容量10G
(3)将Linux系统的ISO文件拷贝到/opt目录下,并关闭存储设置
(4)在kvm01的主机上新建虚拟机,名称为test01
4.使用 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
5.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
6.虚拟机克隆
(1)查看虚拟机状态
[root@kvm01 ~]# virsh list --all
(2)从 test01 克隆 test02
[root@kvm01 ~]# virt-clone -o test01 -n test02 -f /data_kvm/store/test02.qcow2
-o 指定克隆名称
-n新的虚拟机
-f test02克隆的文件位置
(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
标签:虚拟化,部署,qemu,虚拟机,KVM,kvm01,virsh,test01,root From: https://blog.csdn.net/zheshijiuyue/article/details/140808489