虚拟化分为寄居架构和原生架构
- 原生架构利用率较高
- 适合在生产环境中运行
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
setenforcevim /etc/sysconfig/selinuxSELINUX=disabled
虚拟机硬件配置
更改虚拟机设置,至少4G内存,四核,开启支持虚拟化
检查cpu和内存是否支持虚拟化
cat /proc/cpuinfo | grep vmx/vm vmx适用于Intel vm适用于amdlsmod | 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