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虚拟机的步骤

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虚拟化完整教程

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安装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虚拟化技术中的一项重要功能,它可以帮助管理员在虚拟机运行过程中保存当前状态,以便在需要的时候可以快速恢复到该状态。

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安装配置详解

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集中管理解决方案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 介绍(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 捕获这个异常,在异常里面做翻译,模拟,最后返回到客户操作系统内,客户操作系统认为自己的特权指令工作正常,继续运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档