zoukankan      html  css  js  c++  java
  • Kvm 简介 安装 使用 桥接网络

    KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:


    它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
    它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
    它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
    它需要支持虚拟化扩展的 CPU。
    它是完全开源的。官网

     
     
    安装组件介绍:
          1. KVM (名称来自英语: Kernel-basedVirtual Machine 的缩写,即基于内核的虚拟机)  是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。
            
    其基本结构由两部分组成:
            一个是KVM Driver ,是Linux 内核的一个模块,负责虚拟机的创建,虚拟内存的分配,虚拟CPU寄存器的读写以及虚拟CPU的运行等;

            
          2.  另一个部分是稍微修改过的Qemu,用于模拟PC硬件的用户空间组件,模拟I/O设备模型以及提供访问外设的途径
            qemu  全称 Quick Emulator 。 是独立虚拟软件,能独立运行虚拟机(根本不需要 kvm )。 kqemu 是该软件的加速软件。 kvm 并不需要 qemu 进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由 kvm 驱动。所以,大家不要把概念弄错了,盲目的安装 qemu  kqemu 
             
    当一起工作的时候,KVM管理CPU和MEM的访问,QEMU仿真硬件资源(硬盘,声卡,USB,等等)当QEMU单独运行时,QEMU同时模拟CPU和硬件。        
            从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(诸如动态迁移),都是由QEMU自己实现的。
            从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。
           诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;
            KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。
     
     
          3.  libvirt是目前使用最为广泛的对KVM虚拟机进行管理的工具和API。Libvirtd是一个daemon进程,可以被本地的virsh调用,也可以被远程的virsh调用,Libvirtd调用qemu-kvm操作虚拟机。
     
     
     
     
     
    一、安装准备
    1.确定机器有VT
           终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)
    grep svm /proc/cpuinfo (AMD芯片)
    不知道芯片的生产厂商则输入:egrep '(vmx|svm)' /proc/cpuinfo
    如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。

    2. 确保BIOS里开启VT
     Intel(R) Virtualization Tech [Enabled]
    如有必要,还需在BIOS中开启VT-d

    3. 确保内核版本较新,支持KVM
    用uname –r查看内核版本,如果在2.6.20以下的linux版本,需升级内核。

    我这里使用   CentOS release 6.3      内核版本  2.6.32-279.el6.x86_64
     
     
    二、安装KVM
    下面就Ubuntu和CentOS下安装使用KVM虚拟机做介绍:

    1.Ubuntu 安装
    用guest登陆,安装KVM的命令为:
    sudo apt-get install kvm qemu qemu-kvm virt-manager kernel-package linux-source kqemu-source build-essential
    kvm安装成功后会有/dev/kvm,如果无需图形管理器,只需要安装前三个即可。

    再来查看下KVM是否安装成功,执行:virsh -c qemu:///system list
    如果输入结果像下面这样的,那么成功了:
    Connecting to uri: qemu:///system
    Id Name State

    ----------------------------------


    2.CentOS中安装时
    注1:CentOS中安装时,先要选择Selinux为enable,使用命令
    #system-config-securitylevel-tui
    可查看或修改selinux的状态。

    注2: CentOS中用root登陆时则安装命令为:
    yum install kvm kmod-kvm qemu
    再装入kvm模块:modprobe kvm-intel (Intel机器) 或者 modprobe kvm-amd (amd机器)

    注3:可以用以下命令来检查是否装入kvm模块:
    /sbin/lsmod | grep kvm
    如果输出关于kvm版本的信息则已装入kvm模块

    注4: 安装好后,可使用qemu-kvm命令,输入该命令,如果系统显示未知的命令,可查看/usr/libexec中是否有qemu-kvm可执行文件,如果有,将其拷贝到/bin目录下即可。
           如果确实按照上面的步骤进行了,却在/bin,/usr/libexec,/usr/bin,/usr/sbin里都找不到qemu-kvm可执行文件,可执行以下命令:
    #yum provides "*/qemu-kvm"

    注5:安装新内核后,可能有部分软件版本过低,不兼容。比如firefox因版本过低,无法启动。
    CentOS下可使用如下命令更新该软件(以firefox为例):
    #yum update firefox

     
     
    三、使用KVM

    1.安装虚拟机图形管理工具——Virtual Machine Manager
    为方便期间我使用 centos图形界面工具 来操作创建虚拟机
    virt-manager 管理虚拟化的方法

    Virtual Machine Manager (virt-manager) 是一个轻量级应用程序套件,形式为一个管理虚拟机的命令行或图形用户界面 (GUI)。除了提供对虚拟机的管理功能之外,virt-manager 还通过一个嵌入式虚拟网络计算 (VNC) 客户端查看器为 Guest 虚拟机提供一个完整图形控制台。

    作为一个应用程序套件,virt-manager 包括了一组常见的虚拟化管理工具。这些工具已在表 1 中列出,包括虚拟机构造、克隆、映像制作和查看。virsh 实用程序不是 virt-manager 包的一部分,但它本身就具有很重要的价值。

     安装:yum install virt-manager.x86_64
     
    打开:GUI方式 菜单Applications->System Tools->Virtual Machine Management

     
     
    创建后后打开报错:
    Unable to open a connection to the libvirt management daemon.
     
    Libvirt URI is: qemu:///system
     
    Verify that:
     - The 'libvirtd' daemon has been started
     
     
    原因是libvirtd没有开启
    libvirtd其旨在为包括Xen、kvm在内的各种虚拟化工具提供一套方便、可靠的
    编程接口。当前主流Linux平台上默认的虚拟化管理工具virt-manager(图形化),virt-install(命令行模式)等均基于libvirt开发而成。
    Libvirt 库是一种实现 Linux 虚拟化功能的 Linux? API,它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品
     
     
    启动libvretd 
    # service libvirtd start
    Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference
                                                               [FAILED]

    启动失败,解决方法 更新文件
    # yum upgrade device-mapper-libs
     
     
     
     
    2.创建虚拟机
    使用图形界面创建虚拟机

    本节中的步骤创建两个虚拟机。

    1. 安装一个基于 Linux? 的操作系统 debian,下载镜像文件
    2. 要开始虚拟机创建过程,使用 sudo 以 root 用户启动 virt-manager
      $ sudo virt-manager

      打开 virt-manager 窗口,可通过该窗口连接到本地 QEMU 虚拟机管理程序(通过右键单击 localhost (QEMU),然后单击 Connect 来完成)。如果有更多虚拟机管理程序可用,那么它们应在这里列出,并可通过 libvirt API 连接。

      图 2. Virtual Machine Manager 窗口
      Virtual Machine Manager 窗口
    3. 当连接到本地 QEMU 虚拟机管理程序时,单击 Create Virtual Machine 图标,这将启动 VM Construction Wizard。
    4. 将此虚拟机命名为debian8-71,并从一个本地 ISO(已在上面下载)发起您的操作系统安装。
      图 3. 创建一个虚拟机
      创建一个虚拟机
    5. 单击 Forward 后,定义您的虚拟机的安装文件并为操作系统选择一个类型。在本例中,指定您的 ISO 文件,从操作系统类型列表中选择Linux,然后从版本列表中选择 iso 文件
      图 4. 定义安装媒体
      定义安装媒体
    6. 定义虚拟机的执行环境。为此虚拟机分配 1GB 内存和一个单一 CPU。这些选择需要一些技巧,因为内存大小应适合您的虚拟机(对于这个特定实例,1GB 有点大材小用)。CPU 可帮助(而且有时候会损害)操作系统。如果操作系统有效利用了多个核心,那么这些核心可分发给虚拟机。
      图 5. 定义执行环境
      定义执行环境
    7. 定义虚拟机的存储环境。在本例中,请求 virt-manager 创建您的虚拟磁盘(而不是由您自行提供),并动态调整它的大小(最高 1 GB)。请注意,该磁盘选项可能影响安装和执行速度。如果将磁盘指定为动态,它最开始是一个较小的主机文件,然后随着虚拟机对它的使用而扩展。此动态过程需要比较少时间来管理。备用选择是 raw,这是一个具有主机操作系统(虚拟机管理程序)的完整大小的磁盘映像。这里的代价是需要更多主机磁盘空间,但虚拟机的运行速度应该会更快,这是因为不需要动态调整过程。
      图 6. 定义存储环境
      定义存储环境
    8. 作为最后一步,virt-manager 提供了该虚拟机目前为止的摘要信息,从而允许您定义网络化选项(选择默认值:网络地址转换 [NAT])。请注意,它还提供了额外的选项和信息,比如虚拟磁盘的物理位置。您也可以定义自己想要的基础处理器的类型。在本例中,选择 AMD i686 作为架构,但也可选择 x86-64。
      图 7. 虚拟机的最后检查
      虚拟机的最后检查
    9. 当单击 Finish 时,启动虚拟机的过程就会开始。它首先引导一个 CD-ROM(您在其中提供了安装映像),这使得虚拟机能够安装该 Linux。当安装完成时,重新启动(这会自动断开 CD-ROM)之后就会得到一个正常运行的虚拟机。请注意,此窗口只提供了虚拟机的视图,并允许您与它交互。您可关闭此窗口,但虚拟机会继续在后台运行(并且可在 virt-manager root 窗口中看见它)。

     
     
     
     

    3.更改虚拟机网络类型
            KVM:在KVM下运行的VM默认的网卡采用NAT的方式进行连接,无法与外界进行通讯,但是可以与同台KVM下的其他VM进行通讯,为了使VM与其他网络主机进行通讯,需要将网卡模式由NAT改为桥接的方式。

     Kvm 简介 安装 使用 - 朝鲜程序员 - 朝鲜程序员的博客

    网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据

    网络规划:

    KVM宿主机   CENTOS6.3      IP:10.0.7.211
    虚拟机            debian8.71        IP:10.0.7.212

     

     

    修改宿主机网络文件 ifcfg-eth0

    DEVICE="eth0"

    BOOTPROTO=none

    NM_CONTROLLED="yes"

    ONBOOT=yes

    TYPE="Ethernet"

    UUID="d89a9846-1e07-488a-b1d1-ee8ba9505b55"

    HWADDR=78:45:C4:34:07:48

    #IPADDR=10.0.7.211

    #PREFIX=24

    #GATEWAY=10.0.7.254

    DNS1=114.114.114.114

    BRIDGE=br0

     

     

     

    新创建一个网络文件 ifcfg-br0

    DEVICE="br0"

    BOOTPROTO=static

    NM_CONTROLLED="yes"

    ONBOOT=yes

    TYPE="Bridge"

    UUID="d89a9846-1e07-488a-b1d1-ee8ba9505b55"

    HWADDR=78:45:C4:34:07:48

    IPADDR=10.0.7.211

    PREFIX=24

    GATEWAY=10.0.7.254

    DNS1=114.114.114.114

    DEFROUTE=yes

     

    重启网路……

     

    在宿主机图形管理软件Virtual Machine Manager 中设置虚拟机网卡类型:

    Kvm 简介 安装 使用 - 朝鲜程序员 - 朝鲜程序员的博客

     

     

     

    进入虚拟机配置网络:

    vi /etc/network/interface 


    # 启动系统激活设备
    # Loop回环地址
    auto lo
    iface lo inet loopback 


    # 启动系统激活设备
    # 网卡eth0设置为Static类型
    auto eth0
    iface eth0 inet static
    # 指定IP地址、子网掩码、网关
    address 10.0.7.212
    netmask 255.255.255.0
    gateway 10.0.7.254

     

     

     注意,要将NetworkManager这个服务给Stop了,然后重启网络

    centos:
    service NetworkManager stop
    chkconfig NetworkManager off
     /etc/init.d/network restart
     
     
    debian:
    service NetworkManager stop
    update-rc.d NetworkManager remove
    /etc/init.d/networking restart
     
     
     
     
     
     
  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896740.html
Copyright © 2011-2022 走看看