虚拟化分为寄居架构和原生架构
- 原生架构利用率较高
- 适合在生产环境中运行
KVM组成
- KVM Driver(驱动器)
- 虚拟CPU运行
- 虚拟CPU寄存器读写
- 虚拟机内存分配
- 虚拟机创建
- QEMU(快速仿真器)
- 模拟PC硬件的用户空控件组件
- 提供I/O设备模型及访问外设的途径
KVM虚拟化的三种模式
客户模式(客户指你的虚拟机)
-
用户模式(qemu)
-
内核模式(模拟CPU、内存等硬件)
Linux用户模式
-
qemu
-
libkvm:通过ioctl进入内核
-
ioctl:输入输出控制器
-
fd:通过ioctl向设备驱动器(/dev/kvm)发送创建、运行(虚拟机)等操作
Linux内核模式
部署kvm
环境部署
//安装必须的环境
yum - y install qemu-kvm-tools virt-install libvirt virt-manager libguestfs-tools
//永久关闭防火墙和内核
systemctl stop firewalld
systemctl disable firewalld
setenforce
vim /etc/sysconfig/selinux
SELINUX=disabled
虚拟机硬件配置
更改虚拟机设置,至少4G内存,四核,开启支持虚拟化
检查cpu和内存是否支持虚拟化
cat /proc/cpuinfo | grep vmx/vm vmx适用于Intel vm适用于amd
lsmod | grep kvm
以上两条命令如果能查出内容则是支持
配置虚拟环境
复制物理网卡文件为ifcfg-br0
修改物理网卡文件,将物理网卡设置为桥接,之后物理网卡的IP地址相关信息失效
BRIDGE=br0
修改虚拟网卡
TYPE=Bridge、网卡名称等
重启network
创建虚拟主机
在终端输入virt-manager,打开下图
双击qemu/kvm,添加一个存储池,并在新建的存储池中新建卷
将CentOS7镜像文件传输到Linux主机下,右键qemu/kvm选择新建虚拟机,选择系统镜像文件位置,和存储位置(刚刚创建的新建卷),然后开始安装
libguestfs-tools和KVM基本命令
通过命令操作虚拟机
(KVM基本命令)
查看虚拟机状态
virsh list --all
关闭虚拟机
virsh shutdown test01
开启虚拟机
virsh shutdown test01
强制关机(不建议使用)
virsh destroy test01
通过配置文件启动虚拟机
virsh /etc/libvirt/qemu/test01.xml
挂起虚拟机
virsh suspend test01
恢复被挂起的虚拟机
virsh resume test01
设置虚拟机开机自启(随宿主机一起启动)
virsh autostart test01
备份虚拟机配置文件
virsh dumpxml test01>test02.xml
取消定义该虚拟机(不会删除磁盘镜像,仅删除配置文件),备份 恢复后需要用配置文件来启动虚拟机,或者使用定义虚拟机命令
virsh undefine test
重新定义虚拟机
virsh define test01.xml
(libguestfs-tools提供的命令)
查看虚拟机的存储文件格式(因为下列命令要求文件格式为qcow2)
qemu-img info /data_kvm/store/test01.qcow2
查看指定虚拟机磁盘文件的内容(需要文件格式为qcow2)
virt-cat -a /data_kvm/store/test01.qcow2 /etc/hosts
修改指定虚拟机磁盘文件的内容(需要文件格式为qcow2)
virt-edit -a /data_kvm/store/test01.qcow2 /etc/hosts
查看指定虚拟机的挂载信息
virt-df test01
克隆虚拟机
virt-clone -o test01 -n test02 -f /data_kvm/store/test02/qcow2
(KVM基本命令)
创建快照(会生成一个快照标识id)
virsh snapshot-create test01
查看快照列表
virsh snapshot-list test01
查看快照版本信息
virsh snapshot-current test01
恢复快照
virsh snapshot-revert test01 快照标识id
删除快照
virsh snapshot-delete test01 快照标识id