当前位置: 首页 > Linux

Linux虚拟化技术KVM

时间:2023-04-06 02:55:28 Linux

在Windows平台上,我们习惯使用VmWare或者virtualbox来实现虚拟化。虽然有Linux版本,但大多数公司选择使用KVM进行Linux平台虚拟化,所以学习掌握KVM是必备技能。安装KVM以centos为例,以下是安装KVM虚拟化的命令。yuminstall-yqemu-kvmlibvirtvirt-installbridge-utils这么多软件的功能是什么?软件功能qemu-kvm集成了QEMU和KVM的一个软件。libvirt封装了QEMU接口,可以更方便的操作虚拟机,并提供多种编程语言的SDK。virt-install是一个用于创建虚拟机的命令行工具。bridge-utilsLinux网桥,用于配置虚拟机的网桥网络。kvm、qemu、qemu-kvm和libvirt之间有什么关系?KVM(KernelVirtualMachine)是Linux的内核驱??动模块。需要CPU的支持,采用硬件辅助虚拟化技术Intel-VT和AMD-V;与内存相关的技术,如Intel的EPT和AMD的RVI技术,使其能够将Linux主机变成一个Hypervisor(虚拟机监视器)。QEMU是纯软件实现的虚拟机。可以模拟CPU、内存、磁盘等硬件,让虚拟机认为底层是硬件。其实这些都是QEMU模拟出来的。虚拟机的所有操作都必须由QEMU翻译。层,这导致QEMU本身的性能很差。qemu-kvm是QEMU集成了KVM,将CPU虚拟化和内存虚拟化交给KVM,模拟IO设备,如网卡、磁盘等。经过这一套组合拳之后,性能损失就大大减少了。与直接使用硬件相比,造成的损失约为1%-2%。libvirt是目前使用最广泛的用于管理KVM虚拟机的工具和API。Libvirtd是一个守护进程,可以被本地virsh或远程virsh调用。Libvirtd调用qemu-kvm来操作虚拟机。启动libvirtsystemctlstartlibvirtdsystemctlenablelibvirtd如果不想使用命令行工具管理虚拟机,可以安装virt-manager。yuminstall-yvirt-manager在支持x11转发的ssh客户端(例如:MobaXterm),直接输入virt-manager即可启动。虚拟网络类型和vmware类型,kvm也支持多种网络类型,主要分为三种。在NAT模式下,虚拟机需要向宿主机发送流量,宿主机将网络信息转换后再发送出去。外部机器无法感知虚拟机的存在。这样宿主机就相当于一个路由器,所以在宿主机上就会有一个和虚拟机在同一网段的IP,虚拟机的网关地址就是宿主机的IP。主机模式虚拟机只能相互访问,不能访问宿主机。这种方式类似于NAT方式,但是它没有和虚拟机在同一网段的IP,所以虚拟机无法通过宿主机访问外网。桥接模式虚拟机和宿主机关联一个网桥,所以虚拟机可以和宿主机在同一网段,外部机器可以直接访问虚拟机,虚拟机也可以使用网桥访问外部网络。还有一种模式在openstack等云平台上被广泛使用。网桥绑定的物理网卡没有IP,交换机对应的端口配置为trunk模式。达到隔离和互连的目的。NAT模式和主机模式都不需要单独配置。接下来,让我们看看如何配置桥接网络。配置桥接网络物理网卡绑定到桥接后,网络会断开,所以我们需要给桥接配置原来的IP。#进入网卡配置文件夹cd/etc/sysconfig/network-scripts/#复制原网卡配置文件为网桥网卡cpifcfg-enp134s0f0ifcfg-br0修改ifcfg-br0中的TYPE=Ethernet为TYPE=Bridge,最终效果如下:DEVICE=br0ONBOOT=yesBOOTPROTO=noneTYPE=BridgeIPADDR=172.16.0.52PREFIX=16GATEWAY=172.16.0.1DNS1=114.114.114.114修改ifcfg-enp134s0f0文件删除IPADDR=NETMASK=GATEWAY=行,和在末尾添加0,BRIDGE=br最终效果如下:DEVICE="enp134s0f0"ONBOOT=yesBOOTPROTO=noneTYPE=EthernetBRIDGE=br0最后重启网络。systemctlrestartnetwork查看网络信息,还可以看到网桥上配置了IP,网桥关联了一块物理网卡。[root@localhostnetwork-scripts]#ipa8:enp134s0f0:mtu1500qdiscmqmasterbr0stateUPgroupdefaultqlen1000link/ether74:a4:b5:01:04:22brdff:ff:ff:ff:ff:ffinet6fe80::76a4:b5ff:fe01:422/64作用域链接valid_lftforeverpreferred_lftforever17:br0:mtu1500qdiscnoqueuestateUPgroupdefaultqlen1000链接/以太74:a4:b5:01:04:22brdff:ff:ff:ff:ff:ffinet172.16.0.52/16brd172.16.255.255范围全局br0valid_lft永远preferred_lft永远inet6fe80::76a4:b5ff:fe01:422/64scopelinkvalid_lftforeverpreferred_lftforever[root@localhostnetwork-scripts]#brctlshowbridgenamebridgeidSTPenabledinterfacesbr08000.74a4b5010422noenp134s0f0创建虚拟机有3个选项Createavirtualmachinewiththe命令virt-install虚拟机比较方便快捷,但是对新手不友好,很多参数不知道怎么设置。libvirt是使用libvirt提供的api接口创建的,将通过这种方式开发虚拟化平台。virt-manager使用图形界面创建虚拟机。这种方法比较简单。只要会用vmware,就会用virt-manager。因此,我推荐使用virt-manager创建虚拟机。过程很简单,就不贴截图了。管理虚拟机和操作虚拟机的一些常用命令#列出正在运行的虚拟机virshlist#列出所有虚拟机virshlist--all#启动虚拟机virshstarttest#关闭虚拟机virshshutdowntest#强制停止虚拟机virshdestroytest#彻底销毁虚拟机,虚拟机的配置文件会被删除,但是虚拟磁盘不会被删除virshundefinetest#设置虚拟机在宿主机开机时启动virshautostarttest#去掉开机启动virshautostart--disabletest#挂起虚拟机virshsuspendtest#恢复挂起的虚拟机virshresumetest#查看虚拟机的VNC端口,获取到vnc端口后可以使用vncviewer等工具查看访问虚拟机virshvncdisplaytest#导出虚拟机xml配置文件virshdumpxmltest>/root/test.xml#修改虚拟机配置文件virshedittest参考https://blog.51cto.com/changf...