zoukankan      html  css  js  c++  java
  • [ kvm ] 学习笔记 5:QEMU-KVM 命令详解

    1. QEMU、KVM 、QEMU-KVM

    QEMU 提供了一系列的硬件模拟设备(cpu、网卡、磁盘等),客户机指令都需要QEMU翻译,因此性能较差。KVM 是Linux 内核提供的虚拟化模块,负责CPU和内存的虚拟化,但是缺少I/O设备的虚拟化。QEMU-KVM 就是 KVM 与 QEMU 的结合,KVM 负责CPU虚拟化+内存虚拟化,QEMU 模拟其他I/O设备。

    2. QEMU-KVM 命令详解

    2.1 qemu-kvm 命令基本格式

    qemu-kvm 工具命令格式如下:

    qemu-kvm [options] [disk_image]
    

    其中,opions 是各种选项、参数,disk_image 是客户机的磁盘镜像文件(默认被挂载为第一个 IDE 磁盘设备)。

    2.2 CPU 相关的参数

    (1)-cpu 参数

    指定CPU模型,默认的 CPU 模型为 qemu64,"-cpu ?" 可以查询当前 qemu-kvm 支持哪些 cpu 模型。

    [root@192.168.118.14 ~]#qemu-kvm -cpu ?
    x86           qemu64  QEMU Virtual CPU version 1.5.3                  
    x86           phenom  AMD Phenom(tm) 9550 Quad-Core Processor         
    x86         core2duo  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz 
    x86            kvm64  Common KVM processor                            
    x86           qemu32  QEMU Virtual CPU version 1.5.3                  
    x86            kvm32  Common 32-bit KVM processor                     
    x86          coreduo  Genuine Intel(R) CPU           T2600  @ 2.16GHz 
    x86              486                                                  
    x86          pentium                                                  
    x86         pentium2                                                  
    x86         pentium3                                                  
    x86           athlon  QEMU Virtual CPU version 1.5.3                  
    x86             n270  Intel(R) Atom(TM) CPU N270   @ 1.60GHz          
    x86      cpu64-rhel6  QEMU Virtual CPU version (cpu64-rhel6)          
    x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)   
    x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)    
    x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)       
    x86         Westmere  Westmere E56xx/L56xx/X56xx (Nehalem-C)          
    x86      SandyBridge  Intel Xeon E312xx (Sandy Bridge)                
    x86          Haswell  Intel Core Processor (Haswell)                  
    x86        Broadwell  Intel Core Processor (Broadwell)                
    x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)           
    x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)          
    x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)          
    x86       Opteron_G4  AMD Opteron 62xx class CPU                      
    x86       Opteron_G5  AMD Opteron 63xx class CPU                      
    x86             host  KVM processor with all supported host features (only available in KVM mode)
    

    如果想尽可能多的将宿主机的 CPU 特性暴露给客户机使用,则可以使用 "-cpu host" 参数。使用 "-cpu host" 参数会带来动态迁移的限制,不让客户机在不同的cpu硬件上迁移。

    (2)-smp 参数

    -smp n[,scores=scores][,threads=threads][,sockets=sockets]
    

     设置客户机总共有 n 个逻辑CPU,并设置了其中 CPU socket 的数量、每个socket 上核心(core)的数量、每个核心上的线程(thread)数量。其中:n = sockets x cores x threads

    2.3 内存相关的参数

    (1) -m megs 参数

    设置客户机内存大小为 megs MB。默认单位:MB,可设置 GB

    (2)--mem-path path参数

    从path路径表示的临时文件中为客户机分配内存,主要是分配大页内存(如2 MB 大页),如 "--mem-path /dev/hugepages"

    (3)--mem-prealloc 参数

    启动时即分配全部的内存,而不是根据客户机请求而动态分配,必须与 "--mem-path" 参数一起使用

    (4)-balloon 开启内存气球的设置

    "-balloon virtio" 为客户机提供 virtio_balloon 设备,从而通过内存气球balloon,可以在 QEMU monitor 中用 "balloon"命令来调节客户机占用内存的大小。

    2.4 磁盘相关的参数

    Block device options:
    -fda/-fdb file  use 'file' as floppy disk 0/1 image
    -hda/-hdb file  use 'file' as IDE hard disk 0/1 image
    -hdc/-hdd file  use 'file' as IDE hard disk 2/3 image
    -cdrom file     use 'file' as IDE cdrom image (cdrom is ide1 master)
    -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
           [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
           [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
           [,serial=s][,addr=A][,id=name][,aio=threads|native]
           [,readonly=on|off][,copy-on-read=on|off]
           [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]]
                    use 'file' as a drive image
    -mtdblock file  use 'file' as on-board Flash memory image
    -sd file        use 'file' as SecureDigital card image
    -pflash file    use 'file' as a parallel flash image
    -snapshot       write to temporary files instead of disk image files
    -hdachs c,h,s[,t]
                    force hard disk 0 physical geometry and the optional BIOS
                    translation (t=none or lba) (usually QEMU can guess them)
    -fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}]
    [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
    -virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none]
            [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
    -virtfs_synth Create synthetic file system image
    

    (1)-hda、-hdb 和 -cdrom 等参数

      设置客户机的 IDE 磁盘和光盘设备。如 "-hda centos7.img" 将 centos7.img 镜像文件作为客户机的第一个 IDE 磁盘。

    (2)-drive 参数

      详细的配置一个驱动。

    例如: -drive file=/images/centos7.img,if=virtio,cache=writeback 使用 virtio_blk 驱动 和 磁盘回写机制 来支持该磁盘文件
    

    (3)-boot 参数

    -boot [order=drives][,once=drives][,menu=on|off]
    

    设置客户机启动的各种选项(包括启动顺序等),如:在安装客户机操作系统时,使用 "-boot order=dc -hda centos7.img -cdrom centos7.iso",让 centos.img 文件作为IDE磁盘,安装光盘 centos7.iso 作为 IDE 光驱,并且从光盘启动客户机,从而让客户机进入到系统安装的流程中。

    2.5 网络相关参数

    (1) -net nic 参数

    为客户机创建一个网卡,凡是使用 qemu-kvm 模拟的网卡作为客户机网络设备的情况都应该使用该参数,通常该参数与 -net tap 连用。

    例如:-net nic model=virtio, macaddr=52:54:00:ac:0f:11 使用 -net nic 命令时,一定要手动指定mac地址,否则客户机的mac地址会与宿主机mac一致。
    

    (2)-net user参数

    让客户机使用不需要管理员权限的用户模式网络

    例如:-net nic -net user
    

    (3)-net tap参数

    使用宿主机的TAP网络接口来帮助客户机建立网络。使用网桥连接和NAT模式网络的客户机都会使用到 "-net tap" 参数。

    例如:-net nic -net tap,ifname=vnet0,script=/etc/qeum-ifup,downscript=no  ifname 指定在宿主机空间的网卡名称,script 和 downscript 为配置网络脚本。
    

    2.6 显示相关的参数

    (1)vnc参数

    默认使用 vnc 方式显示客户机。

    例如手动指定:-vnc localhost:2
    

    (2)-nographic参数

    让客户机以命令行的方式在当前终端启动显示。

    例如:

    [root@192.168.118.14 ~]#qemu-kvm -smp 2 -m 512m /images/cirros-0.3.5-i386-disk.img -nographic
    ...
    [系统启动信息]
    ...
    
    login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    <!DOCTYPE login:    # Ctrl+A H 获取帮助信息
    C-a h    print this help
    C-a x    exit emulator
    C-a s    save disk data back to file (if -snapshot)
    C-a t    toggle console timestamps
    C-a b    send break (magic sysrq)
    C-a c    switch between console and monitor
    C-a C-a  sends C-a
    
    [00:00:33.833] login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    <!DOCTYPE login:    # Ctrl+A C 切换到 qemu-monitor 模式
    [00:00:37.237] (qemu)
    
    [00:00:37.237] (qemu)   # Ctrl+A C 切换为命令行模式
    [00:01:13.592] login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    <!DOCTYPE login: 
    

    (3)-daemonize 参数

    在启动时让 qemu-kvm 作为守护进程在后台运行。如果没有该参数,默认 qemu-kvm 在启动客户机后就会占用标准输入输出,直到客户机退出。

    2.7 其他参数

    (1)-name 参数

    -name 指定客户机名称可用于宿主机上唯一标识该客户机。

    2.8 总结

    总结实际场景中经常用到的一些关于 qeum-kvm 的命令组合:

    (1)直接通过镜像文件启动客户机方式:

    [root@192.168.118.14 ~]#qemu-img -name 'test' -smp 1 -m 512m /images/cirros-0.3.5-i386-disk.img [-daemonize | -nographic]
    # -daemonize 守护进程方式启动
    # -nographic 占用终端输出输入直接显示
    二者选其一。
    

    (2)创建镜像文件并通过 iso 安装 客户机操作系统:

    关于 qemu-img 的使用查看:KVM 基础功能详解 倒数第二部分。

    [root@192.168.118.14 ~]#qemu-kvm -name "centos7" -smp 2 -m 1024m -drive file=/images/centos_7.qcow2,if=virtio,cache=writeback -cdrom /usr/local/src/CentOS-7-x86_64-Minimal-1511.iso -daemonize
    VNC server running on `::1:5900'
    

    上面两种方式都没有应用网络方式,如果需要使用网络服务请参考:

    [kvm] 四种简单网络模型

  • 相关阅读:
    网络测量中基于Sketch方法的简单介绍
    Reading SBAR SDN flow-Based monitoring and Application Recognition
    Reading Meticulous Measurement of Control Packets in SDN
    Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
    ovs加dpdk在日志中查看更多运行细节的方法
    后缀数组
    (转载)LCA问题的Tarjan算法
    Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
    Vijos 1816统计数字(计数排序)
    卡特兰数
  • 原文地址:https://www.cnblogs.com/hukey/p/11157768.html
Copyright © 2011-2022 走看看