kvm虚拟化完整教程
- 格式:doc
- 大小:1.66 MB
- 文档页数:26
linux云计算--KVM虚拟化技术(cpu内存)制作lvm镜像kwm上安装centos7系统KVM虚拟化技术(cpu内存) 制作lvm镜像 kwm上安装centos7系统1.CPU 虚拟化1.KVM中VCPU与ThreadKVM中每⼀个Guest OS都是⼀个标准的Linux进程(qemu-kvm进程)Guest OS中的 vCPU 是qemu-kvm 进程派⽣的线程Guest OS中的内存是qemu-kvm 进程的地址空间的⼀部分KVM 虚拟机包括虚拟内存、虚拟CPU和虚拟机I/O设备,其中内存和 CPU 的虚拟化由 KVM 内核模块负责实现,I/O 设备的虚拟化由 qemu 负责实现。
2.KVM中VCPU与Thread 查看进程和线程 KVM设备状态⼀个 KVM 虚拟机即⼀个 Linux qemu-kvm 进程,与其他 Linux 进程⼀样被Linux 进程调度器调度。
如上例:pstree命令查看,⼀个计算节点中有2个qemu-kvm进程,即2台虚拟机,或者ps aux|grep 虚机名字查看到qemu-kvm进程⼀个虚拟cpu对应⼀个线程virsh list --allps -TP 2951查看线程ps aux| grep qemu查看进程ps aux| grep qemu-kvmpstree查看进程3.KVM中VCPU与Thread虚机中的每⼀个虚拟 vCPU 则对应 qemu-kvm 进程中的⼀个线程。
宿主机有两个物理 CPU,上⾯起了两个虚机 VM1 和 VM2。
VM1 有两个 vCPU,VM2有 4 个 vCPU。
可以看到 VM1 和 VM2 分别有两个和 4 个线程在两个物理 CPU 上调度。
4.资源 over-commit (资源过载)2.内存虚拟化原理实现⽅式技术内存过载1.内存虚拟化基本原理KVM 为了在⼀台机器上运⾏多个虚拟机,需要增加⼀个新的内存虚拟化层也就是说,必须虚拟 MMU(内存管理单元 )来⽀持客户操作系统,来实现 VA -> PA -> MA 的翻译。
Linux KVM虚拟机PVE使用指南1引言KVM (全称是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。
使用 KVM 可允许多个包括 Linux 和 Windows 每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等PVE使用图形化安装方式,支持裸机安装,管理界面是WEB方式,易于操作,浏览器(fireox,chrome等)支持JAVA即可以进行guest OS的图形管理,无须安装客户端,方便快捷。
本文将详细介绍PVE的安装,使用,部署优化等各方面的内容。
2KVM/QEMU体系架构2.1总体架构QEMU作为一个开源的硬件模拟器项目,除了支持x86体系架构之外,还支持ARM、MIPS、PowerPC、IA64等多种硬件架构。
QEMU采用模块化设计的方法,因此,还能支持多种多样的外设硬件,并且能够方便地进行扩充。
除了支持KVM之外,QEMU还支持全模拟化和kqemu加速模块等方式,这三种方式的架构区别如图5-6所示。
第一种模式是通过kqemu模块实现内核态的加速。
通过在内核中加入kqemu 的相关模块,在用户态的QEMU则通过访问/dev/kqemu设备文件接口调用改进型加速。
在这种模式中,主要针对虚拟机和宿主机运行于统一架构的情况下进行虚拟化。
第二种模式是在用户态直接运行QEMU,由QEMU对目标机的所有指令进行翻译后执行,相当于全虚拟化。
在这种模式下,可以运行各种不同形态的体系结构,如Android开发环境中即使用了QEMU来为其模拟ARM运行环境,但是在这种模拟环境下,每一条目标机的执行指令都需要耗费少则数个,多则成千上万个宿主机的指令周期来模拟实现,速度方面不太理想。
第三种模式则是KVM官方提供的kvm-qemu加速模式。
运行在内核态的KVM 模块通过/dev/kvm字符设备文件向外提供操作接口。
KVM安装部署实验环境:一台IBM服务器作为KVM服务器系统:Red Hat Enterprise Linux Server release 6.1 (Santiago)一台本地虚拟机作为KVM管理端系统:Red Hat Enterprise Linux Server release 6.1 (Santiago)网络拓扑:eth0 作为管理接口不做其他配置eth1 作为桥接端口br10 vlan10的桥接接口br3 vlan3的桥接接口br30 为了测试添加的vlaneth1在交换机上的对联接口已经设置成了trunk接口,并且在交换机上已经做了vlan间路由(没有加上vlan30)vlan3的IP地址为192.168.211.1vlan10的IP地址为192.168.212.1vlan30在交换机上没有配置Virt-manager服务器:192.168.211.175实验目的:添加四台虚拟机:vlan10:VirHost1 #192.168.212.10VirHost2 #192.168.212.20vlan3:VirHost3 #192.168.211.30VirHost4 #192.168.211.40vlan30:VirHost5 #192.168.212.30通过在KVM服务器上划分vlan3、vlan10、vlan30来实现和交换机vlan的对接的效果一.安装配置KVM服务器略…二.部署VlanKvm服务器上进行操作:1.添加和配置vlan[root@localhost libvirt]# lsmod | grep 802[root@localhost libvirt]#貌似不支持,加载模块[root@localhost libvirt]# modprobe 8021q[root@localhost libvirt]# lsmod | grep 8028021q 24413 0garp 7310 1 8021q添加vlan3、vlan10、vlan30[root@localhost network-scripts]# vconfig add eth1 3Added VLAN with VID == 3 to IF -:eth1:-[root@localhost network-scripts]# vconfig add eth1 10Added VLAN with VID == 10 to IF -:eth1:-[root@localhost network-scripts]# vconfig add eth1 30Added VLAN with VID == 30 to IF -:eth1:-相应的网络配置文件列表:ifcfg-br3ifcfg-br10ifcfg-br30ifcfg-eth1.3ifcfg-eth1.10ifcfg-eth1.30配置内容以br3和eth1.3为例----vi ifcfg-br3----DEVICE="br3"TYPE=BridgeHWADDR="5C:F3:FC:0C:2B:C6"ONBOOT="yes"----vi ifcfg-eth1.3----DEVICE="eth1.3"BRIDGE=br3HWADDR="5C:F3:FC:0C:2B:C6"ONBOOT="yes"其他配置文件类似重启网络服务:#/etc/init.d/newrork restart添加对应关系默认新添加的虚拟机都是属于br0的,这里要先删除掉br0之后再建立对应关系,删除的步骤如下:1.ifdown br02.brctl delbr br03.删除配置文件ifcfg-br0(如果有)注:1.每次添加一个虚拟机在KVM服务器上都会出现相应的虚拟网卡(vnet0、vnet1…)与之对应,2.默认新添加的虚拟机都是属于br0,所以为了彻底更改新建立的虚拟机使用的桥接端口,需要修改每个虚拟机对应的配置文件(/etc/libvirt/qemu/VirHost1.xml,VirHost2.xml等)中的<source bridge='br0'/>,修改之后要在KVM服务器端重新定义一下客户端,“virsh define /etc/libvirt/qemu/VirHost5.xml”,之后重启虚拟机客户端每一个虚拟网卡的MAC地址和新添加的虚拟机的MAC是一样的在不更改配置文件的情况下临时添加对应关系的命令如下#brctl addbr br3 b10 br30 #添加桥接端口#brctl addif br10 vnet0 vnet1 #对应的是VirHost1 VirHost1#brctl addif br10 vnet2 vnet3 #对应的是VirHost3 VirHost4#brctl show分别设置五台虚拟机的IP地址VirHost1:IP:192.168.212.10 GW:192.168.212.1 VirHost2:IP:192.168.212.20 GW:192.168.212.1VirHost3:IP:192.168.211.30 GW:192.168.211.1 VirHost4:IP:192.168.211.40 GW:192.168.211.1 切换到Virhost5:在KVM服务器上将VirHost5加入到br10切换到VirHost5:将VirHost1,VirHost5加入到br30切换到VirHost1:因为VirHost1在vlan30所以平vlan10的地址不通VirHost1和VirHost5现在同一个vlan30中所以互通。
一.KVM虚拟机创建的用户操作对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。
但是它们底层实现的原理都是一样的,而且它们基本上都是通过开源的虚拟化库Libvirt来开发的。
下面就讲一讲三种用户可以创建虚拟机的方式。
利用kvm自带命令行工具进行创建kvm常用命令如下:参数示例说明-hda-hda /data/指定作为硬盘镜像-cdrom-cdrom /data/指定作为光盘镜像-boot-boot c从硬盘启动-boot d从光盘启动-m-m 512分配512M内存给虚拟系统-vnc-vnc :0作为vnc服务器-cpu-cpu 列出支持的CPU-cpu core2duo指定CPU为core2duo-smp-smp 2指定虚拟机有2个CPU-net-net nic为虚拟机网卡(默认为tap0)-net tap系统分配tap设备(默认为tap0)1-net nic -net tap 将虚拟机的网卡eth0连接真机里的tap0具体创建一个虚拟机的步骤如下:(1)生成硬盘镜像文件root@host:kvm-img create -f 10G其中“-f raw”指定镜像文件的格式为“raw”,“10G”指定镜像文件大小。
(2)从光盘启动虚拟机来安装操作系统root@host:kvm -boot d -hda -m 512其中“-boot d”指定虚拟机从光盘启动,“-hda ”指定硬盘镜像的位置,“-cdrom ”指定光盘镜像的位置,“-m 512”指定虚拟机的内存为512M。
(3)安装操作系统后便可直接从硬盘启动虚拟机root@host:kvm -boot c -hda 512利用virsh命令行工具进行创建virsh工具简介Virsh是由一个名叫libvirt的软件提供的管理工具,提供管理虚拟机比较高级的能力。
kvm虚拟化技术实战与原理解析KVM(Kernel-based Virtual Machine)是一种基于Linux内核的开源虚拟化技术。
它允许在一台物理服务器上同时运行多个虚拟机,每个虚拟机拥有自己的操作系统和资源配置。
本文将从实战和原理两个方面对KVM虚拟化技术进行解析。
一、KVM虚拟化技术的实战应用1. 环境准备在进行KVM虚拟化技术实战之前,我们需要满足以下环境准备要求:- 一台支持虚拟化扩展的物理服务器;- 安装有支持KVM的Linux操作系统,例如Ubuntu、CentOS等;- 确保硬件资源充足,并开启虚拟化扩展功能。
2. 安装和配置KVM步骤一:安装KVM软件包通过在终端中执行相应的命令,我们可以轻松安装KVM软件包,例如在Ubuntu系统下,可以使用如下命令进行安装:```sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils```步骤二:创建虚拟网络我们需要通过桥接方式创建一个虚拟网络,将虚拟机与物理网络连接起来。
可以使用以下命令创建一个名为br0的虚拟网络:```sudo brctl addbr br0sudo brctl addif br0 eth0```步骤三:创建和管理虚拟机可以使用命令行工具(virsh)或者图形化工具(virt-manager)来创建和管理虚拟机。
通过设置虚拟机的硬件资源和网络配置,我们可以满足各种不同的应用需求。
3. 实战应用案例KVM虚拟化技术在实际应用中具有广泛的用途,以下是一些实战应用案例:- 服务器虚拟化:将一台物理服务器划分为多个虚拟机,每个虚拟机运行一个独立的应用程序,提高服务器资源的利用率。
- 开发和测试环境:通过创建虚拟机,开发团队可以在不同的环境中进行应用程序的开发和测试,提高开发效率和应用程序的可靠性。
- 云计算平台:KVM虚拟化技术是很多云计算平台的基础,通过在物理服务器上运行多个虚拟机,实现多租户的资源共享和隔离。
Linux虚拟化——KVM安装步骤1、先查看cpu是否支持kvmKVM 需要有 CPU 的支持(Intel vmx 或 AMD svm),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持:egrep '(vmx|svm)' --color=always /proc/cpuinfo如果输出的结果包含VMX,它是Intel处理器虚拟机技术标志:如果包含SVM,它是AMD 处理器虚拟机技术的标志,如果你什么都没有得到,那应你的系统并没有支持虚拟化的处理,不能使用KVM,另处linux发行版本必须在64bit环境中才能使用KVM。
2、BIOS中开启Virtual Technolege在主板BIOS中开启CPU的Virtual Technolege(VT,虚化技术),不同主板所在菜单不同例如:华硕主板开启虚拟化Intel主板开启虚拟化3、安装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或者如下图,安装需要的组4、检查kvm模块是否安装使用以下命令显示两个模块则表示安装完成[root@vm76 ~]# lsmod | grep kvmkvm_intel 54285 0kvm 333172 1 kvm_intel以上表明安装完成5、配置宿主机1、关闭防火墙(如不用)chkconfig iptables offservice iptables stop2、执行如下命令打开文件selinux配置文件。
KVM虚拟化安装部署及管理教程⽬录1.kvm部署1.1 kvm安装1.2 kvm web管理界⾯安装1.3 kvm web界⾯管理1.3.1 kvm连接管理1.3.2 kvm存储管理1.3.3 kvm⽹络管理1.3.4 实例管理故障1.kvm部署1.1 kvm安装//关闭防⽕墙和selinux[root@kvm ~]# systemctl disable --now firewalld.serviceRemoved /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@kvm ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config[root@kvm ~]# reboot//下载epel源和⼯具包[root@kvm ~]# yum -y install epel-release vim wget net-tools unzip zip gcc gcc-c++//验证CPU是否⽀持KVM;如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的⽀持的[root@kvm ~]# egrep -o 'vmx|svm' /proc/cpuinfo//安装kvm[root@kvm ~]# yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils libguestfs-tools//桥接⽹卡,⽤br0来桥接ens160⽹卡[root@kvm ~]# cd /etc/sysconfig/network-scripts/[root@kvm network-scripts]# cp ifcfg-ens33 ifcfg-br0[root@kvm network-scripts]# cat ifcfg-br0TYPE=BridgeDEVICE=br0NM_CONTROLLED=noBOOTPROTO=staticNAME=br0ONBOOT=yesIPADDR=192.168.237.131NETMASK=255.255.255.0GATEWAY=192.168.237.2DNS1=114.114.114.114DNS2=8.8.8.8[root@kvm network-scripts]# cat ifcfg-ens33TYPE=EthernetBOOTPROTO=staticNAME=ens33DEVICE=ens33ONBOOT=yesBRIDGE=br0NM_CONTROLLED=no//重启⽹络[root@kvm ~]# systemctl restart network[root@kvm ~]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000link/ether 00:0c:29:7b:10:a5 brd ff:ff:ff:ff:ff:ffinet6 fe80::20c:29ff:fe7b:10a5/64 scope linkvalid_lft forever preferred_lft forever3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 00:0c:29:7b:10:a5 brd ff:ff:ff:ff:ff:ffinet 192.168.237.131/24 brd 192.168.237.255 scope global br0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe7b:10a5/64 scope linkvalid_lft forever preferred_lft forever4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:1c:33:d6 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:1c:33:d6 brd ff:ff:ff:ff:ff:ff//启动服务[root@kvm ~]# systemctl enable --now libvirtd//验证安装结果[root@kvm ~]# lsmod|grep kvmkvm_intel 188740 0kvm 637289 1 kvm_intelirqbypass 13503 1 kvm//测试[root@kvm ~]# virsh -c qemu:///system listId 名称状态----------------------------------------------------[root@kvm ~]# virsh --version4.5.0[root@kvm ~]# virt-install --version1.5.0[root@kvm ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm[root@kvm ~]# ll /usr/bin/qemu-kvmlrwxrwxrwx 1 root root 21 10⽉ 20 23:14 /usr/bin/qemu-kvm -> /usr/libexec/qemu-kvm//查看⽹桥信息[root@kvm ~]# brctl showbridge name bridge id STP enabled interfacesbr0 8000.000c297b10a5 no ens33virbr0 8000.5254001c33d6 yes virbr0-nic1.2 kvm web管理界⾯安装kvm 的 web 管理界⾯是由 webvirtmgr 程序提供的。
Ubuntu服务器应用KVM实现虚拟化速成手册本文教大家如何让KVM在Ubuntu服务器上顺畅运行、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。
作为Linux内核虚拟机管理程序,KVM称得上是企业级虚拟化领域的后起之秀。
它有诸多优点:非常精简,因而占用资源少,运行起来速度快,可以轻松自如地运行没有经过改动的访客操作系统。
在这堂速成课中,我们会迅速让KVM在Ubuntu服务器上运行起来、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。
KVM与Ubuntu服务器KVM的全称是“基于内核的虚拟机”,最先由Qumranet公司开发而成。
2008年,红帽公司收购了Qumranet,将KVM作为服务器版红帽企业级虚拟化(RHEV)的核心部分。
KVM采用了GPL许可证模式,是主线内核(mainline Kernel)的一部分,因而任何Linux发行版都能支持它。
KVM是一种类型2虚拟机管理程序,这意味着它在操作系统里面运行。
一些流行的类型2虚拟机管理程序包括Xen和VirtualBox。
类型1虚拟机管理程序(如IBM的z/VM和VMware ESXi)则可以直接在裸机上运行,不需要什么操作系统。
KVM几乎支持任何访客操作系统:Linux、Mac OS X、Unix、Windows以及你所采用的其他任何操作系统。
与KVM一样,Ubuntu服务器也发展成为一款面向企业的重量级服务器。
Ubuntu 支持x86和x86 64位平台上的KVM。
与红帽和Novell这两大企业级Linux开发商不一样,你没必要进行注册或者理睬销售噱头,就可以下载和测试Ubuntu。
如果你想要获得培训、商业支持或者在线服务(比如Landscape系统管理器或Ubuntu云服务),你想要的时候,就能随时获取。
系统要求就这堂速成课而言,你需要配备英特尔VT或AMD-V处理器的Ubuntu计算机,因为这些处理器包含特殊的扩展功能,可以原生支持虚拟机。
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模式:即⽤户模式,可以访问外⽹,但是⽆法从外部访问虚拟机⽹络。
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要不桌面无法使用,是黑屏状态。
可以执行如下命令关闭:systemctl stop NetworkManager systemctl restart network,如果不关闭它也可以在下面创建网桥后在配置文件中加上参数"NM_CONTROLLED=no"即可创建网桥:virsh iface-bridge e ns33 br0创建完成后可以ifconfig可以看到br0网卡信息编辑虚拟机配置文件,修改如下内容:virsh edit CentOS-7-x86_64上图中的mac地址可以自定义,在这里配置即可,无需再去虚拟机的网卡里配置重启虚拟机virsh shutdown CenoOS-7-x86_64 virsh start CentOS-7-x86_64ip地址已和宿主机相同,可以访问外网并且xshell也可以连接也可以手动配置静态ip,如果还是没有显示eth0网卡信息,可以执行ifup eth0命令开启网卡,配置文件中的onboot一定设置成yes至此,搭建kvm虚拟机完成附加:16.如果要安装多个kvm虚拟机那么步骤同上,安装完操作系统后同样配置网络方式更改为网桥模式,例如又安装了centos6.5系统安装完成后编辑文件,配置网桥信息:然后编辑虚拟机内的网卡配置文件,添加自定义网卡信息:重启网卡service network restart 测试上网情况以及xshell连接可以正常连接17.如果一台机器上安装了多台kvm虚拟机,如果想通过vnc连接只能输入对应的端口号(从5900开始递增),此种方法过于麻烦,可以通过安装图形化管理界面virt-manager来管理所有虚拟机(前提是宿主机已经安装了桌面环境,gnome 或者kde桌面都可以,建议kde桌面,安装简单)在宿主机命令行界面执行yum -y install virt-manager安装即可宿主机安装vnc 通过vnc连接宿主机桌面环境(不是连接内部机器),并打开终端命令行,在其中执行virt-manager,弹出界面如下:点击对应的虚拟机右键既可选择开启/关闭/重启虚拟机如果右键关机键无法实现关机可以从此处关机windows安装安装window的方法和上面一样,创建的磁盘空间要大一些,最好20G以上qemu-img create -f raw /data/window.raw 20G以上也可以用qcow2格式qemu-img create -f qcow2 /data/window.qcow2 20G(建议用qcow2因为支持快照但是速度没有raw快)18.virt-install --virt-type kvm --name window --ram 1024--cdrom=/iso/window.iso --disk path=/data/window.qcow2 --networkbridge=br0 --graphics vnc,listen=0.0.0.0,port=5958, --force --autostart然后通过vnc 端口5958进行连接安装过程中可能重启数次,可能关闭后不能启动需要手动执行命令virsh start windows 启动继续完成安装.创建密码:默认也是nat模式,同理去配置文件中更改成网桥模式,如果ipconfig没有网卡信息就手动配置下自定义的virsh edit windows更改后重启机器如图,已变成桥接模式并且可以本地通过mstsc访问kvm安装的虚拟机默认网卡为rtl8139此网卡在网路负载过重的情况下会出现崩溃的情况导致无法上网,如果出现此种情况可以将默认网卡修改为e1000 命令如下:(先关机)上述命令执行完后启动机器即可同样可以通过virt-manager来管理如果手动安装完虚拟机后在virt-manager里看不到那么可以先断开virt-manager与虚拟机的连接然后在重新连接即可看到Virt-manager来安装虚拟机,此种方法简单,操作如图所示:选择镜像位置设置内存和CPU 创建磁盘空间自定义名称点击finish即可开始安装!!kvm快照管理kvm虚拟机默认使用raw的镜像格式,优点是性能好,速度快,但是缺点是不支持一些新的功能,如镜像、zlib磁盘压缩、AES加密等,要使用镜像功能需要将raw装换为qcow2格式进行快照备份1.查看现有磁盘镜像格式qemu-img info centos.raw2.关闭虚拟机将raw转换成qcow2格式qemu-img convert -f raw -O qcow2 centos.raw centos.qcow2-f表示源镜像格式,-O表示目标镜像格式(不是零是大写的欧)还将原格式的拷贝了一份再次查询当前镜像格式发现已经变成了qcow23.修改虚拟机配置文件,将配置文件中的raw格式修改成qcow2格式4.对虚拟机centos6.9进行创建快照virsh snapshot-create-as centos6.9 centos其中centos属于快照别名,通过as制定的,也可以不加as不加别名得到的就是一个版本号5.查看虚拟机快照版本virsh snapshot-list centos6.9virsh snapshot-current centos6.9可以看到版本号创建的快照默认在/var/lib/libvirt/qemu/snapshot目录下6.恢复虚拟机快照,恢复之前要先关闭虚拟机,virsh domstate centos6.9确认是否为关闭状态7.virsh snapshot-revert centos6.9 centos恢复之前可以通过virsh snapshot-list centos6.9查看当前镜像下有几个快照然后选怎恢复哪个版本的快照8.删除虚拟机快照virsh snapshot-delete centos6.9 centoskvm虚拟机重命名1.查看所有kvm虚拟机virsh list --all2.重命名虚拟机需要先将虚拟机关闭,然后导出其xml文件cd /etc/libvirt/qemu //进入xml文件目录下virsh dumpxml centos6.9 > centos.xmlcentos6为重命名之后的虚拟机名称,编辑centos6.xml文件3.使用virsh undefine命令删除之前的虚拟机,根据新的xml文件定义新的kvm虚拟机4.virsh undefine centos6.9 //删除原来的虚拟机5.virsh define /etc/libvirt/centos6.xml //重新定义新的虚拟机6.再次使用virsh list --all命令查看结果注意:当虚拟机下面存在快照时无法用virsh undefine来删除,需要先将快照删除报错如下:更改虚拟机和内存时可以直接进入文件中修改virsh edit centos6kvm虚拟机克隆克隆可以手动克隆也可以选择通过virt-manager的方式来克隆virt-manager克隆方式简单只需要先关闭虚拟机后然后在图形界面邮件选择clone即可,例如:克隆完成后新的克隆机的mac地址都会自动变更成新的,但是原来安装的机器的vnc端口不会变(如果是通过vnc来安装的).此时我们需要更改原端口然后就可以通过vnc和端口来连接机器连接之后更改ip地址,然后重启网卡或者重启机器后即可正常使用手动克隆:如果虚拟机出现下面这种情况:表示挂起可以使用命令virsh resume k8s来唤醒虚拟机如果要强制关闭虚拟机则使用virsh destroy k8s更改虚拟机磁盘位置当虚拟机所在的磁盘空间满了之后需要将部分虚拟机转移到另一个磁盘中,操作方法如下首先将对应的磁盘文件转移到想要转移的地方,例如原来在/data目录下现在转移到/vnetoo目录下mv /data/ansible.img /vnetoo移动之后然后修改对应的xml文件(修改之前先备份),xml文件在/etc/libvirt/qemu/目录下修改一定要采用virsh edit ansible的方式修改vi /vim方法修改后无法生效修改后完后执行virsh start ansible即可重新启动虚拟机将raw格式的虚拟机装换成qcow2格式也可以起到压缩空间的作用,qcow2属于动态的空间会随着使用量的增加而增加,例如原来设定的空间为20G,那么做成qcow2格式的可能只有几个G,然后随着使用量的增加而增加,最后达到峰值20G禁止kvm虚拟机自启动命令:virsh autostart --disable centos7.0通过xml来恢复虚拟机:kvm虚拟机静态迁移:可以将B物理机器上的虚拟机的磁盘文件以及xml配置文件拷贝到A 机器上然后重新定义机器即可,例如:在A机器上执行:将B机器上的磁盘文件拷贝到A机器的指定目录下scp root@B机器:/home/centos.raw/home/scp root@B机器:/etc/libvirt/qemu/centos.xml/etc/libvirt/qemu/重新定义机器:virsh define /etc/libvirt/qemu/centos.xmlkvm虚拟机动态迁移:1.创建共享存储:(nfs)2.两台机器挂在共享存储3.启动动态迁移4.创建迁移互的配置文件5.重新定义虚拟机将vmware虚拟机导入到kvm中windows安装vmware后在安装目录下会有以vmdk结尾的镜像文件如图:此镜像即为vmware的镜像文件,上图中只有一个镜像文件表示创建时选择的是将磁盘存储为单个文件,如图:(建议创建时选择单个文件,可以提高磁盘性能)如果创建时选择的是多个文件,则需要使用命令将多个文件合并成一个文件,如图表示多个文件合并方法:以管理员身份运行cmd并进入到vmware安装路径下用vmware自带的工具vmware- vdiskmanager.exe来合并多个文件,命令如下vmware-vdiskmanager.exe -r "D:\CentOS7.vmdk" -t 0 "D:\centos7.vmdk"注意:合并的时候要以总文件来作为命令来执行不要以下面的0001、0002等文件作为命令行,执行上述命令后下面的分支自然会和总的文件合并到一起合并之后将磁盘文件拷贝到kvm宿主机目录下,然后将其格式转换成qcow2格式,例如Cen.img磁盘文件的格式即为qcow2装换之后可以通过virt-manager来启动虚拟机(直接本地导入存在的磁盘文件即可)选择刚才转换后的磁盘文件然后下一步即可打开虚拟机至此vmware中虚拟机导入kvm中成功windows虚拟机扩容:关闭Windows机器qemu-img resize win7.img +120G(原有磁盘镜像上添加空间即可)执行完成后进入计算机-管理-磁盘管理-新建简单卷即可linux系统内部kvm虚拟机扩容:内部虚拟机有两种格式raw和qcow2格式,本教程扩容方式采用新增一个磁盘的方式实现扩容(简单方便)1.首先创建磁盘空间文件:qemu-img create -f raw test.raw 10G, 表示新增一块磁盘并且空间大小为10G2.关闭要扩容的虚拟机 virsh shutdown centos63.编辑配置文件,virsh edit centos6如图可以看到,磁盘名称要改成vdb 然后添加cache=’none’即可4.启动虚拟机virsh start centos65.连接虚拟机后执行fdisk -l 查看磁盘信息发现多了/dev/vdb磁盘6.格式化磁盘:mkfs.ext4 /dev/vdb7.执行mount /dev/vdb /test挂载即可virsh autostart 机器名:开启自启动virsh autostart --disable 机器名关闭自启动。