美文网首页dibo
qemu-kvm 基础(一)

qemu-kvm 基础(一)

作者: OOM_Killer | 来源:发表于2019-05-18 18:31 被阅读0次

    QEMU简介

    QEMU是个独立的虚拟化解决方案,从这个角度它并不依赖KVM。而KVM是另一套虚拟化解决方案,不过因为这个方案实际上只实现了内核中对处理器虚拟化特性的支持,换言之,它缺乏设备虚拟化以及相应的用户空间管理虚拟机的工具,所以它借用了QEMU的代码并加以精简,连同KVM一起构成了 另一个独立的虚拟化解决方案:(
    (KVM是QEMU的加速器)
    KVM+QEMU
    KVM 是 linux 内核包含的东西,使用 qemu 作为上层管理(命令行)。qemu 是独立虚拟软件,能独立运行虚拟机(根本不需要 kvm )。 qemu 是该软件的加速软件。 kvm 并不需要 qemu 进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由 kvm 驱动。
    qume当运行与主机架构相同的目标架构时可以使用KVM,例如一个x86兼容处理器上运行qemu-system-x86。


    qemu-kvm

    kvm虚拟化入门

    这里选用centos操作系统,centos是必定支持kvm的。
    安装qemu-kvm,因为红帽希望大家使用他们推崇的libvirt,所以将qemu-kvm放到了/usr/libexec/ 下,不在PATH下。

    $ yum install -y qemu-kvm
    $ ln -sv /usr/libexec/qemu-kvm /usr/local/bin/
    

    这里安装了两个比较重要的命令。

    • qemu-kvm:管理kvm
    • qemu-img:磁盘管理
    qemu-kvm 模拟 cpu
    • cpu类型
    $ kvm-qemu -cpu ?
    Available CPUs:
    x86              486                                                  
    x86   Broadwell-IBRS  Intel Core Processor (Broadwell, IBRS)          
    x86 Broadwell-noTSX-IBRS  Intel Core Processor (Broadwell, no TSX, IBRS)  
    x86  Broadwell-noTSX  Intel Core Processor (Broadwell, no TSX)        
    x86        Broadwell  Intel Core Processor (Broadwell)                
    x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)   
    x86        EPYC-IBPB  AMD EPYC Processor (with IBPB)                  
    x86             EPYC  AMD EPYC Processor                              
    x86     Haswell-IBRS  Intel Core Processor (Haswell, IBRS)    
    

    使用 -cpu 指定模拟的cpu。如 -cpu Broadwell.
    注:-smp 才是指定cpu的个数

    • numa选项
      非一致性内存访问。

    numa的概念:假设主机上有4颗cpu,一颗cpu操作一个内存单元的数据修改的话,其他cpu不能操作,也就是资源竞争。为避免cpu竞争内存资源,每颗cpu有自己的内存节点,也有公共的内存。

    可以使用-numa opts 指定模拟多节点的numa设备。

    qemu-kvm 模拟 disk
    • drive选项
      指定磁盘映像文件,-hda 选项太过低配。-drive 可以指定的很多,如if=vritio,这是高级的半虚拟化技术。

    模拟技术:每一个io设备都分成两端,一半在虚拟机端,一半在宿主机。这两半又有一定的对应关系。
    半虚拟化:两端设备之间不再有设备进行转换。直接一端与一端对接。

    -drive option[,option ...] 每个选项可以使用","号隔开。
    drive是定义一块存储硬盘的,如下。
    file=xxx :硬盘映像文件路径。
    media= xxx :指定介质设备类型,有disk,和cdrom。
    if=interface :指定硬盘设备所连接的接口类型,如ide,sd,virtio等。
    cache=cache: 定义如何使用物理机缓存访问块设备。
    ...

    qemu-kvm 的其他选项
    • -name name:指定虚拟机的名称。
    • -M machine:指定虚拟机的主机类型。如Standerd PC,ISA-only,PC或Intel-Mac等,使用 “qemu-kvm -M ?”查看。
    • -m megs: 设定虚拟机的RAM大小。
    • -cpu: 指定cpu的模拟类型
    • -smp n:指定CPU的核心数以及CPU的socket数目。
    • -numa opts:指定模拟多节点的numa设备。
    • -cdrom file:指定file作为CD-ROM镜像,不能和 -hdc 等同时使用。
    • -boot [order=drivers][,once=drives] 定义设备的引导次序,每种设备使用一个字符表示。a,b 表示软驱,c表示第一块硬盘,d表示第一个光驱,n-p 表示网络适配器。
      -boot order=dc,once=d
    • -nographic 禁止vnc,直接在终端上打印。
    qemu-img 创建磁盘硬件

    qemu-img是QEMU的磁盘管理工具。其子命令的效果如下。

    1. info:查看镜像信息
    2. create:创建镜像
    3. convert:转换镜像格式
    4. snapshot:管理快照
    • info 查看信息
    # qemu-img info cirros-0.3.6-i386-disk.img 
    image: cirros-0.3.6-i386-disk.img
    file format: qcow2
    virtual size: 39M (41126400 bytes)
    disk size: 14M
    cluster_size: 65536
    Format specific information:
        compat: 0.10
    

    这里能看到这是qcow2的磁盘格式,这是很高级的磁盘镜像格式。

    • create 创建镜像
    $ qemu-img create -o ? -f qcow2 test.qcow2
    Supported options:
    size             Virtual disk size
    compat           Compatibility level (0.10 or 1.1)
    backing_file     File name of a base image
    backing_fmt      Image format of the base image
    encryption       Encrypt the image
    cluster_size     qcow2 cluster size
    preallocation    Preallocation mode (allowed values: off, metadata, falloc, full)
    lazy_refcounts   Postpone refcount updates
    
    $ qemu-img create -o size=2G,preallocation=metadata -f qcow2 test.qcow2
    Formatting 'test.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off 
    

    启动虚拟机

    $ qemu-kvm -cpu Broadwell -m 512 -smp 2 -name "test" \
    -drive file=cirros-0.4.0-x86_64-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -vnc 0.0.0.0:0
    

    使用vncviewer连接5900端口


    qemu虚拟机.png

    可以使用Ctrl+Alt+2 切换为配置模式。在这个模式下有一个info 命令。
    可以查看当前虚拟机的各种状态。

    Ctrl+Alt+2 的配置模式
    • info numa
      显示numa节点
    • info status
      显示虚拟机状态
    • 等等......
    创建一个centos虚拟机。

    1.创建虚拟磁盘映像。

    $ qemu-img create -o size=5G,preallocation=metadata -f qcow2 centos-mini.qcow2
    Formatting 'centos-mini.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off$ 'centos-mini.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off
    
    # ll -h
    总用量 1.3M
    -rw-r--r--. 1 root root 5.1G 5月  18 06:06 centos-mini.qcow2
    # du -sh centos-mini.qcow2 
    1.3M    centos-mini.qcow2
    

    2.以创建好的磁盘映像启动虚拟机

    $ qemu-kvm -m 1024 -smp 2 -name 'centos-mini' \
    > -drive file=/root/images/centos-mini.qcow2,if=virtio,media=disk,format=qcow2,cache=writeback \
    > -drive file=/root/iso/CentOS-7-x86_64-Minimal-1810.iso,media=cdrom -boot order=dc,once=d \
    > --vnc 0.0.0.0:0
    
    1. 连上vnc。开始安装
    vncviewer 192.168.199.214:5900
    
    安装画面
    1. 安装完成后,使用启动虚拟机的命令。启动虚拟机。(就是安装虚拟机的命令去掉第二个drive)
    $ qemu-kvm -m 1024 -smp 2 -name 'centos-mini' \
    > -drive file=/root/images/centos-mini.qcow2,if=virtio,media=disk,format=qcow2,cache=writeback
    > -nographic
    
    在终端中以非图形方式启动
    1. 完成了

    相关文章

      网友评论

        本文标题:qemu-kvm 基础(一)

        本文链接:https://www.haomeiwen.com/subject/mqotnqtx.html