XStar's Libvirt+KVM部署记录

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

准备工作

  • CPU支持检查

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

  1. kvm-ok
  2. # 或
  3. grep -E "vmx|svm" /proc/cpuinfo
  4. # Intel CPU:vmx
  5. # 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
  • 从源安装

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

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

libvirt配置

  • /etc/default/libvirt-bin

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

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

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

    1. sudo apt-get -y install bridge-utils

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

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

配置主机网络

  • 配置/etc/network/interfaces

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

libvirt网络配置

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

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

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

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

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

    1. # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    2. *nat
    3. :PREROUTING ACCEPT [310:34187]
    4. :INPUT ACCEPT [41:4149]
    5. :OUTPUT ACCEPT [471:31957]
    6. :POSTROUTING ACCEPT [711:59731]
    7. -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
    8. -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
    9. -A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
    10. COMMIT
    11. # Completed on Sat Dec 14 01:24:40 2013
    12. # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    13. *mangle
    14. :PREROUTING ACCEPT [789078:428240757]
    15. :INPUT ACCEPT [381196:51105050]
    16. :FORWARD ACCEPT [407928:377150708]
    17. :OUTPUT ACCEPT [399811:110095092]
    18. :POSTROUTING ACCEPT [807739:487245800]
    19. -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
    20. COMMIT
    21. # Completed on Sat Dec 14 01:24:40 2013
    22. # Generated by iptables-save v1.4.12 on Sat Dec 14 01:24:40 2013
    23. *filter
    24. :INPUT ACCEPT [381157:51098101]
    25. :FORWARD ACCEPT [0:0]
    26. :OUTPUT ACCEPT [399811:110095092]
    27. -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
    28. -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
    29. -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
    30. -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
    31. -A INPUT -i virbr1 -p udp -m udp --dport 53 -j ACCEPT
    32. -A INPUT -i virbr1 -p tcp -m tcp --dport 53 -j ACCEPT
    33. -A INPUT -i virbr1 -p udp -m udp --dport 67 -j ACCEPT
    34. -A INPUT -i virbr1 -p tcp -m tcp --dport 67 -j ACCEPT
    35. -A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    36. -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
    37. -A FORWARD -i virbr0 -o virbr0 -j ACCEPT
    38. -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
    39. -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
    40. -A FORWARD -i virbr1 -o virbr1 -j ACCEPT
    41. -A FORWARD -o virbr1 -j REJECT --reject-with icmp-port-unreachable
    42. -A FORWARD -i virbr1 -j REJECT --reject-with icmp-port-unreachable
    43. COMMIT
    44. # Completed on Sat Dec 14 01:24:40 2013
  • libvirt为default网络启动的dnsmasq进程

    1. /usr/sbin/dnsmasq \
    2. -u libvirt-dnsmasq \
    3. --strict-order \
    4. --bind-interfaces \
    5. --pid-file=/var/run/libvirt/network/default.pid \
    6. --conf-file= \
    7. --except-interface lo \
    8. --listen-address 192.168.122.1 \
    9. --dhcp-range 192.168.122.2,192.168.122.254 \
    10. --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases \
    11. --dhcp-lease-max=253 \
    12. --dhcp-no-override

常用管理操作

常用工具

  1. virsh
  2. virt-install
  3. virt-manager
  4. virt-clone
  5. virt-convert
  6. virt-image
  7. qeum-img

连接libvirtd

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

配置存储池

  • data.xml

    1. <pool type='dir'>
    2. <name>data</name>
    3. <uuid>117251c7-3444-a5e3-3174-1947c4933321</uuid>
    4. <capacity>446342758400</capacity>
    5. <allocation>7004667904</allocation>
    6. <available>439338090496</available>
    7. <source>
    8. </source>
    9. <target>
    10. <path>/data/libvirt/images</path>
    11. <permissions>
    12. <mode>0700</mode>
    13. <owner>-1</owner>
    14. <group>-1</group>
    15. </permissions>
    16. </target>
    17. </pool>
  • ISOs.xml
    1. <pool type='dir'>
    2. <name>ISOs</name>
    3. <uuid>e77d9811-5497-521d-0d50-e5104c7e66b1</uuid>
    4. <capacity>446342758400</capacity>
    5. <allocation>7004667904</allocation>
    6. <available>439338090496</available>
    7. <source>
    8. </source>
    9. <target>
    10. <path>/data/ISOs</path>
    11. <permissions>
    12. <mode>0700</mode>
    13. <owner>-1</owner>
    14. <group>-1</group>
    15. </permissions>
    16. </target>
    17. </pool>
  • 存储池名称
    1. virsh pool-list
    2. Name State Autostart
    3. -----------------------------------------
    4. data active yes
    5. ISOs active yes

