使用virsh创建管理KVM虚拟机

  1. 安装软件包

    sudo apt install qemu-kvm libvirt-bin virt-manager bridge-utils

  2. 验证安装

    lsmod | grep kvm
    virsh -c qemu:///system list

  3. 将当前用户加入 libvirtd 组

    sudo usermod -G libvirtd -a fdc

  4. 准备磁盘镜像目录、光盘镜像目录、配置文件备份目录

  5. 创建磁盘镜像

    qemu-img create -f qcow2 filename.qcow2 50G
    chown libvirt-qemu:libvirtd filename.qcow2

  6. 创建 bridge network

    参考1: http://wiki.libvirt.org/page/Networking#Host_configuration "Debian/Ubuntu Bridging"
    参考2: https://libvirt.org/formatnetwork.html#examplesBridge

    1. 编辑 /etc/network/interfaces ,将 ethX 改为 virbrX ,并追加配置
    bridge_ports ethX
    bridge_stp on
    bridge_maxwait 0
    
    1. 停止原 interface,启用桥接 interface ifdown ethX && ifup virbrX

    2. 创建 virsh network 配置文件

    <network>
      <name>host-bridgeX</name>
      <forward mode="bridge"/>
      <bridge name="virbrX"/>
    </network>
    
    1. 加载 network 配置

    virsh net-define net-virbrX.xml

  7. 创建 virsh 虚拟机

    1. 创建 domain 描述文件,用于从镜像安装系统
    <domain type='kvm'>
      <name>domain-name</name>
      <memory unit='KiB'>524288</memory>
      <vcpu placement='static'>1</vcpu>
      <os>
        <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
        <boot dev='cdrom'/>
      </os>
      <features>
        <acpi/>
        <apic/>
        <pae/>
      </features>
      <clock offset='localtime'/>
      <devices>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/path/to/disk_image.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <source file='/path/to/ubuntu-16.04.2-server-amd64.iso'/>
          <readonly/>
          <target dev='hdc' bus='ide'/>
        </disk>
        <interface type='network'>
          <source network='host-bridge0'/>
          <model type="virtio"/>
          <target dev='vnet0'/>
        </interface>
        <input type='keyboard' bus='ps2'/>
        <graphics type='vnc' port='5996' autoport='no' listen='0.0.0.0'>
          <listen type='address' address='0.0.0.0'/>
        </graphics>
        <video>
          <model type='vga' vram='9216' heads='1'/>
        </video>
        <memballoon model='virtio'>
        </memballoon>
      </devices>
    </domain>
    
    1. 加载配置 virsh define domain.xml

    2. 检查虚拟机配置 virsh edit domain-name

    3. 启动虚拟机,使用 VNC 客户端连接管理界面

      virsh start domain-name

    4. 安装虚拟机操作系统

    5. 编辑虚拟机配置,移除 CDROM 等不必要的设备,将 VNC 监听端口改为本地,重启虚拟机,投入使用