User Tools

Site Tools


технология_kvm

This is an old revision of the document!


Технология KVM

Установка

  • !!! 4GB RAM в хост систему (однажды хватило 2:)
# egrep -c '(vmx|svm)' /proc/cpuinfo

# apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager

# apt install libosinfo-bin
# osinfo-query os

Создание образа VM из дистрибутива

node1# wget -O /tmp/WindowsXPProSP3_rus_boot.iso http://val.bmstu.ru/unix/iso/WindowsXPProSP3_rus_boot.iso

node1# virt-install --name winxp --os-type windows --os-variant winxp \
--ram 512 --vcpu 1 --disk path=/disk3/winxp.qcow2,size=2 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --hvm \
--network bridge=br0,model=rtl8139 \
--cdrom /tmp/WindowsXPProSP3_rus_boot.iso --boot cdrom,hd

node1# virsh list --all

node1# virsh vncdisplay winxp1
:0

Подключаемся любым vnc клиентом (Сервис VNC) к порту 5900, в процессе инсталляции XP VM надо будет повторно запустить

# virsh start winxp

# virsh shutdown winxp
или принудительная остановка VM
# virsh destroy winxp

# virsh dumpxml winxp | tee winxp.xml

# virsh undefine winxp

# cp /disk3/winxp.qcow2 /disk3/winxp1.qcow2

Создание конфигурации VM из образа

node1# wget http://val.bmstu.ru/unix/img/winxp.qcow2.zip

node1# zcat winxp.qcow2.zip > /disk3/winxp1.qcow2

node1# virt-install --name winxp1 --os-type windows --os-variant winxp \
--ram 512 --vcpu 1 --disk path=/disk3/winxp1.qcow2 --graphics vnc,listen=0.0.0.0 \
--noautoconsole --hvm --boot hd --network bridge=br0,model=rtl8139 \
--print-xml | tee /disk3/winxp1.xml

node1# virsh define /disk3/winxp1.xml
node1# virsh edit winxp1
node1# virsh start winxp1
node1# virsh undefine winxp1

или, запуск без регистрации VM в KVM

node1# virsh create /disk3/winxp1.xml
node1# virsh vncdisplay winxp1

Миграция VM

  • Для “зрелищности” можно подключиться к winxp1 по RDP и/или подключиться с winxp1 по ssh к server1
node1# virsh migrate --live winxp1 qemu+ssh://node2/system

node1# virsh -c qemu+ssh://node2/system list

node1# virsh -c qemu+ssh://node2/system shutdown winxp1

Интеграция с Pacemaker

node1# ssn2 virsh -c qemu+ssh://node1/system list    # проверка ssh доступа с node2 на node1

crm(live/node1)configure# primitive pr_vm_winxp1 ocf:heartbeat:VirtualDomain params config=/disk3/winxp1.xml migration_transport=ssh meta allow-migrate=true

Исходные материалы

op_defaults op-options: \
        timeout=240s



virsh list --all

virt-install --name winxp1 --os-type windows --os-variant winxp --ram 512 \
--vcpu 1 --disk path=/var/lib/libvirt/winxp1.qcow2,size=2 \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--hvm --cdrom /var/lib/libvirt/boot/WindowsXPProSP3_rus_boot.iso --boot cdrom,hd

virsh domiflist winxp1

virsh detach-interface --domain winxp1 --type network --mac 52:54:00:47:2f:eb --config

virsh attach-interface --domain winxp1 --type bridge --source br0 --model virtio --config

https://www.linux.org.ru/forum/general/9132978

wget https://launchpad.net/kvm-guest-drivers-windows/20120712/20120712/+download/virtio-win-drivers-20120712-1.vfd


# virsh attach-disk winxp1 /var/lib/libvirt/floppy/virtio-win-drivers-20120712-1.vfd fda --type floppy --config
# virsh detach-disk winxp1 fda --config


# virsh vncdisplay winxp1



# virsh -c qemu+ssh://node2/system list --all

===

https://unix.stackexchange.com/questions/405955/virsh-pool-storage-basics
virsh pool storage basics

# virsh undefine winxp2

# mv /var/lib/libvirt/images/winxp2.qcow2 /disk2/images/

https://serverfault.com/questions/919538/do-not-start-guest-after-virt-install
Do not start guest after virt-install

# virt-install --name winxp2 --os-type windows --os-variant winxp \
--ram 512 --vcpu 1 --disk path=/disk2/images/winxp2.qcow2 \
--graphics vnc,listen=0.0.0.0 --noautoconsole --hvm --boot hd \
--network bridge=br0,model=rtl8139 --print-xml | tee /disk2/winxp2.xml

root@node1.corp13.un:~# cat /disk2/winxp2.xml
<domain type="kvm">
  <name>winxp2</name>
  <uuid>49df6ece-0b2e-43b4-ad79-d23493db0ad5</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/xp"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch="x86_64" machine="pc-i440fx-focal">hvm</type>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
    </hyperv>
  </features>
  <cpu mode="host-model"/>
  <clock offset="localtime">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
    <timer name="hypervclock" present="yes"/>
  </clock>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/disk2/images/winxp2.qcow2"/>
      <target dev="hda" bus="ide"/>
    </disk>
    <controller type="usb" index="0" model="ich9-ehci1"/>
    <controller type="usb" index="0" model="ich9-uhci1">
      <master startport="0"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci2">
      <master startport="2"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci3">
      <master startport="4"/>
    </controller>
    <interface type="bridge">
      <source bridge="br0"/>
      <mac address="52:54:00:7b:b5:6e"/>
      <model type="rtl8139"/>
    </interface>
    <console type="pty"/>
    <input type="tablet" bus="usb"/>
    <graphics type="vnc" port="-1" listen="0.0.0.0"/>
    <video>
      <model type="qxl"/>
    </video>
  </devices>
</domain>


# virsh define /disk2/winxp2.xml
....... create .... ???




virsh -c qemu+ssh://node2/system shutdown winxp2


# cat /disk2/drbd-pool.xml
<pool type='dir'>
  <name>drbd-pool</name>
  <target>
    <path>/disk2/images</path>
  </target>
</pool>

  746  virsh pool-define /disk2/drbd-pool.xml
  748  virsh pool-start drbd-pool
  750  virsh pool-autostart drbd-pool

node1# virsh migrate --live winxp qemu+ssh://node2/system

primitive pr_vm_winxp2 ocf:heartbeat:VirtualDomain params config=/disk2/winxp2.xml migration_transport=ssh meta allow-migrate=true

primitive pr_vm_winxp2 VirtualDomain \
        params config="/disk2/winxp2.xml" migration_transport=ssh \
        meta allow-migrate=true target-role=Stopped \
        utilization cpu=1 hv_memory=512



======

https://blog.bayrell.org/ru/linux/libvirt/8-ustanovka-lxc-konteynerov-cherez-libvirt.html
https://stackoverflow.com/questions/63685175/qemuvirt-manager-cant-connect-to-virtlxcd-sock

sudo apt install libvirt-daemon-driver-lxc
sudo systemctl restart libvirtd

virsh -c lxc:///

virsh -c lxc+ssh://node1/
технология_kvm.1658980661.txt.gz · Last modified: 2022/07/28 06:57 by val