第一个虚拟机

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

  • Ubuntu.xml

    1. <domain type='kvm' id='2'>
    2. <name>Ubuntu</name>
    3. <uuid>d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</uuid>
    4. <memory>1048576</memory>
    5. <currentMemory>1048576</currentMemory>
    6. <vcpu>2</vcpu>
    7. <os>
    8. <type arch='x86_64' machine='pc-1.0'>hvm</type>
    9. <boot dev='cdrom'/>
    10. <boot dev='hd'/>
    11. </os>
    12. <features>
    13. <acpi/>
    14. <apic/>
    15. <pae/>
    16. </features>
    17. <clock offset='utc'/>
    18. <on_poweroff>destroy</on_poweroff>
    19. <on_reboot>destroy</on_reboot>
    20. <on_crash>destroy</on_crash>
    21. <devices>
    22. <emulator>/usr/bin/kvm</emulator>
    23. <disk type='file' device='disk'>
    24. <driver name='qemu' type='qcow2'/>
    25. <source file='/data/libvirt/images/Ubuntu.img'/>
    26. <target dev='vda' bus='virtio'/>
    27. <alias name='virtio-disk0'/>
    28. <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    29. </disk>
    30. <disk type='file' device='cdrom'>
    31. <driver name='qemu' type='raw'/>
    32. <source file='/data/ISOs/ubuntu-12.04.3-server-amd64.iso'/>
    33. <target dev='hdc' bus='ide'/>
    34. <readonly/>
    35. <alias name='ide0-1-0'/>
    36. <address type='drive' controller='0' bus='1' unit='0'/>
    37. </disk>
    38. <controller type='ide' index='0'>
    39. <alias name='ide0'/>
    40. <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    41. </controller>
    42. <interface type='bridge'>
    43. <mac address='52:54:00:6c:07:87'/>
    44. <source bridge='virbr1'/>
    45. <target dev='vnet0'/>
    46. <model type='virtio'/>
    47. <alias name='net0'/>
    48. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    49. </interface>
    50. <serial type='pty'>
    51. <source path='/dev/pts/1'/>
    52. <target port='0'/>
    53. <alias name='serial0'/>
    54. </serial>
    55. <console type='pty' tty='/dev/pts/1'>
    56. <source path='/dev/pts/1'/>
    57. <target type='serial' port='0'/>
    58. <alias name='serial0'/>
    59. </console>
    60. <input type='mouse' bus='ps2'/>
    61. <graphics type='vnc' port='5900' autoport='yes'/>
    62. <video>
    63. <model type='cirrus' vram='9216' heads='1'/>
    64. <alias name='video0'/>
    65. <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    66. </video>
    67. <memballoon model='virtio'>
    68. <alias name='balloon0'/>
    69. <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    70. </memballoon>
    71. </devices>
    72. <seclabel type='dynamic' model='apparmor' relabel='yes'>
    73. <label>libvirt-d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</label>
    74. <imagelabel>libvirt-d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91</imagelabel>
    75. </seclabel>
    76. </domain>
  • 虚拟机进程
    1. # 进程以libvirt-qemu用户身份运行
    2. /usr/bin/kvm \
    3. -S \
    4. -M pc-1.0 \
    5. -enable-kvm \
    6. -m 1024 \
    7. -smp 2,sockets=2,cores=1,threads=1 \
    8. -name Ubuntu \
    9. -uuid d2a37ea8-d343-c4bd-c6d0-fb6bd1943f91 \
    10. -nodefconfig \
    11. -nodefaults \
    12. -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Ubuntu.monitor,server,nowait \
    13. -mon chardev=charmonitor,id=monitor,mode=control \
    14. -rtc base=utc \
    15. -no-reboot \
    16. -no-shutdown \
    17. -drive file=/data/libvirt/images/Ubuntu.img,if=none,id=drive-virtio-disk0,format=qcow2 \
    18. -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2 \
    19. -drive file=/data/ISOs/ubuntu-12.04.3-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw \
    20. -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=1 \
    21. -netdev tap,fd=19,id=hostnet0,vhost=on,vhostfd=20 \
    22. -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:6c:07:87,bus=pci.0,addr=0x3 \
    23. -chardev pty,id=charserial0 \
    24. -device isa-serial,chardev=charserial0,id=serial0 \
    25. -usb \
    26. -vnc 127.0.0.1:0 \
    27. -vga cirrus \
    28. -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
  • libvirt通过nc对外服务(自动)
    1. 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
    2. nc -q0 -U /var/run/libvirt/libvirt-sock
    3.  
    4. nc -q 0 127.0.0.1 5900

