KVM实战(一)
解决异构
KVM工作结构
虚拟化方式
硬件虚拟化 KVM XEN 软件虚拟化OPENVZ 容器虚拟化 docker
Байду номын сангаас
虚拟化方式
半虚拟化 就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API 可以将客户操作系统发出的指令进行最优化,即不需要Hypervisor耗费一定的资源进行翻 译操作,因此Hypervisor的工作负担变得非常的小,因此整体的性能也有很大的提高。 全虚拟化 完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层--Hypervisor,或者叫做 虚拟机管理程序(VMM)。hypervisor 可以划分为两大类。首先是类型 1,这种 hypervisor 是直接运行在物理硬件之上的。其次是类型 2,这种 hypervisor 运行在另一个操作系统 (运行在物理硬件之上)中。类型 1 hypervisor 的一个例子是基于内核的虚拟机(KVM — — 它本身是一个基于操作系统的 hypervisor)。类型 2 hypervisor 包括 QEMU 和 WINE。
Clone虚拟机
1、导出xml 2、copy 磁盘文件 virsh dumpxml kvm-demo > /etc/libvirt/qemu/kvm-2.xml cp /opt/kvm.raw /opt/kvm2.raw
3、修改xml文件 vim /etc/libvirt/qemu/kvm2.xml {name,uuid,source file,} 4、define xml define /etc/libvirt/qemu/kvm2.xml 5、virsh start kvm2
检查硬件支持情况
cat /etc/redhat-release egrep '(vmx|svm)' /proc/cpuinfo
安装软件包
yum install qemu-kvm rpm -ql qemu-kvm
安装管理工具
yum install qemu-kvm virt-manager python-virtinst qemu-kvm-tools 注centos7 的repo 没有 python-virtinst 需要单独下载安装
Raw与qcow2
Raw与qcow2区别
RAW 裸格式,简单,可用dd直接生成,速度最快 Qcow2 支持压缩、快照、加密、copy on wirte特性,性能接近raw vmdk vmare 专用,性能稳定,速度快。
创建qcow2虚拟机
virt-install --virt-type kvm --name k5 --ram 512 --cdrom=/opt/CentOS-6.5-x86_64-minimal.iso -network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --osvariant=rhel6 --disk path=/opt/k5.qcow2,format=qcow2 --vcpus=1 注:必须在 path后加上size,否则无法安装。 Size=8 参数为G,指定镜像大小,默认raw模式时生效,如果 没有镜像,会创建一个。 Format=qcow2 用qcow2文件必须指定此项目,否客虚拟机无法识别硬盘。
使用虚拟化的区别,优势
便于管理 节省空间
易于维护
快速部署
KVM是什么
一个linux的内核模块 只提供CPU和内存的虚拟化,通过/dev/kvm实现
工作层级
Qemu 是什么
硬件模拟器 运行于用户态 ring 3 当进行系统调用时产生上下文切换,调用内核态。
当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB, 等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。
创建qcow2镜像
方法1 virsh vol-create-as kvm_images.img 8G --format qcow2 方法2 qemu-img create -f qcow2 /opt/kvm.qcow2 10G
Libvirt 功能图
调用libvirt
快照管理
创建快照 qemu-img snapshot -c b1 /opt/k2.qcow2 qemu-i查看快照 qemu-img snapshot -l /opt/kvm.qcow2 恢复快照 qemu-img snapshot –a b1 /opt/k2.qcow2 注意:一个快照一个名字,不要使用相同的名字 qemu-img help 查看帮助 qemu-img snapshot –a 使用 –c 创建 -d 删除 –l 显示
硬盘扩容
增加硬盘 qemu-img resize kvm2.raw +1G (需要再验证,生产环境慎用) 只支持raw 查看xml变化
转换硬盘格式
1、qemu-img convert -c -f raw -O qcow2 kvm.raw kvm.qcow2 2、修改xml文件 vim etc/libvirt/qemu/kvm-demo.xml {driver name,source file} 3、修改xml,需要virsh edit xxx.xml 或是vim xxx.xml 然后define xxx.xml 4、检测文件块 qemu-img check /opt/kvm.qcow2 5、qemu-img info /opt/opt/kvm.qcow2
KVM实战课程
目标
了解KVM 操作KVM 掌握KVM 学以至用,提高生产力。
目录
一、介绍KVM
二、操作KVM
三、优化KVM 四、KVM管理
介绍KVM
介绍KVM
内核虚拟化技术 Kernel-based virtrual machine Redhat 6.0 之后集成到内核,之前为xen Redhat 收购kvm
通过修改xml文件调整内存
/etc/libvirt/qemu 改完需要重新定义
virsh define /etc/libvirt/qemu/kvm-demo.xml 修改xml,需要virsh edit xxx.xml 或是vim xxx.xml 然后define xxx.xml
安装客户系统
Ps ef |grep dns 通过VNC进入安装
Kvm存储池
默认位置 /var/lib/libvirt/images
查看存储
virsh pool-list –all
查看信息
virsh vol-list kvm_images 查看卷信息 virsh vol-info kvm.img kvm_images
创建存储池
1) 定义一个存储池 virsh pool-define-as kvm_images dir - - - - "/opt" 2) 查看创建的存储池信息 virsh pool-list --all 3) 建立基于文件夹的存储池 virsh pool-build kvm_images 4) 使存储池生效 virsh pool-start kvm_images 5) 存储池还不是自动运行,使用virsh pool-autostart virsh pool-autostart kvm_images 6) 验证存储池 virsh pool-info kvm_images
模块激活
cat /etc/sysconfig/modules/kvm.modules
lsmod|grep kvm
rpm -ql qemu-kvm kvm 是一个qemu进程
创建硬盘
qemu-img create -f raw /opt/kvm.raw 10G qemu-img info /opt/kvm.raw 查看硬盘信息 创建虚拟机,默认监听5900 /usr/libexec/qemu-kvm
UDEV问题
Centos6 使用udev 机制复制后会变更eth号 需要手工处理 方法1,手动变更配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 to eth1 方法2,变更udev文件 删除已生成的udev规则 rm -rf /etc/udev/rule.d/70-persistent-net.rules
Cd /etc/libvirt/qemu/ 查看配置文件 网卡文件 kvm.xml 文件介绍
Virsh管理虚拟机
Virsh –list all Virsh start kvm-name Dumpxml 导出xml文件 Destroy 停止 Start 开始 Define 定义一个xml Domid show id 注:删除一个虚拟机以后需重启libvirt会自动消失。
安装libvirt
yum install libvirt libvirt-python service libvirtd start
Libvirt功能图
创建kvm虚拟机
virt-install --virt-type kvm --name kvm-demo --ram 512 --cdrom=/opt/centos65_64m.iso -network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --osvariant=rhel6 --disk path=/opt/kvm.raw Ps –ef|grep kvm 查看kvm
Qemu
基于KVM的虚拟化技术
RHEV Oirt
openstack
webvirt