XStar's Libvirt+KVM部署记录

目录
  • Create: 2013-12-11
  • Update: 2014-01-03

准备工作

  • CPU支持检查

如果CPU支持,还需要在BIOS打开虚拟化支持。通常,主板默认关闭这个选项。

kvm-ok
# 或
grep -E "vmx|svm" /proc/cpuinfo
# Intel CPU:vmx
# AMD CPU:svm

使用libvirt负责虚拟化的创建及管理。

  • 网络结构

    • NAT:用libvirt原有的default网络,通过virbr0连接、Dnsmasq做dhcp、iptables提供NAT;
    • Bridge:手工在系统中配置网桥virbr1,在libvirt配置虚拟机直接连接该该网桥即可。

软件安装

  • 相关软件包

    • qemu-kvm - Full virtualization on i386 and amd64 hardware
    • qemu-system - QEMU full system emulation binaries
    • qemu-utils - qemu utilities
    • libvirt-bin - programs for the libvirt library
    • pm-utils - utilities and scripts for power management
    • virt-manager - desktop application For managing virtual machines
    • virt-viewer - Displaying the graphical console of a virtual machine
    • virtinst - Programs to create and clone virtual machines
      • virt-install: provision new virtual machines
      • virt-clone: clone existing virtual machines
      • virt-image: create virtual machines from an image description
      • virt-convert: convert virtual machines between formats
  • 从源安装

    # Ubuntu
    sudo apt-get -y install qemu-kvm qemu-utils libvirt-bin pm-utils virtinst
    sudo apt-get -y install virt-viewer virt-manager
    # CentOS
    yum install -y qemu-kvm qemu-kvm-tools libvirt libvirt-devel libvirt-client pm-utils
    yum install -y virt-viewer virt-manager
  • 编译安装

    # Ubuntu中解依编译信赖关系
    sudo apt-get build-dep qemu-kvm tar -xzvf qemu-kvm-1.2.0.tar.gz
    cd qemu-kvm-1.2.0
    /configure --prefix=/usr/local/kvm
    make
    sudo make install # 安装后加载KVM模块
    # 注意:系统重启后要重新加载kvm内核模块,从源安装时会有qemu-kvm服务来自动加载该模块。
    sudo modprobe kvm
    sudo modprobe kvm-intel #INTEL处理器就用这个
    sudo modprobe kvm-amd #AMD处理器就用这个

