KVM虚拟机安装-配置-管理-快照-迁移
虚拟机迁移技术手册
虚拟机迁移技术手册随着云计算和虚拟化技术的快速发展,虚拟机迁移技术成为了云平台中不可或缺的一部分。
本手册将详细介绍虚拟机迁移技术的原理、分类以及常用的迁移方法,帮助读者了解并掌握这一重要的技术。
第一章:虚拟机迁移技术概述1.1 虚拟化技术的基本原理1.2 虚拟机迁移的定义和意义1.3 虚拟机迁移的分类第二章:虚拟机迁移技术的原理2.1 内存迁移技术- 传统内存迁移- 基于页面传输的内存迁移- 基于页面共享的内存迁移2.2 存储迁移技术- 块设备迁移- 文件系统迁移- 存储快照迁移2.3 网络迁移技术- 虚拟网络迁移- IP 迁移- MAC 地址迁移第三章:常用的虚拟机迁移方法3.1 预复制迁移- 基于全内存预复制的迁移方法- 基于增量复制的迁移方法3.2 停机迁移3.3 运行迁移- 迁移前暂停和迁移后恢复- 迁移过程中实时同步- 无状态迁移第四章:虚拟机迁移的优化与挑战4.1 虚拟机迁移的性能优化- 基于 QEMU/KVM 的迁移性能优化 - 基于 Xen 的迁移性能优化- 基于 VMware 的迁移性能优化- 数据完整性保护- 访问控制与认证- 迁移过程的安全性保护第五章:虚拟机迁移技术在云计算中的应用5.1 虚拟机负载均衡- 基于负载预测的负载均衡- 基于资源监控的负载均衡- 基于任务调度的负载均衡5.2 可用性与容错- 灾备性迁移- 容错性迁移5.3 数据中心的动态资源管理- 能源管理- 性能管理- 故障容错管理第六章:虚拟机迁移技术的挑战与未来发展6.2 迁移过程中的数据一致性保证6.3 多层次异构云平台的迁移问题6.4 虚拟机迁移技术在容器技术中的应用6.5 未来虚拟机迁移技术的研究方向结语:本手册从虚拟机迁移技术的基本概念和原理出发,详细介绍了虚拟机迁移的分类、常用方法以及技术挑战。
虚拟机迁移技术在云计算中扮演着重要的角色,对于提高云平台的可用性、灵活性和性能优化具有重要意义。
未来随着云计算和容器技术的发展,虚拟机迁移技术也将不断演进和创新,为云计算领域带来更多的可能性。
linux下配置和安装KVM虚拟机的步骤
linux下配置和安装KVM虚拟机的步骤最近要在外⽹搞⼀套监控系统,正好有⼀台服务器配置⽐较⾼,也没跑什么重要的业务,就拿来划了⼀个KVM虚拟机,可能是平时各种虚拟机⽤的⽐较多,配置起来感觉⽐想象中简单的多,简单记录下过程准备⼯作宿主机为centos 6.8 64位,检查宿主机CPU是否⽀持虚拟化:cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l;结果⼤于0表⽰⽀持安装kvmKVM核⼼软件包:复制代码代码如下:yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils如果服务器上有桌⾯环境,想使⽤图形界⾯管理器virt-manager,可以安装完整的KVM环境:复制代码代码如下:yum groupinstall Virtualization 'Virtualization Client' 'Virtualization Platform' 'Virtualization Tools'验证内核模块是否加载:lsmod | grep kvm启动虚拟机管理接⼝服务:/etc/init.d/libvirtd start设置开机启动:chkconfig libvirtd on启动libvirtd后,会⾃动创建了⼀个⽹卡,并启动dnsmasq服务,⽤来为虚拟机分配IP地址创建虚拟机下载虚拟机要安装的ISO系统镜像⽂件,之后需创建存储池,指定在宿主机上虚拟机磁盘的存储位置,创建存储⽬录:mkdir -p /opt/kvm定义⼀个储存池和绑定⽬录:virsh pool-define-as vmspool --type dir --target /opt/kvm建⽴并激活存储池:virsh pool-build vmspoolvirsh pool-start vmspool使⽤存储池创建虚拟机,并通过vnc连接:virt-install \--hvm \ #全虚拟化--name=zabbix \#虚拟机名字--ram=4096 \ #分配内存--vcpus=4 \ #分配CPU数--cdrom=/opt/kvm/iso/CentOS-7-x86_64-DVD-1511.iso \ #使⽤的ISO--virt-type=kvm \ #虚拟机类型--disk path=/opt/kvm/zabbix.qcow2,device=disk,format=qcow2,bus=virtio,cache=writeback,size=100 \ #磁盘⼤⼩,格式--network netwrok=default \ #⽹络设置,defalut为NAT模式--accelerate \ #KVM内核加速--graphics vnc,listen=0.0.0.0,port=5922,password=123123\ #vnc配置--force \--autostart之后使⽤vnc客户端连接宿主机IP:5922,即可使⽤图形安装系统;也可以选择nographics模式,⽆需vnc在命令⾏下安装,建议使⽤vnc安装完成后会⽣成:虚拟机的配置⽂件:/etc/libvirt/qemu/zabbix.xml虚拟硬盘⽂件:/opt/kvm/zabbix.qcow2NAT⽹络配置⽂件:/etc/libvirt/qemu/networks/default.xml配置⽹络KVM可以配置两种:NAT⽹络: 虚拟机使⽤宿主机的⽹络访问公⽹,宿主机和虚拟机能互相访问,但不⽀持外部访问虚拟机桥接⽹络:虚拟机复⽤宿主机物理⽹卡,虚拟机与宿主机在⽹络中⾓⾊完全相同,⽀持外部访问配置NAT⽹络默认会有⼀个叫default的NAT虚拟⽹络,查看NAT⽹络:virsh net-list --all如果要创建或者修改NAT⽹络,要先编辑default.xml:virsh net-edit default重新加载和激活配置:virsh net-define /etc/libvirt/qemu/networks/default.xml启动NAT⽹络:virsh net-start defaultvirsh net-autostart default启动NAT后会⾃动⽣成⼀个虚拟桥接设备virbr0,并分配IP地址,查看状态:brctl show正常情况下libirtd启动后就会启动virbr0,并⾃动添加IPtables规则来实现NAT,要保证打开ip_forward,在/etc/sysctl.conf中:net.ipv4.ip_forward = 1sysctl -p启动虚机并设置⾃动获取IP即可,如果想⼿动指定虚拟机IP,要注意配置的IP需在NAT⽹段内配置桥接⽹络系统如果安装了桌⾯环境,⽹络会由NetworkManager进⾏管理,NetworkManager不⽀持桥接,需要关闭NetworkManger:chkconfig NetworkManager offchkconfig network onservice NetworkManager stopservice network start不想关闭NetworkManager,也可以在ifcfg-br0中⼿动添加参数"NM_CONTROLLED=no"创建⽹桥:virsh iface-bridge eth0 br0创建完后ifconfig会看到br0⽹桥,如果eth0上有多个IP,更改下相应的⽂件名,如:ifcfg-eth0:1改为ifcfg-br0:1编辑虚拟机的配置⽂件,使⽤新的⽹桥:virsh edit zabbix找到⽹卡配置,改为:<interface type='bridge'><mac address='52:54:00:7a:f4:9b'/><source bridge='br0'/><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface>我是⽤的br0,为虚拟机添加多块⽹卡只需复制多个interface,并确保mac address和PCI地址不同即可重新加载配置:virsh define /etc/libvirt/qemu/zabbix.xml重启虚拟机:virsh shutdown zabbixvirsh start zabbix之后使⽤VNC连接虚拟机并设置下⽹络即可常⽤操作KVM相关操作都通过vish命令完成,参数虽然多,但是功能⼀⽬了然,很直观创建虚拟机快照:virsh snapshot-create-as --domain zabbix --name init_snap_1也可以简写成:virsh snapshot-create-as zabbix init_snap_1快照创建后配置⽂件在/var/lib/libvirt/qemu/snapshot/zabbix/init_snap_1.xml查看快照:snapshot-list zabbix删除快照:snapshot-delete zabbix init_snap_1排错1、ERROR Format cannot be specified for unmanaged storage.virt-manager 没有找到存储池,创建储存池即可2、KVM VNC客户端连接闪退使⽤real vnc或者其它vnc客户端连接kvm闪退,把客户端设置中的ColourLevel值设置为rgb222或full即可3、virsh shutdown ⽆法关闭虚拟机使⽤该命令关闭虚拟机时,KVM是向虚拟机发送⼀个ACPI的指令,需要虚拟机安装acpid服务:yum -y install acpid && /etc/init.d/acpid start否则只能使⽤virsh destroy 强制关闭虚拟机以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
kvm虚拟化完整教程
Centos7安装kvm虚拟机(centos6也可以)1.本教程以vmware虚拟机为例子,在其中的centos7虚拟机上安装kvm虚拟机首先开启虚拟化模块2.安装qemu-kvm 、libvirtyum install-y qemu-kvm libvirt,其中qemu-kvm用来创建虚拟机硬盘,libvirt 用来管理虚拟机qemu下载地址:https:///(多种版本)3.安装virt-install,yum -y install virt-install(virt-install用来创建虚拟机)4.启动libvirtd并且设置开机自启动,systemctl start libvirtd 、systemctl enable libvirtd5.创建虚拟机硬盘,(使用qemu来创建一个虚拟机硬盘,大小可以自定义),qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G,硬盘名称为CentOS-7-x86_64.raw,硬盘大小为10G6.也可以用qcow2格式,此格式支持快照但是速度没有raw的快,命令方式类似,qemu-img create -f qcow2 /opt/centos.qcow2 10G7.在根目录下创建一个文件夹iso,将centos7的镜像上传到此目录下8.利用virt-install 创建一个名称为CentOS-7-x86_64的虚拟机,内存为10249.virt-install --virt-type kvm --name=centos --ram 1024 --vcpus=16 --cdrom=/iso/centos.iso --disk path=/data2/centos.raw --network bridge=br0 --graphics vnc,listen=0.0.0.0,port=5988, --force--autostart10.如果启动报错:ERROR internal error: process exited while connecting to monitor: 2019-05-10T17:10:20.075431Z qemu-kvm: -drivefile=/root/window.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=o n: could not open disk image /root/window.iso: Could not open'/root/window.iso': Permission deniedDomain installation does not appear to have been successful.If it was, you can restart your domain by running:virsh --connect qemu:///system start windowsotherwise, please restart your installation.表示权限不足可以编辑配置文件 vi /etc/libvirtd/qemu.conf文件取消#user=”root” #group=”root”注释然后重启libvirtd systemctl restart libvirtd11.其中--name表示名称,ram表示内存为1024M,--vcpus表示cpu核数,cdrom 表示镜像所在目录,disk表示创建的虚拟机硬盘位置,port指定哪个端口安装时通过vnc连接就用哪个端口连接,安装多台机器时可以指定不同的端口然后来分别安装不同的操作系统,--graphics表示指定图形界面工具表示安装成功12.接下来通过vnc来连接虚拟机进行安装,地址为宿主机地址,端口为5988(防火墙提前开放端口)如果报错提示如下:修改成rgb222连接即可13.然后开始正常的系统安装过程,不在赘述14.安装成功后可以通过命令virsh list --all上述表示虚拟机是关闭状态开启kvm虚拟机命令virsh start CentOS-7-x86_64,关闭虚拟机命令为virsh shutdown CentOS-7-x86_64 重启为virsh reboot CentOS-7-x86_64有的时候virsh shutdown 命令不能关闭虚拟机,此时要在虚拟机(不是宿主)内安装acpid软件并设置开机自启动,然后就可以执行shutdown|reboot来关闭和重启了了yum -y install acpidservice acpid startchkconfig acpid on如果想连接此虚拟机还是要通过vnc来连接登陆安装net-tools 安装后才可以执行ifconfig命令ip地址走的是宿主机的虚拟网卡virbr0,宿主机网卡如下:上图中的虚拟机默认的是nat模式,内部的虚拟机可以访问外部网络,但是外部网络无法访问内部的虚拟机(xshell无法连接),可以通过配置成桥接的方式来实现xshell连接内部虚拟机15.配置桥接网络:系统如果安装了桌面环境,网络由NetworkManager来管理,它不支持桥接网络,所以需要先关闭NetworkManager,一定要关闭,否则容易报错,配置完桥接后还要启动NetworkManager要不桌面无法使用,是黑屏状态。
Ubuntu1804安装KVM
Ubuntu1804安装KVMUbuntu1804 安装 KVMKVM(Kernel-based Virtual Machine,基于内核的虚拟机)是⾯向 Linux 系统的开源虚拟化解决⽅案,KVM 使⽤ Intel VT 或 AMD-V 等虚拟化扩展提供虚拟化功能。
当我们在Linux 机器上安装 KVM 时,它都会通过加载(基于 Intel 的 kvm-intel.ko 或基于 AMD 的 kvm-amd.ko)内核模块将其转换为 Hypervisor。
KVM 允许我们安装和运⾏(基于 Windows 和 Linux的)多个虚拟机,并通过 virt-manager 图形⽤户界⾯或 virt-install&virsh cli 命令创建和管理基于 KVM 的虚拟机。
每⼀个客户虚拟机都拥有⾃⼰的操作系统和专⽤的虚拟硬件,例如 CPU(s), 内存, ⽹络接⼝和存储。
KVM 本⾝不执⾏任何硬件模拟,需要⽤户空间程序通过 /dev/kvm 接⼝设置⼀个客户机虚拟服务器的地址空间,向它提供模拟 I/O,并将它的视频显⽰映射回宿主的显⽰屏。
⽬前这个应⽤程序是 QEMU。
Linux 上的⽤户空间、内核空间和虚机:Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、⽹卡、I/O 设备驱动等),被 KVM 置于⼀种受限制的 CPU 模式下运⾏。
KVM:运⾏在内核空间,提供 CPU 和内存的虚级化,以及客户机的 I/O 拦截。
Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。
QEMU:修改过的被 KVM 虚机使⽤的 QEMU 代码,运⾏在⽤户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设备和 KVM 交互。
KVM 是实现拦截虚机的 I/O 请求的原理:现代 CPU 本⾝实现了对特殊指令的截获和重定向的硬件⽀持,甚⾄新硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化从⽽提⾼性能。
kvm中虚拟机快照命令参数
kvm中虚拟机快照命令参数KVM中虚拟机快照命令参数虚拟机快照是KVM虚拟化技术中的一项重要功能,它可以帮助管理员在虚拟机运行过程中保存当前状态,以便在需要的时候可以快速恢复到该状态。
KVM提供了一系列命令参数来管理虚拟机快照,本文将介绍并解释这些命令参数的用途和作用。
1. 创建快照:`virsh snapshot-create-as`创建快照是指在虚拟机运行过程中,管理员可以使用该命令参数创建一个快照,保存当前虚拟机的状态。
创建快照时可以指定名称、描述和是否冻结虚拟机等参数。
创建快照后,虚拟机将继续正常运行。
2. 查看快照:`virsh snapshot-list`查看快照是指管理员可以使用该命令参数查看当前虚拟机存在的快照列表。
列表中将显示每个快照的名称、创建时间和描述等信息,以便管理员可以清晰地了解虚拟机的快照状态。
3. 恢复快照:`virsh snapshot-revert`恢复快照是指管理员可以使用该命令参数将虚拟机恢复到指定的快照状态。
恢复快照后,虚拟机将回到该快照创建时的状态,并继续运行。
恢复快照时可以选择是否冻结虚拟机。
4. 删除快照:`virsh snapshot-delete`删除快照是指管理员可以使用该命令参数删除指定的快照。
删除快照后,该快照将不再存在,虚拟机将无法恢复到该快照创建时的状态。
删除快照时可以选择是否删除相关的磁盘镜像文件。
5. 合并快照:`virsh snapshot-merge`合并快照是指管理员可以使用该命令参数将当前虚拟机状态与指定快照之间的差异进行合并,以减少虚拟机磁盘空间的占用。
合并快照时需要指定要合并的快照名称。
6. 回滚快照:`virsh snapshot-rollback`回滚快照是指管理员可以使用该命令参数将虚拟机恢复到指定快照的状态,并删除该快照之后创建的所有快照。
回滚快照将丢弃所有后续快照的更改,只保留指定快照之前的状态。
7. 导出快照:`virsh snapshot-dumpxml`导出快照是指管理员可以使用该命令参数将指定快照的配置信息以XML格式导出到文件中。
Centos7的KVM安装配置详解
Centos7的KVM安装配置详解KVM和虚拟化虚拟化有⼏种类型:完全虚拟化(Full virtualization), 虚机使⽤原始版本的操作系统, 直接与CPU通信, 是速度最快的虚拟化.半虚拟化(Paravirtualization), 虚机使⽤修改过的操作系统, 与hypervisor通信, hypervisor不修改请求, 直接转发给CPU和其他接⼝.软件虚拟化(Software virtualization), 使⽤模拟器运⾏原始版本的操作系统. hypervisor将虚机请求翻译为宿主系统可以理解的格式. ⽐半虚拟化更慢.容器化(Containerization). 与KVM虚拟化创建⼀个单独的内核实例不同, 容器化直接在现有的内核实例上创建互相隔离的容器环境. 容器在适⽤性上不如KVM 虚拟化, 但是更加轻量与灵活.关于KVMKVM (Kernel-based Virtual Machine) 属于完全虚拟化在内核中内置了KVM与QEMU (Quick Emulator) 集成libvirt API ⽤于管理KVMvirt-manager和virsh是libvirt提供的管理⼯具使⽤virsh edit guestname修改虚机配置⽽不是直接编辑虚机xml⽂件. 如果直接编辑虚机xml⽂件, 容易导致修改被覆盖. 通过virsh edit修改完配置后, 需要保存xml⽂件并重启虚机才能⽣效.KVM模拟的⽹络设备e1000 设备模拟 Intel E1000 network adapter (Intel 82540EM, 82573L, 82544GC).rtl8139 设备模拟 Realtek 8139 network adapter.Centos KVM环境硬件环境CPU需要⽀持虚拟化主板需要⽀持VT-x, 最好⽀持VT-dVT-x: 运⾏64bit Guest OS基本指令VT-d: 虚拟机可以直接针对硬件设备做存取,由北桥晶⽚来⽀援及BIOS来开启VT-c: 以Network为主, 要由I/O装置来⽀援, 包含Virtual Machine Direct Connect 及 Virtual Machine Device Queues两项技术, 前者使⽤了SR-IOV(Single Root I/O Virtualization).系统环境总核数 = 物理CPU个数 X 每颗物理CPU的核数总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq# 查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l# 查看物理机的cpu是否⽀持虚拟化, 找到flags部分,如果其中输出有VMX或SVM,即表明⽀持虚拟化技术。
KVM集中管理解决方案
KVM集中管理解决方案KVM(kernel-based virtual machine)是一种基于Linux内核的虚拟化技术,它可以将一台物理主机划分为多个虚拟机,并在每个虚拟机中运行独立的操作系统。
KVM虚拟化技术的主要优势之一是其能够提供高性能和低延迟的虚拟化环境。
然而,对于大规模的KVM部署来说,有效地管理和监控虚拟机变得非常重要。
因此,为了解决这个问题,可以采用一些KVM集中管理解决方案。
1. oVirt:oVirt是一个开源的虚拟化管理平台,它提供了对KVM虚拟机进行集中管理的功能。
oVirt提供了一个基于Web的管理界面,允许管理员轻松地创建和配置虚拟机、存储和网络资源。
此外,oVirt还提供了高级功能,如虚拟机迁移、负载均衡和自动化任务等。
2. Proxmox VE:Proxmox VE是一个基于KVM和LXC的虚拟化管理平台,它提供了一个易于使用的Web界面,用于管理和监控KVM虚拟机。
Proxmox VE支持高可用性集群、存储集成和备份/恢复功能,使管理员能够轻松地管理大规模的KVM虚拟化环境。
3. Kimchi:Kimchi是一个简单而轻量级的虚拟化管理工具,它专为管理KVM虚拟机而设计。
Kimchi提供了一个基于Web的用户界面,允许管理员远程管理和监控KVM虚拟机。
它还支持虚拟机的创建、删除、启动和停止等操作。
4. Virt-Manager:Virt-Manager是一个基于GTK+的图形化管理工具,用于管理KVM虚拟机。
Virt-Manager提供了一个用户友好的界面,允许管理员对虚拟机进行创建、配置和监控。
此外,Virt-Manager还支持虚拟机的迁移、快照和克隆等操作。
以上这些KVM集中管理解决方案都提供了一种简单而有效的方式来管理和监控大规模的KVM虚拟机环境。
无论您是一个小型企业还是一个大型数据中心,这些解决方案都可以帮助您更好地利用和管理KVM虚拟化技术。
根据您的需求和预算,您可以选择适合您的解决方案,并开始构建一个高性能、可靠和易于管理的虚拟化环境。
KVM 介绍(2):CPU 和内存虚拟化
学习KVM 的系列文章:(1)介绍和安装(2)CPU 和内存虚拟化(3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton)(4)I/O PCI/PCIe设备直接分配和SR-IOV(5)libvirt 介绍(6)Nova 通过libvirt 管理QEMU/KVM 虚机(7)快照(snapshot)(8)迁移(migration)1. 为什么需要CPU 虚拟化X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。
x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。
Ring 是指CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之……就Linux+x86 来说,操作系统(内核)需要直接访问硬件和内存,因此它的代码需要运行在最高运行级别 Ring0上,这样它可以使用特权指令,控制中断、修改页表、访问设备等等。
应用程序的代码运行在最低运行级别上ring3上,不能做受控操作。
如果要做,比如要访问磁盘,写文件,那就要通过执行系统调用(函数),执行系统调用的时候,CPU的运行级别会发生从ring3到ring0的切换,并跳转到系统调用对应的内核代码位置执行,这样内核就为你完成了设备访问,完成之后再从ring0返回ring3。
这个过程也称作用户态和内核态的切换。
那么,虚拟化在这里就遇到了一个难题,因为宿主操作系统是工作在ring0 的,客户操作系统就不能也在ring0 了,但是它不知道这一点,以前执行什么指令,现在还是执行什么指令,但是没有执行权限是会出错的。
所以这时候虚拟机管理程序(VMM)需要避免这件事情发生。
虚机怎么通过VMM 实现Guest CPU 对硬件的访问,根据其原理不同有三种实现技术:1. 全虚拟化2. 半虚拟化3. 硬件辅助的虚拟化1.1 基于二进制翻译的全虚拟化(Full Virtualization with Binary Translation)客户操作系统运行在 Ring 1,它在执行特权指令时,会触发异常(CPU的机制,没权限的指令会触发异常),然后VMM 捕获这个异常,在异常里面做翻译,模拟,最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。
KVM虚拟机的常用操作命令整理
KVM虚拟机的常⽤操作命令整理1,创建虚拟机复制代码代码如下:[root@localhost ~]# virt-install --name=centos1 \ #⽣成⼀个虚拟机--ram 1024 --vcpus=1 \--disk path=/root/centos1.img,size=10 \--accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \--graphics vnc,port=5921 --network bridge=br02,virsh的其他操作复制代码代码如下:[root@localhost /]# virsh start centos1 #启动虚拟机[root@localhost /]# virt-viewer centos1 #如果有图形界⾯的话,可以进⼊虚拟机的界⾯[root@localhost ~]# virsh shutdown centos1 #关闭虚拟机[root@localhost /]# virsh reboot centos1 #重启虚拟机[root@localhost /]# virsh suspend centos1 #暂停虚拟机[root@localhost /]# virsh resume centos1 #恢复虚拟机[root@localhost /]# virsh autostart centos1 #⾃动加载虚拟机virsh参数如下:autostart #⾃动加载指定的⼀个虚拟机connect #重新连接到hypervisorconsole #连接到客户会话create #从⼀个SML⽂件创建⼀个虚拟机start #开始⼀个⾮活跃的虚拟机destroy #删除⼀个虚拟机define #从⼀个XML⽂件定义⼀个虚拟机domid #把⼀个虚拟机名或UUID转换为IDdomuuid #把⼀个郁闷或ID转换为UUIDdominfo #查看虚拟机信息domstate #查看虚拟机状态domblkstat #获取虚拟机设备快状态domifstat #获取虚拟机⽹络接⼝状态dumpxml #XML中的虚拟机信息edit #编辑某个虚拟机的XML⽂件list #列出虚拟机migrate #将虚拟机迁移到另⼀台主机quit #退出⾮交互式终端reboot #重新启动⼀个虚拟机resume #重新恢复⼀个虚拟机save #把⼀个虚拟机的状态保存到⼀个⽂件dump #把⼀个虚拟机的内核dump到⼀个⽂件中以⽅便分析shutdown #关闭⼀个虚拟机setmem #改变内存的分配setmaxmem #改变最⼤内存限制值suspend #挂起⼀个虚拟机vcpuinfo #虚拟机的cpu信息version #显⽰virsh版本3,virt-clone,如果我们要建⼏个⼀样的虚拟机,这个命令,⾮常有⽤复制代码代码如下:# virt-clone --connect=qemu:///system -o centos1 -n centos3 -f /root/centos3.img #克隆centos1正在克隆 centos1.img | 10.0 GB 00:07Clone 'centos3' created successfully.libguestfs-tools是虚拟机⼀个管理包,很有⽤的⼯具[root@localhost ~]# yum -y install libguestfs-tools #安装⼯具包4,未登录的情况下,查看镜像⽬录复制代码代码如下:[root@localhost ~]# virt-ls centos.img /home #查看centos.img镜像⽂件中/home⽬录tank5,未登录的情况下,将镜像⽂件中的⽂件copy出来复制代码代码如下:[root@localhost ~]# virsh list --all #查看所有的虚拟机名称Id 名称状态----------------------------------------------------1 centos1 running2 centos6.5 running- arch 关闭- arch1 关闭- arch2 关闭- arch3 关闭- arch5 关闭- centos3 关闭- ubuntu 关闭- ubuntu1 关闭[root@localhost ~]# virt-copy-out -d centos1 /etc/passwd /tmp #将centos1中的⽂件copy到tmp下⾯6,查看虚拟机的分区情况复制代码代码如下:[root@localhost ~]# virt-filesystems -d centos1/dev/sda1/dev/VolGroup/lv_root[root@localhost ~]# virt-list-partitions /root/centos.img/dev/sda1/dev/sda2[root@localhost ~]# virt-df centos.imgFilesystem 1K-blocks Used Available Use%centos.img:/dev/sda1 495844 34510 435734 7%centos.img:/dev/VolGroup/lv_root 8780808 2842056 5492700 33%7,mount虚拟机复制代码代码如下:[root@localhost ~]# guestmount -a /root/centos.img -m /dev/VolGroup/lv_root --rw /mnt/usb[root@localhost ~]# cd /mnt/usb/[root@localhost usb]# lsbin dev home lib64 media mnt opt root selinux sys usrboot etc lib lost+found misc net proc sbin srv tmp var8,修改kvm中虚拟机的内存⼤⼩复制代码代码如下:[root@nfs ~]# virsh edit vm01 ##注意vi直接编辑不⽣效vm01df8604c1-dcf3-fa98-420f-6eea7b39c3951048576 ###本来开始设置为1G,现在这个单位是k1048576修改为1.5G复制代码代码如下:[root@nfs ~]# expr 1536 \* 10241572864</p> <p>[root@nfs ~]# virsh listId Name State----------------------------------1 win2003 running3 vm01 running</p> <p>[root@nfs ~]# virsh shutdown vm01 ###修改配置⽂件后需要重新启动下虚拟机,先关闭它Domain vm01 is being shutdown</p> <p>[root@nfs ~]# virsh list ###确认已经被关闭Id Name State----------------------------------1 win2003 running</p> <p>[root@nfs ~]# virsh start vm01 ###启动它Domain vm01 started</p> <p>[root@nfs ~]# virsh listId Name State----------------------------------1 win2003 running3 vm01 running到机器上查看内存⼤⼩:复制代码代码如下:[root@vm01 liuxiaojie]# free -mtotal used free shared buffers cachedMem: 1505 618 886 0 29 361-/+ buffers/cache: 227 1277Swap: 2000 0 20009,删除⼀个虚拟机(vm01)复制代码代码如下:[root@nfs qemu]# virsh undefine vm01[root@nfs qemu]# rm -f /home/data/vm01.img10,删除⼀个域复制代码代码如下:[root@nfs web01]# virsh list --allId Name State----------------------------------1 web01 running ##处于⼯作状态- myweb01 shut off- myweb03 shut off- mywin2003 shut off- myxp shut off- xp shut off复制代码代码如下:[root@nfs web01]# virsh undefine web01 ##处于⼯作状态也能删除!Domain web01 has been undefined复制代码代码如下:[root@nfs web01]# virsh listId Name State----------------------------------1 web01 running复制代码代码如下:[root@nfs web01]# virsh destroy web01Domain web01 destroyed复制代码代码如下:[root@nfs web01]# virsh list --all ##web01已经没有了!Id Name State----------------------------------- myweb01 shut off- myweb03 shut off- mywin2003 shut off- myxp shut off- xp shut off复制代码代码如下:[root@nfs web01]# virsh define web01error: Failed to open file 'web01': No such file or directory。
KVM虚拟化(一)——介绍与简单使用
KVM虚拟化(⼀)——介绍与简单使⽤⼀、架构及介绍 KVM(Kernel-based Virtual Machine)它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购; ⾃Linux 2.6.20后整合到内核,该内核模块使得 Linux 变成了⼀个 Hypervisor层; 它依托于CPU虚拟化指令集,性能、安全性、兼容性、稳定性表现很好,每个虚拟化操作系统表现为单个系统进程,与Linux安全模块selinux安全模块很好结合; 官⽅⽹站为⼆、KVM的安装(1)安装之前要查看CPU是否⽀持虚拟化,以下命令有输出就代表⽀持虚拟化;如果确定cpu可以⽀持虚拟化,但以上命令没有输出结果,就进⼊bash加载虚拟化1 Intel CPU:2 [root@localhost ~ ]#cat /proc/cpuinfo | grep vmx3 AMD CPU:4 [root@localhost ~ ]#cat /proc/cpuinfo | grep smv5 [root@localhost ~ ]# modprobe kvm #加载kvm模块(2)安装⽅法⽅法⼀:在安装系统的时候,选择桌⾯安装,然后选择虚拟化选项⽅法⼆:在已有系统基础上,安装KVM所需软件。
必安包:qemu-kvm.x86_64 //KVM模块qemu-img.x86_64 //qemu组件,创建磁盘、启动虚拟机等可选⼯具包:yum -y groupinstall "Desktop" //安装GNOME桌⾯环境virt-manager //图形界⾯管理虚拟机⼯具libvirt //图形化虚拟机管理⼯具python-virtinst.noarch //python组件,记录创建VM时的xml⽂件bridge-util.x86.64 //⽹络⽀持⼯具,桥接功能模块libguestfs-tools //⽂件管理⼯具acpid //virsh命令依赖的服务,需要开机启动的,他是⼀个服务,不是⼯具包(3)验证安装结果[root@localhost ~ ]# lsmod | grep kvmkvm_intel 54285 0kvm 333172 1 kvm_intel三、KVM⽹络1、KVM虚拟机⽹络介绍 在libvirt中运⾏KVM⽹络有两种⽅法:NAT和Bridge,默认是NAT(1)NAT模式:即⽤户模式,可以访问外⽹,但是⽆法从外部访问虚拟机⽹络。
KVM安装步骤及基本操作
一、查看cpu是否支持kvmKVM 需要有CPU 的支持(Intel vmx 或AMD svm),在安装KVM 之前检查一下CPU 是否提供了虚拟技术的支持:egrep '(vmx|svm)' --color=always /proc/cpuinfo如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。
二、BIOS中开启Virtual Technolege在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术),不同主板所在菜单不同例如:华硕主板开启虚拟化Intel主板开启虚拟化三、安装KVM服务器安装KVM 虚拟机和安装其他服务器一样,在选择操作系统类型是选择“Virtual Host”即可,其它步骤可参考“AiSchool平台安装指导”中操作系统安装部分。
如果使用此服务器管理其他KVM 主机,需要额外安装openssh-askpass 软件包。
注:(已安装好的操作系统,里面有重要资料无法重新安装的可以在已有的系统上安装如下软件包yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst openssh-askpass或者如下图,安装需要的组四、检查kvm模块是否安装使用以下命令显示两个模块则表示安装完成[root@vm76 ~]# lsmod | grep kvmkvm_intel 54285 0kvm 333172 1 kvm_intel以上表明安装完成五、配置宿主机1、关闭防火墙(如不用)chkconfig iptables offservice iptables stop2、执行如下命令打开文件selinux配置文件。
KVM 介绍(5):libvirt 介绍
学习KVM 的系列文章:(1)介绍和安装(2)CPU 和内存虚拟化(3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton)(4)I/O PCI/PCIe设备直接分配和SR-IOV(5)libvirt 介绍(6)Nova 通过libvirt 管理QEMU/KVM 虚机(7)快照(snapshot)(8)迁移(migration)1. Libvirt 是什么为什么需要Libvirt?Hypervisor 比如qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用。
Hypervisor 种类众多,没有统一的编程接口来管理它们,这对云环境来说非常重要。
没有统一的方式来方便地定义虚拟机相关的各种可管理对象。
Libvirt提供了什么?它提供统一、稳定、开放的源代码的应用程序接口(API)、守护进程(libvirtd)和和一个默认命令行管理工具(virsh)。
它提供了对虚拟化客户机和它的虚拟化设备、网络和存储的管理。
它提供了一套较为稳定的C语言应用程序接口。
目前,在其他一些流行的编程语言中也提供了对libvirt的绑定,在Python、Perl、Java、Ruby、PHP、OCaml等高级编程语言中已经有libvirt的程序库可以直接使用。
它对多种不同的Hypervisor 的支持是通过一种基于驱动程序的架构来实现的。
libvirt 对不同的Hypervisor 提供了不同的驱动,包括Xen 的驱动,对QEMU/KVM 有QEMU 驱动,VMware 驱动等。
在libvirt 源代码中,可以很容易找到qemu_driver.c、xen_driver.c、xenapi_driver.c、vmware_driver.c、vbox_driver.c 这样的驱动程序源代码文件。
它作为中间适配层,让底层Hypervisor 对上层用户空间的管理工具是可以做到完全透明的,因为libvirt 屏蔽了底层各种Hypervisor 的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。
kvm企业常用的管理方法
kvm企业常用的管理方法KVM(Kernel-based Virtual Machine)是一种基于内核的虚拟化技术,能够将Linux内核转换为一个虚拟化的hypervisor。
在企业中,KVM常被用于构建虚拟化平台,提供高效、可靠的虚拟机管理。
本文将介绍KVM企业常用的管理方法。
一、KVM企业常用的管理工具1. KVM管理工具包(virt-manager):virt-manager是一款基于图形界面的KVM管理工具,能够实现对虚拟机的创建、启动、停止、迁移等操作。
它提供了直观的用户界面,方便管理员进行管理和监控。
2. libvirt:libvirt是一套用于管理虚拟化平台的API和工具集合。
它提供了与KVM、Xen、QEMU等虚拟化技术的集成,使得管理员可以通过统一的接口对多种虚拟化平台进行管理。
3. oVirt:oVirt是一个开源的虚拟化管理平台,基于KVM和libvirt。
它提供了一套完整的虚拟化解决方案,包括虚拟机管理、网络管理、存储管理等功能。
oVirt具有良好的可扩展性和可定制性,适用于中小型企业的虚拟化管理需求。
二、KVM企业常用的管理策略1. 服务器集中管理:将所有的KVM主机集中管理,可以通过KVM 管理工具包或oVirt平台对虚拟机进行统一管理。
这样可以提高管理效率,减少管理员的工作量。
2. 虚拟机资源优化:通过合理规划和配置虚拟机的资源,可以充分利用服务器的计算、存储和网络资源。
管理员可以根据虚拟机的需求,灵活调整CPU、内存、磁盘等资源的分配,以提高系统的性能和可靠性。
3. 虚拟机备份与恢复:定期对虚拟机进行备份,以防止数据丢失或系统故障。
同时,建立完善的恢复策略,可以在系统崩溃或数据损坏时快速恢复虚拟机的状态。
4. 虚拟机监控与性能调优:通过监控虚拟机的运行状态和性能指标,及时发现和解决性能瓶颈和故障。
管理员可以使用监控工具对CPU、内存、存储、网络等进行监控和分析,以优化虚拟机的性能和资源利用率。
ProxmoxVEQemuKVM虚拟机设置要求
ProxmoxVEQemuKVM虚拟机设置要求Qemu(Quick Emulator 的缩写)是⼀种模拟物理计算机的开源虚拟机管理程序。
从运⾏ Qemu 的主机系统的⾓度来看,Qemu 是⼀个⽤户程序,它可以访问许多本地资源,如分区、⽂件、⽹卡,然后将这些资源传递给模拟计算机,模拟计算机将它们视为真实设备.在模拟计算机中运⾏的来宾操作系统访问这些设备,并像在真实硬件上运⾏⼀样运⾏。
例如,您可以将 ISO 映像作为参数传递给 Qemu,在模拟计算机中运⾏的操作系统将看到插⼊ CD 驱动器的真实 CD-ROM。
Qemu 可以模拟从 ARM 到 Sparc 的多种硬件,但 Proxmox VE 只关注 32 位和 64 位 PC 克隆模拟,因为它代表了绝⼤多数服务器硬件。
由于处理器扩展的可⽤性,当模拟架构与主机架构相同时,PC 克隆的仿真也是最快的之⼀。
您有时可能会遇到术语KVM(基于内核的虚拟机)。
这意味着 Qemu 通过 Linux KVM 模块在虚拟化处理器扩展的⽀持下运⾏。
在 Proxmox VE 的上下⽂中,Qemu和 KVM可以互换使⽤,因为 Proxmox VE 中的 Qemu 将始终尝试加载 KVM 模块。
Proxmox VE 中的 Qemu 作为根进程运⾏,因为这是访问块和 PCI 设备所必需的。
仿真设备和半虚拟化设备Qemu 模拟的 PC 硬件包括主板、⽹络控制器、SCSI、IDE 和 SATA 控制器、串⾏端⼝(完整列表可以在kvm(1)⼿册页中看到),所有这些都在软件中进⾏了模拟。
所有这些设备都是与现有硬件设备完全等效的软件,如果来宾中运⾏的操作系统具有适当的驱动程序,它将像在真实硬件上运⾏⼀样使⽤这些设备。
这允许 Qemu 运⾏未经修改的操作系统。
然⽽,这会带来性能成本,因为在软件中运⾏本应在硬件中运⾏的内容涉及主机 CPU 的⼤量额外⼯作。
为了缓解这种情况,Qemu 可以呈现给来宾操作系统半虚拟化设备,其中来宾操作系统识别出它在 Qemu 内部运⾏并与管理程序合作。
kvm安装和删除虚拟机的方法
kvm安装和删除虚拟机的⽅法什么是 KVM ?KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。
2006 年 10 ⽉,由以⾊列的Qumranet 组织开发的⼀种新的“虚拟机”实现⽅案。
2007 年 2 ⽉发布的 Linux 2.6.20 内核第⼀次包含了 KVM 。
增加 KVM 到 Linux 内核是 Linux 发展的⼀个重要⾥程碑,这也是第⼀个整合到 Linux 主线内核的虚拟化技术。
KVM 在标准的 Linux 内核中增加了虚拟技术,从⽽我们可以通过优化的内核来使⽤虚拟技术。
在 KVM 模型中,每⼀个虚拟机都是⼀个由 Linux 调度程序管理的标准进程,你可以在⽤户空间启动客户机操作系统。
安装kvm[root@puppetserver soft]# yum install qemu-kvm libvirt python-virtinst bridge-utils[root@puppetserver soft]# yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils[root@puppetserver soft]# lsmod | grep kvmkvm_intel 53484 0kvm 316506 1 kvm_intel[root@puppetserver soft]# /etc/init.d/libvirtd startStarting libvirtd daemon: [ OK ]删除前:virsh # list --allId Name State----------------------------------------------------3 test running- test02 shut off- test03 shut off[root@puppetnode01 ~]# cd /etc/libvirt/qemu[root@puppetnode01 qemu]# lltotal 16drwxr-xr-x 2 root root 4096 Oct 28 19:36 autostartdrwx------ 3 root root 4096 Oct 28 09:44 networks-rw------- 1 root root 2965 Oct 28 16:41 test02.xml-rw------- 1 root root 2961 Oct 28 17:15 test.xml删除后:virsh # destroy test03error: Failed to destroy domain test03error: Requested operation is not valid: domain is not runningvirsh # undefine test03Domain test03 has been undefinedvirsh # undefine test02Domain test02 has been undefinedvirsh # destroy testDomain test destroyedvirsh # list --allId Name State----------------------------------------------------- test shut offvirsh # undefine testDomain test has been undefinedvirsh # list --allId Name State----------------------------------------------------virsh #[root@puppetnode01 qemu]# lltotal 8drwxr-xr-x 2 root root 4096 Oct 28 19:37 autostartdrwx------ 3 root root 4096 Oct 28 09:44 networks[root@puppetnode01 qemu]#总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。
Qemu-kvm虚拟机搭建
Qemu-kvm虚拟机安装一、网络架构——桥接宿主机与虚拟机之间的网络关系有桥接、NAT、仅主机三种模式。
这里我们用桥接模式安装虚拟机。
如上图为桥接的网络架构,需要在系统中配置一个网桥,相当于一台二层交换机。
宿主机与虚拟机通信以及访问internet都通过网桥。
在/etc/sysconfig/network-scripts/下创建ifcfg-br0进入ifcfg-br0并修改配置文件如下://TYPE="Bridge"BOOTPROTO="static"IPADDR=192.168.10.104NETMASK=255.255.255.0GATEWAY=192.168.10.5DEVICE="br0"ONBOOT="yes"//再进入宿主机的以太网网卡,修改配置文件,将宿主机的以太网网卡桥接到网桥:修改完成之后重启网络配置:systemctl restart network网络重启完成之后运行brctl show:如图ens33已经桥接到了br0。
二、virt-manager图形化界面创建虚拟机如果你的linux系统带桌面就可以使用virt-manager工具来创建虚拟机。
用yum install 安装工具如下://qemu-kvm virt-manager libvirt下载完成之后打开virt-manager:在这里弹出了安装界面,证明成功了。
三、virt-install命令行安装虚拟机如果你的linux服务器是桌面版本的,可以使用上述图形化安装kvm虚拟机。
但是大部分linux虚拟机并不带可视化桌面,我们只能使用命令行的方式创建虚拟机,这里使用到的工具——virt-install。
用yum install安装工具://qemu-kvm virt-install libvirt vnc这里需要多安装一个vnc服务,因为不是带桌面的版本,所以我们安装完成之后需要通过vnc连接安装好的虚拟机。
kvm快照原理
kvm快照原理KVM快照是一种虚拟化技术,它可以捕捉虚拟机当前的状态并将其保存,以供日后使用。
KVM快照实际上是一个虚拟机的镜像,包含了虚拟机的磁盘、内存、网络状态以及所有的配置信息。
在创建快照之后,可以随时恢复到快照创建时的状态,或者使用快照作为新的虚拟机基础镜像来创建新的虚拟机。
KVM快照的原理是基于虚拟机的COW(Copy-On-Write)技术实现的。
COW技术是一种基于写时复制的技术,当一个数据需要被修改时,首先先将该数据写入一个新的位置,然后再进行修改操作。
这种技术可以有效地避免数据的重复写入,提高数据的复制效率和存储空间的利用率。
在KVM虚拟化环境下,快照的实现也是基于COW技术,当创建一个快照时,KVM会将虚拟机的原始镜像文件复制一份,作为快照的基础镜像,并将所有的写入操作都指向该快照的镜像文件。
每当虚拟机进行写操作时,KVM会在快照镜像文件中创建一个新的文件块,并将写操作记录在该块中,而对于读操作,KVM会首先在快照镜像文件中查找该块,如果该块不存在,则去原始镜像文件中查找。
需要注意的是,每创建一个快照,KVM都会在系统中创建一个单独的.qcow2文件,该文件即为快照文件。
因此,如果创建了多个快照,则会在系统中生成多个.qcow2文件,这会占用较多的存储空间。
在使用快照时,可以通过恢复快照来回到虚拟机创建快照时的状态。
恢复快照时,KVM会将虚拟机当前状态重置为创建快照时的状态,并删除之后创建的快照。
如果在恢复快照之后,需要继续对虚拟机进行操作,则需要重新创建快照。
除了恢复快照之外,还可以使用快照创建新的虚拟机。
这种方式可以大幅缩短安装系统和配置环境的时间。
通过快照创建新的虚拟机时,KVM会将快照文件作为虚拟机的基础镜像,然后再创建一个独立的.qcow2文件作为新虚拟机的镜像文件。
总之,KVM快照是一种十分实用的技术,它可以有效地提高虚拟机的管理效率和存储空间的利用率。
通过理解KVM快照的原理和使用方法,可以更好地应对虚拟化环境下的各种管理和维护工作。
kvm虚拟化常用管理命令
kvm虚拟化常用管理命令
1. virsh: 用于管理虚拟机,包括启动、停止、暂停、恢复、创建、删除等操作。
2. virt-install: 用于安装虚拟机,可以指定虚拟机的配置项、镜像文件、磁盘大小等参数。
3. virsh edit: 用于编辑虚拟机配置文件,可以修改虚拟机的各种参数。
4. virsh list: 查看当前虚拟机的列表及其状态信息。
5. virsh start: 启动虚拟机。
6. virsh stop: 停止虚拟机。
7. virsh suspend: 暂停虚拟机。
8. virsh resume: 恢复虚拟机。
9. virsh reboot: 重启虚拟机。
10. virsh destroy: 强制关闭虚拟机。
11. virsh snapshot-create: 创建快照。
12. virsh snapshot-list: 查看快照列表。
13. virsh snapshot-revert: 恢复到指定快照状态。
14. virsh snapshot-delete: 删除指定快照。
15. virsh domifaddr: 查看虚拟机的网络接口信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
KVM2012-07-12一台虚拟机的核心就是一个磁盘镜像加/etc/libvirt/qemu/*.xml配置文件,这个镜像可以理解成虚拟机的磁盘,里面有虚拟机的操作系统和驱动等重要文件。
Kvm可以使用的镜像格式包括raw,qcow2,vmdk,vdi,其中raw格式镜像是裸设备,裸设备就是没有被格式化的分区、文件所以io性能会好些,qcow2格式的镜像支持快照功能。
vdi是oracle虚拟机的镜像格式,vmdk 是vmware虚拟机的镜像格式,注意在修改完/etc/libvirt/qemu/*.xml配置文件时需要从新define一下才能生效,virsh define /etc/libvirt/qemu/*.xml虚拟机的创建首先创建一个虚拟机的镜像,然后利用Virtual Machine Manager图形工具进行创建安装。
这里有一个问题,创建一个qcow2格式的镜像,然后Virtual Machine Manager图形工具选择这个qcow2格式的镜像大小竟然为0,不知道为什么,解决方法是首先创建一个raw格式的镜像,系统安装完成后将raw格式的镜像装换成qcow2格式的,然后将对应虚拟机的硬盘路径改为qcow2新格式的镜像,只有qcow2格式的镜像才支持快照功能。
Kvm虚拟机安装步骤1>检查cpu是否支持虚拟化egrep ‘(svm|vmx)’/proc/cpuinfo2>安装qemu-img libvirt virt* bridge-utils软件包3>检查kernel是否加载了kvm模块lsmod |grep kvm4>配置宿主机网卡桥接,配置完成后重启宿主机,参考如下5>配置iso池用于存储系统的iso文件,配置存储池用于存储vm的磁盘镜像。
6>通过vmm安装虚拟机qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G qemu-img有很多命令,包括下面常用的,当然qemu-img -h你懂得。
Info查看镜像的信息Create创建镜像Check检查镜像Convert转化镜像的格式,(raw,qcow ……)Snapshot管理镜像的快照Rebase在已有的镜像的基础上创建新的镜像Resize增加或减小镜像大小创建镜像shell>qemu-img create -f raw /kvm/kvm3/kvm3.img 6G镜像格式转化shell>qemu-img convert -f raw kvm3.img -O qcow2 kvm3.img.qcow2增加镜像大小,raw和qcow2格式都支持镜像的大小增加,减小镜像大小会导致系统报错启动不了Shell>qemu-img resize kvm3.img 10GShell>qemu-img info kvm3.img快照shell>virshvirsh>snapshot-create-as kvm1 kvm1-original 为kvm1虚拟机创建快照virsh>snapshot-list kvm1 查看kvm1虚拟机的快照virsh>snapshot-info kvm1 kvm1-original 查看kvm1虚拟机的快照详细信息virsh>snapshot-revent kvm1 kvm1-original 恢复kvm1虚拟机的状态到kvm1-original快照时virsh>snapshot-delete kvm1 kvm1-original 删除kvm1的kvm1-original快照vm如果建立在/dev/sda6这种裸设备上面,对它进行迁移需要先转换成文件,copy到目的主机后可以直接使用或者在将文件转成成裸分区,例如:Lenovo>dd if=/dev/sda6 of=/mnt/kvm1.img然后将kvm1.img拷贝到hp机器上,然后Hp>dd if=/mnt/kvm1.img of=/dev/sda7然后创建一个虚拟机导入裸分区即可,或者直接使用kvm1.img裸设备。
如果希望虚拟机在宿主机启动的时候自动启动可以在/etc/libvirt/qemu/autostart目录下创建一个软连接连接到对应vm的xml文件,例如ln -s /etc/libvirt/qemu/kvm1.xml /etc/libvirt/qemu/autostart/kvm1.xml虚拟机的迁移分为离线迁移与在线迁移两种方式,离线迁移需要将vm关闭,vm上面的应用会断掉,离线迁移将虚拟机的镜像文件与xml配置文件拷贝到远程主机上,然后将xml文件里面的镜像文件路径指对即可这种迁移方式比较简单动态迁移需要有共享存储环境,动态迁移不会中断顶层应用,下面以nfs为共享存储为例演示动态迁移1)配置nfs共享一个目录,nfs配置文件格式为/nfs-pool *(rw,sync,no_root_squash)2)打开KVM虚拟机管理器双击之后出现主机详情:点击上图存储左下角的添加按钮,添加存储池,填入名称,这里选择类型为netfs(网络导出的目录):点击前进后,目标路径为nfs挂载路径,选择格式为nfs,填上NFS SERVER地址和挂载目录,源地址为nfs共享的目录名称,目标路径为挂载点。
点击完成之后就会创建成功:完成之后再存储池就会出现刚刚建立的NFS共享存储池:(nfs共享存储加入之后会自动挂载到相应目录,这里无需重新手动挂载)点击新建卷建立存储:根据实际需要调整存储卷大小完成之后安装系统,新建虚拟机:这里选择本地安装介质选择对应的系统和版本具体的安装步骤这里不做具体的介绍=================================VMM1====================================完成以上步骤之后就可以实现动态迁移:在VMM1上连接VMM2,如下选择需要迁移的KVM虚拟机,右击迁移,出现如下迁移的选项, 展开高级选项,其中有一个迁移主机地址,填上10.1.1.117即可完成设置之后,点击迁移即可!迁移完成之后,虚拟机在VMM2上状态不变,运行正常基础镜像与增量镜像1、概述实验目的:通过一个基础镜像(node.img),里面把各个虚拟机都需要的环境都搭建好,然后基于这个镜像建立起一个个增量镜像,每个增量镜像对应一个虚拟机,虚拟机对镜像中所有的改变都记录在增量镜像里面,基础镜像始终保持不变。
功能:节省磁盘空间,快速复制虚拟机。
环境:基本镜像文件:node.img 虚拟机ID:node增量镜像文件:node4.img 虚拟机ID:node4要求:以基本镜像文件node.img为基础,创建一个镜像文件node4.img,以此创建一个虚拟机机node4,虚拟机node4的改变将存储于node4.img中。
2、创建增量镜像文件[root@target kvm_node]#qemu-img create -b node.img -f qcow2 node4.img 20G[root@target kvm_node]# qemu-img info node4.imgimage: node4.imgfile format: qcow2virtual size: 20G (21495808000 bytes)disk size: 33Mcluster_size: 65536backing file: node.img (actual path: node.img)#注:该实验只是针对qcow2格式的镜像文件,未测试raw格式的镜像文件是否可行。
3、创建虚拟机node4的XML配置文件[root@target kvm_node]# cp /etc/libvirt/qemu/node.xml /etc/libvirt/qemu/node4.xml[root@target kvm_node]# vim /etc/libvirt/qemu/node4.xml<domain type='kvm'><name>node4</name> #node4的虚拟机名,须修改,否则与基本虚拟机冲突<uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fe4</uuid> #node4的UUID,必须修改,否则与基本虚拟机冲突<memory>524288</memory><currentMemory>524288</currentMemory><vcpu cpuset='0-1'>2</vcpu><os><type arch='x86_64' machine='rhel5.4.0'>hvm</type><boot dev='hd'/></os><features><acpi/><apic/><pae/></features><clock offset='localtime'/><on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>restart</on_crash><devices><emulator>/usr/libexec/qemu-kvm</emulator><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/virhost/kvm_node/node4.img'/> #将原指向/virhost/kvm_node/node.img改为node4.img <target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/></disk><interface type='bridge'><mac address='54:52:00:69:d5:f4'/> #修改网卡MAC,防止冲突<source bridge='br0'/><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface><serial type='pty'><target port='0'/></serial><console type='pty'><target type='serial' port='0'/></console><input type='mouse' bus='ps2'/><graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0' passwd='xiaobai'><listen type='address' address='0.0.0.0'/></graphics><video><model type='cirrus' vram='9216' heads='1'/><address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/></video><memballoon model='virtio'><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/></memballoon></devices></domain>4、根据xml配置定义虚拟机node4[root@target kvm_node]#virsh define /etc/libvirt/qemu/node4.xml[root@target kvm_node]#virsh start node45、测试[root@target kvm_node]# du -h node.img6.3G node.img[root@target kvm_node]# du -h node4.img33M node4.img[root@node4 ~]# dd if=/dev/zero of=test bs=1M count=200 #在虚拟机node4上增量200M大小文件200+0 records in200+0 records out209715200 bytes (210 MB) copied, 1.00361 seconds, 209 MB/s[root@target kvm_node]# du -h node.img #基本镜像文件node.img大小未变6.3G node.img[root@target kvm_node]# du -h node.img #增量镜像文件node4.img增加200M了234M node4.imgP2V V2V V2P。