Virtualizácia

Tomáš Jašek, xjasek@fi.muni.cz

Obsah

Virtualizácia

Prečo virtualizovať?

Úrovne virtualizácie

Na úrovni OS

Typické vlastnosti

Príklady

Výhody:

Nevýhody:

Emulácia HW

Typické vlastnosti

Príklady

Výhody

Nevýhody

Plná virtualizácia

Príklady

Výhody

Nevýhody

Paravirtualizácia

Príklady

Výhody

Nevýhody

Systémy pre správu virtuálnych strojov

libvirt

Inštalácia

  1. nainštalovať balíčky libvirt a qemu
  2. nastaviť užívateľa a skupinu pod ktorými bude bežať qemu v /etc/libvirt/qemu.conf (viz príklad nižšie)
  3. zapnúť službu libvirtd

Fragment /etc/libvirt/qemu.conf:
user = "root"
group = "root"

Tieto riadky sú štandardne v súbore ako komentár.

Vytvorenie virtuálneho stroja

  1. uložíme XML príklad nižšie do súboru protoXY.xml
  2. vytvorenie: virsh define protoXY.xml (v závislosti od konfigurácie môže vyžadovať práva root)
  3. spustenie: virsh start QEMU-fedora-i686 (v závislosti od konfigurácie môže vyžadovať práva root)

Vytvorený virtuálny stroj môžeme zastaviť a odstrániť príkazom virsh undefine QEMU-fedora-i686. Príkaz odstráni stroj len z libvirt; image disku v súbore zostáva nedotknutý.

Príklad konfiguračného súboru pre doménu (prevzatý z Dokumentácie libvirt):

<domain type='qemu'>
<name>QEMU-fedora-i686</name>
<uuid>c7a5fdbd-cdaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='i686' machine='pc'>hvm</type>
<boot dev='cdrom'/>
</os>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='cdrom'>
<source file='/home/user/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>
<disk type='file' device='disk'>
<source file='/home/user/fedora.img'/>
<target dev='hda'/>
</disk>
<interface type='network'>
<source network='default'/>
</interface>
<graphics type='vnc' port='-1'/>
</devices>
</domain>

Migrácia virtuálneho stroja

Obrázky

Virtualizácia I/O zariadení

Možné varianty:

Sprístupnenie fyzického hardware

USB hardware je možné sprístupniť od verzie 0.4.4, PCI a SCSI je možné sprístupníť jedine pri použití KVM.

<devices>

<hostdev mode='subsystem' type='usb'>
<source startupPolicy='optional'>
<vendor id='0x1234'/>
<product id='0xbeef'/>
</source>
<boot order='2'/>
</hostdev>

<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x06' slot='0x02' function='0x0'/>
</source>
<boot order='1'/>
<rom bar='on' file='/etc/fake/boot.bin'/>
</hostdev>

</devices>

(Príklad prevzatý z Dokumentácie libvirt)

Pripojenie CD-ROM s ISO

<disk type='file' device='cdrom'>
<source file='/home/user/boot.iso'/>
<target dev='hdc'/>
<readonly/>
</disk>

Pripojenie obrazu disku do libvirt

Do konfiguračného XML-ka domény pridáme túto sekciu (samozrejme cestu k obrazu disku upravíme podľa potreby):

<disk type='file' device='disk'>
<source file='/root/protoXY_beta.img'/>
<target dev='hda'/>
</disk>

Formáty virtuálnych diskov

RAW

QCOW2

VDI

VMDK

Konverzia medzi formátmi

Príklady prevzaté z ArchWiki článku o VirtualBoxe

Vytvorenie nového disku pomocou qemu-img

qemu-img create -f raw protoXY_beta.img 4G

Pripojenie virtuálnych strojov do siete

Defaultné nastavenie QEMU

Možnosť presmerovať porty

Point-to-point spojenie systémov

Ako na to s libvirt

  1. Pridať sekciu <interface> (príklad nižšie) do konfiguračného XML-ka domény
  2. Pridať si na fyzický systém skript, ktorý nastavuje IP adresu rozhrania a smerovacie pravidlá pre TAP rozhranie (minimálny príklad nižšie)
  3. Na virtuálnom systéme nastaviť statickú IP pre rozhranie a smerovacie pravidlá
interface sekcia pre XML

<interface type='ethernet'>
<target dev='mytap1' />
<model type='virtio'/>
<script path="/root/qemu-ifup" />
</interface>

skript na nastavovanie IP adresy
#!/bin/bash

iface=mytap1
addr=10.0.0.1
prefix=24

ip addr add $addr/$prefix broadcast + dev $iface

POZOR!

  1. názov rozhrania mytap1 musí byť rovnaký ako názov rozhrania v interface sekcii v XML
  2. tento skript musí byť umiestnený v /root/qemu-ifup

Literatura