libvirt配置

  • /etc/default/libvirt-bin

    start_libvirtd="yes"
    libvirtd_opts="-d -l"
  • 开启TCP侦听

    • /etc/libvirt-bin/libvir-bin.conf

      listen_tls = 0           # 禁用tls
      listen_tcp = 1 # 启用tcp侦听
      tcp_port = "16509" # tcp端口
      listen_addr = "0.0.0.0" # tcp侦听IP
      auth_unix_ro = "none"
      auth_unix_rw = "none"
      auth_tcp = "sasl" # tcp登录认证方式,"none"为不使用认证
      log_level = 3
      log_outputs="3:syslog:libvirtd" max_clients = 1024 # 最大总的连接客户数1024
      min_workers = 50 # libvirtd启动时,初始的工作线程数目
      max_workers = 200 # 同上,最大数目
      max_requests = 1000 # 最大同时支持的RPC调用,必须大于等于max_workers
      max_client_requests = 200 # 每个客户端支持的最大连接数
    • 安装sasl2、设置自启动
      apt-get install sasl2-bin
      sed -i 's/\(^START\)=.*$/\1=yes/g' /etc/default/saslauthd
    • sasl用户设置(http://libvirt.org/auth.html)
      # 添加用户
      saslpasswd2 -a libvirt yuanxing
      #列出用户
      sasldblistusers2 -f /etc/libvirt/passwd.db
      # yuanxing@kvmsrv: userPassword,注意:登录时用户名要包含@kvmsrv
      #删除用户
      saslpasswd2 -a libvirt -d yuanxing
  • 设置VNC侦听地址:/etc/libvirt/qemu.conf
    sed -i -e '/^vnc_listen/d' i-e '/^vnc_password/d' /etc/libvirt/qemu.conf
    echo 'vnc_listen = "0.0.0.0"' >> /etc/libvirt/qemu.conf
    echo 'vnc_password = "XYZ12345"' >> /etc/libvirt/qemu.conf
  • 服务管理
    service libvirt-bin start|restart|stop|status|reload|force-reload
    service qemu-kvm start|restart|stop|status|reload|force-reload

网络配置

软件安装

  • 相关软件包

    • bridge-utils - Utilities for configuring the Linux Ethernet bridge
    • vde2 - Virtual Distributed Ethernet
    • ifplugd - configuration daemon for ethernet devices
    • uml-utilities - User-mode Linux (utility programs)(tunctl工具)
  • 安装bridge工具

    sudo apt-get -y install bridge-utils
    

使用ifplugd方便向桌面发送状态通知、通过异步处理加快启动速度(dhcp浪费时间)。

使用vde2使用可能是方便以普通用户身份来管理(UserModeLinux,涉及到uml工具)?

配置主机网络

  • 配置/etc/network/interfaces

    auto lo
    iface lo inet loopback auto virbr1
    iface virbr1 inet static
    address 172.17.20.20
    network 172.17.20.0
    netmask 255.255.255.0
    broadcast 172.17.20.255
    gateway 172.17.20.1
    dns-nameservers 8.8.8.8 4.4.4.4
    bridge_ports eth0
    bridge_stp on
    bridge_maxwait 0
  • 禁用NetworkManager
    sudo stop network-manager
    # Create an override file for the upstart job:
    echo "manual" | sudo tee /etc/init/network-manager.override
  • 网桥关闭Netfilter、开启ip_forward

libvirt网络配置

  • NAT网络:default.xml(libvirt缺省)

    <network>
    <name>default</name>
    <uuid>3be6d4fa-72c4-667b-64ae-85f954f1b2bf</uuid>
    <forward mode='nat'/>
    <bridge name='virbr0' stp='on' delay='0' />
    <mac address='52:54:00:D6:A2:9B'/>
    <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
    <range start='192.168.122.2' end='192.168.122.254' />
    </dhcp>
    </ip>
    </network>
  • 桥接网络:network-host-bridge.xml

    <network>
    <name>network-host-bridge</name>
    <uuid>3b8bf95c-6971-8794-1c63-bc2b8c551979</uuid>
    <forward mode='bridge'/>
    <bridge name='virbr1' />
    </network>
  • 导入配置

    virsh net-list --all
    #virsh net-define default.xml
    virsh net-define network-host-bridge.xml
    virsh net-start network-host-bridge
    virsh net-autostart network-host-bridge
    # virsh net-dumpxml network-host-bridge > /etc/libvirt/qemu/network/network-host-bridge.xml
  • 也可不在libvirt中设置主机网桥,配置虚拟机时,直接指向bridge,运行时传递给kvm的参数相同。
    • 指向network-host-bridge

          <interface type='network'>
      <mac address='52:54:00:6c:07:87'/>
      <source network='network-host-bridge'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
      </interface>
    • 直接指向bridge
          <interface type='bridge'>
      <mac address='52:54:00:6c:07:87'/>
      <source bridge='virbr1'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
      </interface>
  • libvirt生成的iptables NAT策略

    # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    *nat
    :PREROUTING ACCEPT [310:34187]
    :INPUT ACCEPT [41:4149]
    :OUTPUT ACCEPT [471:31957]
    :POSTROUTING ACCEPT [711:59731]
    -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
    -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
    -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
    COMMIT
    # Completed on Sat Dec 14 01:24:40 2013
    # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    *mangle
    :PREROUTING ACCEPT [789078:428240757]
    :INPUT ACCEPT [381196:51105050]
    :FORWARD ACCEPT [407928:377150708]
    :OUTPUT ACCEPT [399811:110095092]
    :POSTROUTING ACCEPT [807739:487245800]
    -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
    COMMIT
    # Completed on Sat Dec 14 01:24:40 2013
    # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    *filter
    :INPUT ACCEPT [381157:51098101]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [399811:110095092]
    -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
    -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
    -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
    -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
    -A INPUT -i virbr1 -p udp -m udp --dport 53 -j ACCEPT
    -A INPUT -i virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
    -A INPUT -i virbr1 -p udp -m udp --dport 67 -j ACCEPT
    -A INPUT -i virbr1 -p tcp -m tcp --dport 67 -j ACCEPT
    -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
    -A FORWARD -i virbr0 -o virbr0 -j ACCEPT
    -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
    -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
    -A FORWARD -i virbr1 -o virbr1 -j ACCEPT
    -A FORWARD -o virbr1 -j REJECT --reject-with icmp-port-unreachable
    -A FORWARD -i virbr1 -j REJECT --reject-with icmp-port-unreachable
    COMMIT
    # Completed on Sat Dec 14 01:24:40 2013
  • libvirt为default网络启动的dnsmasq进程

    /usr/sbin/dnsmasq \
    -u libvirt-dnsmasq \
    --strict-order \
    --bind-interfaces \
    --pid-file=/var/run/libvirt/network/default.pid \
    --conf-file= \
    --except-interface lo \
    --listen-address 192.168.122.1 \
    --dhcp-range 192.168.122.2,192.168.122.254 \
    --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases \
    --dhcp-lease-max=253 \
    --dhcp-no-override

常用管理操作

常用工具

virsh
virt-install
virt-manager
virt-clone
virt-convert
virt-image
qeum-img

连接libvirtd

virsh -c qemu:///system                              # 本地登录libvirt控制台
virsh -c qemu+ssh://root@172.17.20.20/system # ssh远程登录libvirt控制台
virsh -c qemu+tcp://172.17.20.20:16509/system # tcp远程登录libvirt控制台
virt-manager -c qemu+tcp://172.17.20.20:16509/system # 运行libvirt图形管理界面
virt-manager -c qemu+ssh://root@172.17.20.20/system
  • 管理存储池
  • 管理接口(bridge)
  • 管理网络(Networking)
  • 管理虚拟机(Domain)
    • 创建/修改
    • 调整内存
    • 起停、悬挂、恢复
    • 迁移
    • console
    • ttyconsole
    • attach/detach
  • 监控虚拟机
  • Host and Hypervisor
  • 管理虚拟卷
  • 快照管理
  • 图形界面:VNC

配置存储池

  • data.xml

    <pool type='dir'>
    <name>data</name>
    <uuid>117251c7-3444-a5e3-3174-1947c4933321</uuid>
    <capacity>446342758400</capacity>
    <allocation>7004667904</allocation>
    <available>439338090496</available>
    <source>
    </source>
    <target>
    <path>/data/libvirt/images</path>
    <permissions>
    <mode>0700</mode>
    <owner>-1</owner>
    <group>-1</group>
    </permissions>
    </target>
    </pool>
  • ISOs.xml
    <pool type='dir'>
    <name>ISOs</name>
    <uuid>e77d9811-5497-521d-0d50-e5104c7e66b1</uuid>
    <capacity>446342758400</capacity>
    <allocation>7004667904</allocation>
    <available>439338090496</available>
    <source>
    </source>
    <target>
    <path>/data/ISOs</path>
    <permissions>
    <mode>0700</mode>
    <owner>-1</owner>
    <group>-1</group>
    </permissions>
    </target>
    </pool>
  • 存储池名称
    virsh pool-list
    Name State Autostart
    -----------------------------------------
    data active yes
    ISOs active yes

第一个虚拟机

使用 virt-manager -c qemu+ssh:///system 远程连接libvirtd后,在图形界面中创建了第一个虚拟机Ubuntu,并安装了操作系统。

  • Ubuntu.xml

    <domain type='kvm' id='2'>
    <name>Ubuntu</name>
    <uuid>d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</uuid>
    <memory>1048576</memory>
    <currentMemory>1048576</currentMemory>
    <vcpu>2</vcpu>
    <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
    </os>
    <features>
    <acpi/>
    <apic/>
    <pae/>
    </features>
    <clock offset='utc'/>
    <on_poweroff>destroy</on_poweroff>
    <on_reboot>destroy</on_reboot>
    <on_crash>destroy</on_crash>
    <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/data/libvirt/images/Ubuntu.img'/>
    <target dev='vda' bus='virtio'/>
    <alias name='virtio-disk0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source file='/data/ISOs/ubuntu-12.04.3-server-amd64.iso'/>
    <target dev='hdc' bus='ide'/>
    <readonly/>
    <alias name='ide0-1-0'/>
    <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
    <alias name='ide0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
    <mac address='52:54:00:6c:07:87'/>
    <source bridge='virbr1'/>
    <target dev='vnet0'/>
    <model type='virtio'/>
    <alias name='net0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
    <source path='/dev/pts/1'/>
    <target port='0'/>
    <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
    <source path='/dev/pts/1'/>
    <target type='serial' port='0'/>
    <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes'/>
    <video>
    <model type='cirrus' vram='9216' heads='1'/>
    <alias name='video0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
    <alias name='balloon0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
    </devices>
    <seclabel type='dynamic' model='apparmor' relabel='yes'>
    <label>libvirt-d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</label>
    <imagelabel>libvirt-d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</imagelabel>
    </seclabel>
    </domain>
  • 虚拟机进程
    # 进程以libvirt-qemu用户身份运行
    /usr/bin/kvm \
    -S \
    -M pc-1.0 \
    -enable-kvm \
    -m 1024 \
    -smp 2,sockets=2,cores=1,threads=1 \
    -name Ubuntu \
    -uuid d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91 \
    -nodefconfig \
    -nodefaults \
    -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Ubuntu.monitor,server,nowait \
    -mon chardev=charmonitor,id=monitor,mode=control \
    -rtc base=utc \
    -no-reboot \
    -no-shutdown \
    -drive file=/data/libvirt/images/Ubuntu.img,if=none,id=drive-virtio-disk0,format=qcow2 \
    -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2 \
    -drive file=/data/ISOs/ubuntu-12.04.3-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw \
    -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 \
    -netdev tap,fd=19,id=hostnet0,vhost=on,vhostfd=20 \
    -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:6c:07:87,bus=pci.0,addr=0x3 \
    -chardev pty,id=charserial0 \
    -device isa-serial,chardev=charserial0,id=serial0 \
    -usb \
    -vnc 127.0.0.1:0 \
    -vga cirrus \
    -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
  • libvirt通过nc对外服务(自动)
    sh -c if nc -q 2>&1 | grep "requires an argument" >/dev/null 2>&1; then ARG=-q0;else ARG=;fi;nc $ARG -U /var/run/libvirt/libvirt-sock
    nc -q0 -U /var/run/libvirt/libvirt-sock nc -q 0 127.0.0.1 5900

vmbuilder

使用vmbuilder创建Ubuntu JeOS虚拟服务器,包括虚拟机创建、系统安装、包安装,以及系统设置定制均可一步完成。

  • 安装vmbuilder

    apt-get instal python-vm-builder
    
  • 使用参数
    • vmbuilder --help
    • vmbuilder kvm ubuntu --help
  • 优化设置

Vmbuilder缺省对网卡启用了virtio特性,但虚拟磁盘未启用virtio特性,可修改其配置档解决:

vim /etc/vmbuilder/libvirt/libvirtxml.tmpl

<target dev='hd$disk.devletters()' />
# to
<target dev='vd$disk.devletters()' bus='virtio' />

Since my virtual machines require a pointopoint entry in /etc/network/interfaces I also edit /etc/vmbuilder/ubuntu/interfaces.tmpl and add an additional line pointopoint underneath gateway. This will set pointopoint to the gateway address that I specify with vmbuilder.

pointopoint $gw

As a last ugly rather hack I edit /usr/share/pyshared/VMBuilder/plugins/kvm/vm.py and change the default file image type from qcow2 to raw to improve the disk throughput.

filetype = 'raw'

Instead of editing vm.py you could also use the qemu-img command after running vmbuilder to convert the qcow2 image to raw (or just keep qcow2 if you are fine with it).

  • 默认模板文件:/etc/vmbuilder/libvirt/
  • 自定义配置文件:MyJeOS.cfg
    [DEFAULT]
    arch=amd64
    mem=512
    cpus=2
    ip=172.17.20.31
    gw=172.17.20.1
    mask=255.255.255.0
    dns=8.8.8.8
    user=yuanxing
    name=YuanXing
    pass=123456
    tmpfs=-
    firstboot=/data/libvirt/JeOStemplate/firstboot.sh
    #firstlogin=/data/libvirt/JeOStemplate/firstlogin.sh
    #bridge=virbr1
    network=network-host-bridge [ubuntu]
    mirror=http://mirrors.163.com/ubuntu
    iso=/data/ISOs/ubuntu-12.04.3-server-amd64.iso
    suite=precise
    flavour=virtual
    hostname=JeOS
    addpkg=openssh-server,acpid,vim,at,bc,byobu,tmux,screen,iptables
    [kvm]
    libvirt = qemu:///system
  • 首次运行firstboot.sh
    # This script will run the first time the virtual machine boots
    # It is ran as root. echo "Expire the user account"
    passwd -e user echo "Regenerate ssh keys"
    rm -f /etc/ssh/ssh_host*key*
    dpkg-reconfigure -fnoninteractive -pcritical openssh-server
  • 首次登录firstlogin.sh
    # This script is ran the first time a user logs in
    echo "Your appliance is about to be finished to be set up."
    echo "In order to do it, we'll need to ask you a few questions,"
    echo "starting by setting you keyboard and other console informations."
  • 分区配置:vmbuilder.partition
    # ubuntu 12.04中vmbuilder的cli.py中对part的处理存在bug,不能正确按man中的格式处理设备名和文件名,因为只能使用如下简单格式
    root 8000
    swap 4000
    ---
    /data 20000

vim +391 /usr/lib/python2.7/dist-packages/VMBuilder/contrib/cli.py

  • 创建虚拟机

    sudo vmbuilder kvm ubuntu -c MyJeOS.cfg --part vmbuilder.partition --timezone=CST -d /data/libvirt/images/JeOS
    
    # 或者直接在命令行中指定参数
    sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch amd64 --libvirt qemu:///system \
    --hostname gonzo --ip 192.0.32.9 --net 192.0.32.9 --mask 255.255.255.255 --bcast 192.0.32.9 --gw 213.103.105.1 \
    --domain example.com --user john --name john --pass 12345 \
    --verbose --rootsize=20480 --swapsize=2048 --mem 1024 --cpus 1 \
    --addpkg=openssh-server --addpkg=vim --addpkg=acpid \
    --dest=/var/lib/libvirt/images/gonzo/

virt-install

virt-install --name=Ubuntu2 --ram 1024 --vcpus=2 \
--disk pool=data,size=8,bus=virtio,format=qcow2,sparse=false,cache=writeback \
--cdrom /data/ISOs/ubuntu-12.04.3-server-amd64.iso \
--vnc --network bridge=virbr1,model=virtio --noautoconsole \
--connect=qemu:///system # 或用网络名称:
# --network network=network-host-bridge

说明:在linux系统安装开始就要注意添加提高性能的一些参数,后面就不需要做一些调整了。

参数说明:

--name 指定虚拟机名称
--ram 分配内存大小
--vcpus 分配CPU核心数,最大与实体机CPU核心数相同
--disk 指定虚拟机镜像,size 指定分配大小单位为G。
--network 网络类型,此处用的是默认,一般用的应该是 bridge 桥接。
--cdrom 指定安装镜像iso
--vnc 启用VNC远程管理,一般安装系统都要启用。
--vncport 指定VNC 监控端口,默认端口为5900,端口不能重复。
--vnclisten 指定VNC 绑定IP,默认绑定127.0.0.1,这里改为 0.0.0.0。
--noautoconsole Don't automatically try to connect to the guest console

virt-clone

  • clone卷

    virsh -c qemu:///system vol-clone --pool data tmpiEMBDQ.qcow2 JeOS_2.qcow2
    
  • virt-clone:虚拟机克隆
    --connect=CONNECT
    -o ORIGINAL_GUEST , --original=ORIGINAL_GUEST 被克隆的原始Guest名称
    -m MAC , --mac=MAC MAC地址
    --auto-clone, Generate a new guest name, and paths for new storage.
    -n NAME , --name=NAME 新虚拟机Guest的名称
    -u UUID , --uuid=UUID 指定UUID
    -f DISKFILE , --file=DISKFILE
    # 将JeOS克隆为指定NAME,按--file指定路径Clone虚拟磁盘。
    NAME=JeOS1;
    mkdir /data/libvirt/images/$NAME \
    && virt-clone \
    --connect qemu:///system \
    --original JeOS \
    --name $NAME \
    --file /data/libvirt/images/$NAME/$NAME.qcow2 \
    --file /data/libvirt/images/$NAME/${NAME}_data.qcow2

[转载]XStar's Libvirt+KVM部署记录 目录的更多相关文章

  1. openstack项目【day24】:KVM部署

    本节内容 虚拟化支持 软件准备 检查CPU虚拟化支持 安装软件包 激活并启动libvirtd服务 网络模式 配置桥接网络 验证网络 尝试连接Hypervisor 创建虚拟机 虚拟机操作 一.虚拟化支持 ...

  2. GlusterFS分布式存储集群部署记录-相关补充

    接着上一篇Centos7下GlusterFS分布式存储集群环境部署记录文档,继续做一些补充记录,希望能加深对GlusterFS存储操作的理解和熟悉度. ======================== ...

  3. KVM部署及硬件参数更改

    一.kvm虚拟化环境搭建准备 1.硬件环境 kvm只能部署在物理机上面. 2.BIOS开启VT Virtualization Tech [Enabled] 3.查看cpu 是否支持kvm 全虚拟化 # ...

  4. ProxySQL Cluster 高可用集群 + MySQL MGR环境部署 (多写模式) 部署记录

    文章转载自:https://blog.51cto.com/u_6215974/4937192 ProxySQL 在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数 ...

  5. Redis集群环境的部署记录

    Redis Cluster终于出了Stable,这让人很是激动,等Stable很久了,所以还是先玩玩. 一. 集群简单概念. Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施( ...

  6. 【转】libvirt kvm 虚拟机上网 – Bridge桥接

    libvirt kvm 虚拟机上网 – Bridge桥接 2013 年 7 月 3 日 / 东东东 / 暂无评论 目录 [hide] 1 Bridge桥接原理 2 在host机器配置桥接网络 2.1  ...

  7. kafka 基础知识梳理及集群环境部署记录

    一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...

  8. Docker集中化web界面管理平台-Shipyard部署记录

    Docker图形页面管理工具基本常用的有三种: DOCKER UI,Shipyard,Portainer.对比后发现,Shipyard最强大,其次是Portainer,最后是Docker ui.之前介 ...

  9. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

随机推荐

  1. PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) 目录 PAT (Basic Level) Practice (中文) 1050 螺旋矩阵 (25 分) ...

  2. C++中的广义集合于for范围访问

    在C++11中可以通过for在范围循环中访问广义集合 如: std::vetcor v={1,2,3}; int a[4] {1,2,3,4}; std::array<int,4>a2 { ...

  3. [C++]一篇文章搞懂C++中五花八门的各种初始化

    总结 初始化的概念:创建变量时赋予它一个值(不同于赋值的概念) 类的构造函数控制其对象的初始化过程,无论何时只要类的对象被创建就会执行构造函数 如果对象未被用户指定初始值,那么这些变量会被执行默认初始 ...

  4. Qt中检查槽函数connect是否正确

    环境:VS2017+Qt插件 一般情况下VS+QT环境下运行的QT程序输出信息需要在调试模式的输出栏可以看到,由于太多信息所以导致查看不方便(当然也可以在筛选选项中筛选信息). 有更方便查看输出信息的 ...

  5. Vue和Node.js交互之token

    博主最近工作的时候,公司后台使用的JAVA,在做登陆时总会传来一个token然后我存在了本地存储中或Vuex中,之后每一次请求把它带在请求头上,然后就好奇想要自己做一个后台服务器然后做一个完整的登陆的 ...

  6. 数据结构之Queue | 让我们一块来学习数据结构

    前面的两篇文章分别介绍了List和Stack,下面让我们一起来学习Queue 数据结构之List | 让我们一块来学习数据结构 数据结构之Stack | 让我们一块来学习数据结构 队列的概况 队列是一 ...

  7. new、delete、析构函数、自动类型转换

    new 分配内存,返回指针 new 类型名T (初值列表) 功能:申请用于存放T类型对象的内存空间,并依初值列表赋以初值 结果值: 成功->T类型的指针,指向新分配的内存 失败->0(NU ...

  8. 034- do_while语句

    语法 初始化语句; do { 循环体语句; 控制条件语句; }while(boolean表达式); 执行过程: 首先会执行do循环体中的语句,然后运算while中的boolean表达式,如果是true ...

  9. 05- web网站链接测试与XENU工具使用

    什么是链接 链接也叫超链接,是指从某一个网页元素指向另一个目标的连接关系,这个目标可以是另一个网站的网页,可以是本网站的一个网页,可以使同一个网页的不同位置,还可以是一个图片,一个视频,一个文件甚至是 ...

  10. 《IDA Pro 代码破解解密》笔记一

    博客地址:http://blog.csdn.net/qq1084283172/article/details/53158970 return 0;  C语言返回0语句的汇编形式 Intel-32汇编: ...