zoukankan      html  css  js  c++  java
  • [Linux 虚拟化] Linux 中使用 KVM

    本文链接: http://www.php-oa.com/2010/02/22/ubutnu-kvm-vmware.html

    听讲XEN很快就要从LINUX内核中去掉,redhat和Ubuntu也大力的在推广KVM,所以在Ubuntu下整了一下KVM,相当容易使用,基本比Vmware还要容易,但性能好上很多倍,因为他是半虚拟的,很大程序上可以直接使用真实的硬件.

    RedHat 红帽CTO Brian Steven在一次记者招待会说:“我们致力于Xen,RHEL 5有10年的生命周期,因此会有一个较大的交叉过渡.我们将在Red Hat 6中全面使用KVM,但KVM目前已经准备就绪,完全可以正式投入到数据中心和云中,不用再等待了!”

    KVM要使用2.6.20以上的内核才行.Ubuntu到是不用担心,它基本一直使用的是最新的内核.

    需要关心一点就是,你的硬件,CPU是不是支持半虚拟(VT/AMD-V),使用下面的命令可以查看是否支持

    1
    grep -E '(vmx|svm)'   /proc/cpuinfo


      在ubuntu中安装KVM


    我原来以为KVM很难装,没想到现在容易成这样了.太方便了

    1
    sudo apt-get install kvm libvirt-bin ubuntu-vm-builder  bridge-utils kvm-pxe uml-utilities

    安装KVM在ubuntu中的GUI管理软件,象我,拿ubuntu当桌面,就不使用命令…呵呵

    1
    sudo apt-get install virt-manager virt-viewer

    需要设置一下网桥

    1
    sudo /etc/init.d/networking stop

     我们来修改一下配置

    1
    sudo vim /etc/network/interfaces

     静态IP和使用DHCP是不一样的,DHCP修改成下面这样

    1
    2
    3
    4
    5
    6
    auto br0
    iface br0 inet dhcp
    bridge_ports eth0
    bridge_stp off
    bridge_fd 5
    bridge_maxwait 5


    static:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    auto br0
    iface br0 inet static
    address 192.168.0.xxx
    network 192.168.0.0
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    bridge_ports eth0
    bridge_stp off
    bridge_fd 5
    bridge_maxwait 5


    完事后
    进入ubuntu的“应用程序”-> “系统工具” -> “虚拟系统管理”就可以全GUI来玩kvm啦

     

    RedHat Centos 安装 KVM

    在 Centos 中安装 kvm 也一样很容易,

    1. 安装 KVM 和 virtinst (一个创建 virtual machines 的工具 )

    1
    yum install kvm kmod-kvm qemu libvirt python-virtinst

     

     2. 装完后记的重起,重起后检查模块是否有加载

    1
    2
    3
    $ lsmod | grep kvm
    kvm_amd                50452  0
    kvm                   109264  1 kvm_amd

     也可以使用 virsh 来测试

    1
    virsh -c qemu:///system list

     

     3. 安装桥接管理的工具

    1
    yum install bridge-utils

     

     4. 安装 GUI 的管理软件

    1
    yum install virt-manager

     

    KVM 的高级管理

    KVM 现在相当成熟,在三个比较常用管理程序(我所知道的),大家平时玩玩的话,就用 GUI 来管理就好了,GUI 都会我就不详细写了:
    virt-manager: 这个我最常用,是 GUI 的,需要 x windows 的支持.这个是 RedHat 开发,大家想了解可以到  http://virt- manager.et.redhat.com/ 上看看
    virt-install:python 写的文字介面的管理 kvm 的程序,这个也是Red Hat 开发的哦.
    ubuntu-vm-builder:这个是 Canonical (Ubuntu)开发的文字的管理程序.

     

    virt-install 的基本使用

    (1. 安装 virt-install 和 图形化的连接软件 virt-viewer

     

    1
    sudo apt-get install python-virtinst virt-viewer


    详细使用可以 man virt-install

     

    (2. virt-install 安装虚拟系统

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $ virt-install \
    --connect qemu:///system \
    --name= 虚拟机器的名字 \
    --ram=设置内存的大小 [MB] \
    --os-type=操作系统的类型 [linux ] \
    --os-variant=操作系统的版本 [centos 5.4] \
    --hvm [全虚拟化( hvm )与半虚拟化( paravirt  )选择其一] \
    --paravirt  [全虚拟化( hvm )与半虚拟化( paravirt  )选择其一] \
    --accelerate  [KVM 加速器] \
    --cdrom=系统安装的CD路径 [*.iso] \
    --file=虚拟硬盘的路径 [*.qcow2] \
    --file-size=虚拟硬盘的大小 [GB] \
    --bridge=br0 \
    --vnc \
    --noautoconsole  \
    --debug

     注意 Windows 只能用有全虚拟化( hvm )与半虚拟化( paravirt  )中选择 hvm.hvm 的意思是指硬件辅助的虚拟化,就是需要所谓的 VT 支持的.

     建出来的虚拟机会在 /etc/libvirt/qemu/虚拟机器名称.xml 有个配置文件

    (3. 使用 virt-install  启动虚拟的机器

    进入 virsh 中,所有 virsh 的操作都要先进入这个

    1
    virsh

     管理启动

    1
    2
    3
    virsh# start 虚拟机器名字
    virsh# list  --all
    virsh# quit

     

    (4. 安装管理查看 virt-install 安装后的系统是否正常

    1
    virt-viewer --connect qemu+ssh://帐号@虚拟机实体主机IP    要连接的虚拟机器名字

     

    virt-install 的其它使用

    在原来的基础上复制一个新的虚拟机器

    1
    2
    virt-clone  --connect=qemu:///system \
    -o 旧的虚拟机器名称  -n 新的虚拟机器名称  -f  新的虚拟硬碟路径 [*.qcow2]

    查看所有虚拟出的机器

    1
    virsh# list --all

    dump 虚拟出的机器配置文件

    1
    virsh# dumpxml 虚拟出的机器名称  /tmp/虚拟出的机器配置文件 [*.xml]

    使用现有的虚拟出的机器配置文件建立虚拟新机器

    1
    virsh# define  /etc/libvirt/qemu/虚拟出的机器配置文件 [*.xml]

    移除虚拟出的机器

    1
    virsh# undefine 虚拟出的机器名称

    关闭虚拟出的机器

    1
    virsh# shutdown 虚拟出的机器名称


    关掉虚拟出的机器的电源

    1
    virsh# destory 虚拟出的机器名称

    KVM的小技巧


    1.提升KVM的网络和硬盘IO在linux中的性能
    官方提供了一个叫kvm-guest-drivers-windows的网卡驱动很不错,虚拟机的启动参数那里加上model=virtio这个参数,界 面中也是可以设置的.硬盘也有virtio的驱动,记的使用.在Virt-manager 中可以选择 virtio disk.获得高性能的网络和磁盘操作
    virtio的网卡驱动的地址: http://sourceforge.net/project/showfiles.php?group_id=180599&package_id=267943
    virtio的硬盘驱动的地址:http://www.linux-kvm.com/sites/default/files/viostor.iso

    2.和真实机器中资料共享
    这个是超级方便的,不需要象VBox搞个文件夹,只要在Host的设置中直接给真实的Dev的块设备直接设定到Guest的配置中,然后在进入kvm中的系统,直接mount就行

    3.转换VMWare的image让KVM能使用
    我们先要安装一个小软件virt-goodies.

    1
    sudo apt-get install virt-goodies

    然后使用vmware2libvirt来给VMWare VM的基本资料vmx转成KVM可以读入的XML. 如

    1
    vmware2libvirt -f myvm.vmx > myvm.xml

    在转VMWare VM的disk image, 使用qemu-img转成KVM能读的文件.

    1
    qemu-img convert -f vmdk myvm.vmdk -O qcow2 myvm.qcow2

    可能还需要修改一下vmx转成的xml,

    disk中的target dev,在VMWARE是ide(target dev=’hda’ bus=’ide’)可能要修改成scsi(target dev=’sda’ bus=’scsi’),我们看能不能找到ROOT就知道是不是用对了;
    bridge mode, 给interface type=’network’修改成interface type=’bridge’, 而source network=’default’修改成source bridge=’br0′.

    qcow选项,则会创建QCOW(写时复制)格式
    修改后给VM的配置加入到libvirtd中.

    1
    2
    virsh -c qemu:///system define myvm.xml
    virsh -c qemu:///system list --all


    FAQ:
    1.如果在安装的时候见到"FATAL: Error inserting kvm_intel"
    这是因为没有在BIOS中打开virtualization.需要进入BIOS中打开,然后断电重起.进入系统后打modprobe kvm-intel来加载模块
     


       先在虚拟机中打开windows自己的远程桌面,然后给用户设定密码,然后运行 rundll32 netplwiz.dll,UsersRunDll 启 用windows的自动登录.(这三步必不可少,否则rdesktop是无法连上winxp的)
       重新启动虚拟机,当听到winxp后台登录的声音后,即可用rdesktop远程登录:

    rdesktop localhost:3389 -u *** -p *** -g 1280×700 -r sound:local

     

     

    -u winxp的用户名, -p winxp的密码, -r sound:local  启用声音

    现在可以看到桌面了吧.是不是灰常流畅呢?鼠标、键盘 都非常完美啊,剪贴板也可以公用哦.堪比装了tools的virtualbox,但是比后者占用的资源要少的多.

  • 相关阅读:
    map迭代器
    线段树——校门外的树
    并查集——C
    并查集
    数论—— LCM
    【动态规划】合唱队形
    线段树——D
    线段树——E
    逆元,exgcd,欧拉定理,费马小定理
    待学知识点
  • 原文地址:https://www.cnblogs.com/licheng/p/2534901.html
Copyright © 2011-2022 走看看