vmbuilder

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

  • 安装vmbuilder

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

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

  1. vim /etc/vmbuilder/libvirt/libvirtxml.tmpl
  2.  
  3. <target dev='hd$disk.devletters()' />
  4. # to
  5. <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.

  1. 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.

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

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

  • 创建虚拟机

    1. sudo vmbuilder kvm ubuntu -c MyJeOS.cfg --part vmbuilder.partition --timezone=CST -d /data/libvirt/images/JeOS
    2.  
    3. # 或者直接在命令行中指定参数
    4. sudo vmbuilder kvm ubuntu --suite precise --flavour virtual --arch amd64 --libvirt qemu:///system \
    5. --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 \
    6. --domain example.com --user john --name john --pass 12345 \
    7. --verbose --rootsize=20480 --swapsize=2048 --mem 1024 --cpus 1 \
    8. --addpkg=openssh-server --addpkg=vim --addpkg=acpid \
    9. --dest=/var/lib/libvirt/images/gonzo/

virt-install

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

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

参数说明:

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

virt-clone

  • clone卷

    1. virsh -c qemu:///system vol-clone --pool data tmpiEMBDQ.qcow2 JeOS_2.qcow2
  • virt-clone:虚拟机克隆
    1. --connect=CONNECT
    2. -o ORIGINAL_GUEST , --original=ORIGINAL_GUEST 被克隆的原始Guest名称
    3. -m MAC , --mac=MAC MAC地址
    4. --auto-clone, Generate a new guest name, and paths for new storage.
    5. -n NAME , --name=NAME 新虚拟机Guest的名称
    6. -u UUID , --uuid=UUID 指定UUID
    7. -f DISKFILE , --file=DISKFILE
    1. # 将JeOS克隆为指定NAME,按--file指定路径Clone虚拟磁盘。
    2. NAME=JeOS1;
    3. mkdir /data/libvirt/images/$NAME \
    4. && virt-clone \
    5. --connect qemu:///system \
    6. --original JeOS \
    7. --name $NAME \
    8. --file /data/libvirt/images/$NAME/$NAME.qcow2 \
    9. --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. 一键部署etcd集群管理脚本

    一.编写脚本 1 #!/bin/sh 2 # 安装 3 # ./run.sh etcd03 etcd01=http://192.168.2.44:2380,etcd02=http://192.168. ...

  2. java面试-CountDownLatch、CyclicBarrier、Semaphore谈谈你的理解

    一.CountDownLatch 主要用来解决一个线程等待多个线程的场景,计数器不能循环利用 public class CountDownLatchDemo { public static void ...

  3. (一)Struts2框架概述

    一.struts2发展历史 经过很多年发展,Struts1已经成为了高度成熟的框架,但随着时间的发展,Struts1的局限性和缺点不断的暴露出来.      现在Struts已经分化成了两个框架    ...

  4. Day16_97_IO_FileOutputStream 写入字节流

    FileOutputStream 写入字节流 * java.io.OutPutStream -----> java.io.FileOutputStream 将计算机内存中的数据写于磁盘中. * ...

  5. 数据结构之队列(JavaScript描述)

    队列数据结构   队列遵循先进先出原则的一组有序的项.对可在尾部添加新元素并从顶部移除元素.最新添加的元素必须排在队列的末尾 队列类似栈的例子 创建队列 创建一个类表示队列 队列内应该有一些方法 添加 ...

  6. 注册中心与API网关不是这样用的!

    之前在做顾问和咨询项目的时候,见到了一种非常经典的关于API网关和注册中心的错误用法.这个案例在我的星球里已经分享过,没想到最近又碰到了两个类似的使用姿势.也许这样的问题还存在不少团队的应用中,所以拿 ...

  7. 脱壳——UPX脱壳原理(脱壳helloworld)

    脱壳--UPX脱壳原理 脱壳步骤 1 找到OEP 2 dump(导出)内存文件 3 修复 1 找到OEP 1 程序运行先从壳代码运行,壳代码执行完之后会跳转到真正的OEP,也就是是说第一步,首先要找到 ...

  8. POJ3189二分最大流(枚举下界,二分宽度,最大流判断可行性)

    题意:       有n头猪,m个猪圈,每个猪圈都有一定的容量(就是最多能装多少只猪),然后每只猪对每个猪圈的喜好度不同(就是所有猪圈在每个猪心中都有一个排名),然后要求所有的猪都进猪圈,但是要求所有 ...

  9. Windows PE资源表编程(枚举资源树)

    资源枚举 写一个例子,枚举一个PE文件的资源表.首先说下资源相关的作为铺垫. 1.资源类型也是PE可选头中数据目录的一种.位于第三个类型. 2.资源目录分为三层.第四层是描述文件相关的.这些结构是按照 ...

  10. <JVM中篇:字节码与类的加载篇>02-字节码指令集

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...