zoukankan      html  css  js  c++  java
  • 虚拟化技术KVM

    1》虚拟化技术:
      计算机虚拟化技术是多种技术的综合实现,它包括硬件平台,操作系统,存储以及网络等,简单地说,虚拟化技术就是在单台主机上可以虚拟多个虚假主机,并可以在这些虚拟主机上运行不同的操作系统平台,虚拟化技术的出现可以节约大量的硬件资源与能源消耗,降低资金成本,虚拟化现在已经是每个企业必有的项目;目前所提供的比较成熟的虚拟化解决方案主要有VMware,Xen,KVM以及Kyper-V,虚拟化技术通过Hypervisor动态模拟与分配计算机硬件资源给虚拟机操作系统,由于Hypervisor可以模拟多个硬件资源给Guest OS,因而对Guest OS而言,就像运行在独立,真实的硬件资源上一样,架构如下图所示:
                        *****应用层*****
                    **Guest OS Guest OS Guest OS**
                    ****** Hypervisor(虚拟机监控器)***
                        *** 硬件层 ***

              1>VMware虚拟化技术:
          VMware是全球数据中心解决方案的领导品牌,它为我们提供了高性能,高可用,管理方便的虚拟机管理程序,是目前大多数企业虚拟化环境部署的首选方案,VMware虚拟化的工作原理是直接在计算机硬件或主机操作系统上插入一个精简的软件层,该软件层包含一个以动态和透明方式分配硬件资源的虚拟化管理程序,多个操作系统可以同时运行在单台物理机上,彼此之间共享硬件资源;由于是将整台计算机(包括CPU,内存,操作系统和网络设备)封装起来,因此,虚拟机可与所有标准的x86操作系统,应用程序和设备驱动程序完全兼容,可以同时在单台计算机上安全运行多个操作系统和应用程序,每个操作系统和应用程序都可以在需要时访问其所需的资源;
          VMware虚拟化产品最大的优势在于其完善的虚拟化管理平台以及可靠的基础架构,为企业计算环境提供完善,稳定,可靠的虚拟技术;VMware虚拟化产品的不足主要包括:首先,VMware虚拟化技术主要针对的是x86架构,对于复杂的企业运算环境,VMware无法满足所有计算机主机的需要,其次VMware在云计算方面的发展略显迟缓,在性能与容灾方面表现不容,最后,VMware是商业产品,用户需要为此支付大量的许可费用;

               2>Xen虚拟技术:
          Xen是由剑桥大学开发的开源虚拟机监控器,Xen的目标是在单台主机上运行上百台全功能的虚拟机,Xen支持半虚拟化与全虚拟化技术,半虚拟化技术的性能要比全虚拟化技术高很多,全虚拟化技术是通过中间层软件模拟真实的硬件设备,最终虚拟机使用模拟设备时就需要中间层将相应的指令转换为物理硬件指令进行操作,也就是说虚拟机无法直接发送操作指令给物理硬件,必须经过模拟软件转换代码后才可以发送给物理硬件执行具体操作;而半虚拟化技术则可以实现部分虚拟机与部分硬件直接通信,虚拟机可以直接发送操作指令给部分硬件设备,这样虚拟机的效率就可以提升很多倍,Xen的优势在于开源且技术非常成熟,但随着RedHat以及Ubuntu目前已经将系统默认的虚拟组件更新为KVM,所以Xen的市场已经开始受到影响;
       3>KVM虚拟化技术:
          KVM是基于x86架构上Linux操作系统的全虚拟化解决方案,由于KVM本身就工作于内核环境中,所以执行效率要比传统意义上的虚拟化技术高很多,KVM虚拟化需要Intel VT或AMD-V技术的支持,可以使用下面的命令确定本机CPU是否支持以上两种虚拟化技术:
                        egrep ‘(vmx|svm)’ /proc/cpuinfo
          相对于Xen而言,KVM从Linux 2.6.20后已经集成到内核模块中,使用Linux内核作为虚拟调度器管理虚拟机,更直接的硬件调度代表更高的效率,KVM核心代码也非常短信精湛,未来KVM将会慢慢成为主流虚拟化技术;

    2》KVM虚拟化应用案例:
      1>安装KVM组件:
        安装KVM组件需要先确保系统已经满足了最低安装要求,部署KVM虚拟化需要通过BIOS开启CPU的虚拟化功能,确保至少6GB的磁盘剩余空间以及2GB内存           空间,KVM虚拟机支持的存储方式有:本地磁盘文件,物理磁盘分区,LVM分区,iSCSI磁盘,GFS2文件系统,光纤LUNs设备等;
        1)部署操作系统时安装KVM组件:
            KVM虚拟化组件可以在安装操作系统的过程中选择Virtualization,Virtualization Client,VirtualizationPlatform,Virtualization Tools组件包;
            通过Kickstart方式安装系统时需要在Kickstart配置文件中加入如下内容:
            @Virtualization
            @Virtualization-Client
            @Virtualization-Platform
            @Virtualization-Tools
        2)在现有的操作系统平台上安装虚拟化组件:
            配置YUM源后,可以直接通过组包来安装虚拟化组件,列如如下命令:
            yum groupinstall “Virtualization Tools”

              2>创建虚拟机操作系统:
          系统中的虚拟化组件安装完成后,就可以创建虚拟主机了,如果安装了图形环境,就可以用virt-manager命令开启KVM管理器界面,单击“NEW”按钮创建                虚拟主机,也可以通过命令行工具virt-install命令直接安装部署虚拟主机;
          1)使用图形管理工具创建虚拟机:
            virt-manager是系统所提供的虚拟机管理程序,用来通过图形创建以及管理虚拟机,下面介绍virt-manager创建虚拟机的具体方法:
            第一步:在命令终端输入virt-manager命令开启图形管理程序;

                                    

                                       注意:kvm 安ERROR Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

                /etc/init.d/messagebus restart

                        第二步:选择hypervisor并单击“Connect”按钮,连接hypervisor,默认为qemu,默认连接的是本机hypervisor,选择Connect to remote host,在host框中输入计                                  算机主机名或IP地址后,也可以连接其他主机的hypervisor;                                     

                                 

                        第三步:单击“Create a new virtua machine”按钮,开启新建虚拟机向导,新建虚拟机向导中将提示进行以下内容的设置;
              **虚拟机名称以及安装方式,安装方式可以选择ISO,光盘,PXE等方式;  

                                   

                                **安装介质路径,选择具体的光驱或ISO文件路径,以及操作系统类型;

                                   

                                 **配置内存与CPU参数;

                                    

                                       **配置存储参数,可以选择创建新的虚拟存储文件,也可以选择使用已存在的存储设备,默认虚拟机镜像文件路径为/var/lib/libvirt/images;

                                      

                                     **配置网络,架构以及其他硬件参数,网络选择桥接可以实现虚拟机直接访问外部网络; 虚拟机选择桥接网络时,需要宿主主机创建一个共享的                                   桥接网络设备,也就是所谓的网桥,如果宿主主机的物理网卡名称为eth0,则创建虚拟桥接设备的具体步骤如下:

                                      

                                     

                                       查看网卡桥接:

                                        

                                      

                        第四步:安装部署虚拟机操作系统,虚拟主机部署完成后,可以通过硬件信息按钮查看该虚拟机硬件的信息;

    3》监控虚拟机操作系统:
      1>修改监控属性:
        使用virt-manager的属性窗口可以修改虚拟主机的性能监控属性,开启virt-manager程序后可以选择Edit菜单下的Preferences子菜单,我们可以勾选Disk I/O与            Network I/O选项启用磁盘与网络接口性能查询功能;                 

                  

                 2>监控图形:
          打开virt-manager程序,单击view菜单下的字菜单,根据需要决定是否勾选CPU U撒个,Disk I/O, Network I/O,就可以显示效果图;

                    

                   3>查看虚拟机详细信息:
            virt-manager还可以查看虚拟机连接的详细信息 ,通过Edit菜单下的Condition Details,我们可以进一步查看hypervisor,真实主机CPU以及内存使用情                          况,虚拟网络设置,存储池设置以及网络接口信息;    

                         

      4》虚拟存储:
        KVM存储池是被libvirt所管理的文件,目录或存储设备,存储池可以位于本地,也可以通过网络共享,存储池最终可以被虚拟主机所使用,默认libvirt使用基于目录的存储池设计,/var/lib/libvirt/images目录就是默认的存储池;本地存储池可以是本地的一个目录,磁盘设备,物理分区或LVM卷,但本地存储池不适合于大规模产品部署,也不支持虚拟机迁移功能,网络共享存储池使用标准的网络协议进行存储设备的共享,它支持SAN,IP-SAN,NFS,GFS2等协议,在KVM虚拟化技术中 ,存储池可以包含多个存储卷,对虚拟主机而言,这些存储卷将被识别为物理硬件存储设备;
    下面将以目录存储以及共享NFS存储为例,演示KVM存储池及存储卷的创建流程:
      1>创建基于目录的虚拟存储池与存储卷:
        1)创建目录:
           mkdir /var/lib/libvirt/test
        2)修改文件安全相关属性:

                     

                      注意: 安装semanage工具的方法:
            yum -y install policycoreutils-python

                     3)创建存储池:
          virt-manager
          存储池名称为test,类型为基于目录的存储池,还需要输入存储池目录的具体路径;

                            

                            

                            

                        4)创建存储卷:
            完成存储池的创建后,我们就可以在池中创建存储卷了,单击选择需要创建卷的存储池,根据提示输入卷名称,格式类型,最大存储空间,实际分配                          空间;

                             

                               

              2>为虚拟机添加使用存储设备:
          存储卷创建完成后,我们的虚拟机就可以使用这些卷了,通过虚拟机管理器选择一个虚拟机双击打开控制窗口,点选设备列表,显示设备列表,选择“Add              Hardware”按钮添加新的设备,在添加虚拟硬件窗口中选择Storage存储设备,因为我们已经为虚拟机创建好了存储卷设备,因此我们选择已经存在的存储空间
                ,并输入存储卷的绝对路径,进入虚拟机操作系统,通过fdisk查看磁盘信息将包含刚刚添加的存储卷设备,标记为/dev/vdb;        

                    

                   下面将演示如何在KVM虚拟化环境中创建基于NFS的存储池以及存储卷设备,这里假设已经准备好了一台NFS共享服务器:
          1)创建存储池:
               与基于目录的存储池类似,我们创建一个新的存储池,第一步依然是填写存储池名称以及类型;第二步根据实际情况填写NFS服务器主机名或IP地址                      (192.168.0.254),服务器共享目录(/nfs),本地挂载点(/var/lib/libvirt/nfs);

                            

                           

                 2)创建逻辑卷:
          与基于目录的存储卷类似,我们通过“New Volume”按钮创建存储卷,根据提示输入卷名,格式类型,最大存储容量,分配存储容量; 

                        

    5》虚拟网络设置:
        KVM虚拟化使用一种称为虚拟交换的技术实现虚拟机的网络互联,虚拟交换是运行在宿主主机上的一个软件结构,虚拟主机通过与这个虚拟交换进行直连实现与外界通信,当我们部署完成虚拟化环境后,libvirt进程会在宿主主机上自动创建一个默认的虚拟交换virbr0,我们可以通过ifconfig命令查看该虚拟交换设备的详细信息;

               

                   虚拟交换可以运行在NAT模式,路由模式与独立模式,默认情况下libvirtd进程使用的是NAT作为虚拟交换的工作模式:
        NAT模式:NAT模式使用的是IP欺骗技术,该技术可以使虚拟主机使用宿主主机的IP地址与外部主机通信,此时虚拟主机之间不管是相同网段还是不同网段都                                 可以互相通信,但默认位于宿主主机外部的计算机设备不可以通虚拟交换设备连接的虚拟机通信,也就是说虚拟主机不可以连接真实机外面的其他                                主机;
        路由模式:路由模式虚拟交换将与真实设备的物理网络相连接,实现数据包的出站与入站,宿主主机将承担路由的角色;
        独立模式:独立模式使每个虚拟交换设备都是一个独立的网络,并且与宿主主机也是相互独立的,连接在相同虚拟交换设备的虚拟主机是可以进行通信的;
          1>创建新的虚拟交换网络:

                                 

                                 

                                 

                                 

                                 

                                

                         创建完虚拟交换后,所有的虚拟主机都可以添加虚拟网卡接口连接该虚拟设备,打开虚拟主机后,在硬件列表下方使用Add Hardware按钮添加虚拟网络接               口,选择Network网络设备,在右侧填写该网络接口需要连接的宿主主机的虚拟交换设备,除此之外,我们还需要填写该虚拟主机MAC地址以及设备驱动方                   式;

                     

  • 相关阅读:
    批量新增百万条数据 十百万条数据
    sqlserver 组内排序
    EF ++属性会更新实体
    Entity Framework Core: A second operation started on this context before a previous operation completed
    abp Cannot access a disposed object. A common cause of this error is disposing
    abp xunit Can not register IHostingEnvironment. It should be a non-abstract class. If not, it should be registered before.”
    hangfire enqueued but not processing(hangfire 定时任务入队列但不执行)
    EF 更新实体 The instance of entity type 'BabyEvent' cannot be tracked because another instance
    datatable to entiy list 不支持可空类型和枚举类型
    webapi 设置不显示接口到swaggerUI
  • 原文地址:https://www.cnblogs.com/xiaocheche/p/7607747.html
Copyright © 2011-2022 走看看