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. 18. vue-router案例-tabBar导航

    目标: 做一个导航tabbar 一. 分析 我们的目标是做一个导航tabbar, 要求 这个导航不仅可以在一个页面使用, 可以在多个页面通用 每个页面的样式可能不一样 每个页面的图标, 文字可能不一样 ...

  2. [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.6 环路增益的测量/9.7 本章小结

    9.6 环路增益的测量 测量原型反馈系统的环路增益是一个非常好的工程实践.这种实践的目的是验证系统是否被正确地建模.如果是的,那么已经应用了良好控制器设计的系统,其特性将满足相关瞬态过冲(相角裕度), ...

  3. SpringBoot整合Swagger2及使用

    简介 swagger是一个流行的API开发框架,这个框架以"开放API声明"(OpenAPI Specification,OAS)为基础, 对整个API的开发周期都提供了相应的解决 ...

  4. php添加excel更新数据表数据

    公司有个需求,是用excel更新数据的,把错误的行列放到一个数组返回出来,正常的数据则插入,且返回数量 1.先需要引入phpspreadsheet,这里使用composer 安装 composer r ...

  5. 编程相关术语(Python)

    1. 程序的组成 程序 (program):(1)由一系列定义计算机如何执行计算的指令组成.(本质) (2)程序(算法)由对象.表达式和语句组成.(元素) 1.1程序的指令类型 输入 (input): ...

  6. Vue3.0中引入地图(谷歌+高德+腾讯+百度)

    1 概述 项目需求需要引入地图,对于目前最新的Vue3.0,无论是百度/高德/腾讯地图目前还没有适配,只有Vue 2.x版本的: 目前只有谷歌地图的Vue3.0适配: 但是没有适配并不代表不能使用,本 ...

  7. 多图详解 TCP 连接管理,太全了!!!

    TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...

  8. Day13_67_interrupt() 方法

    interrupt() 方法 中断线程 * interrupt()方法的简单理解 - interrupt() 方法只是改变线程的阻塞状态而已,让一个正在阻塞状态的线程,恢复执行.但是它不会中断一个正在 ...

  9. kuberadm安装kubernetes

    系统基础环境准备 环境信息 2台 Centos 7.5 cat /etc/hosts 192.168.100.101 k8s-master 192.168.103.102 k8s-node1 serv ...

  10. LinearDiscriminantAnalysis参数、属性和方法

    [LDA]线性判别分析 参数: solver:一个字符串,指定了求解最优化问题的算法,可以为如下的值. 'svd':奇异值分解.对于有大规模特征的数据,推荐用这种算法. 'lsqr':最小平方差,可以 ...