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
     
     
     
     
     
     
  • 相关阅读:
    一个关于java线程的面试题
    【Feature】初探Feature
    Foreign Keys in the Entity Framework
    JS keycode
    SQLyog8.3 . 8.4 Enterprise/Ultimate crack
    Win7下使用toad连接oracle出现can't initialize OCI 1
    ADO 数据类型转换表
    简单Jscript(ASP)模版操作文件
    自适应宽度的左右结构DIV+CSS
    一个比较好用的 classic asp Jscript 框架 SmartAsp
  • 原文地址:https://www.cnblogs.com/centos2017/p/7896740.html
Copyright © 2011-2022 走看看