QEMU-KVM ja virt-manager kasutamine operatsioonisüsteemiga Debian Jessie

Allikas: Imre kasutab arvutit

Sissejuhatus

Käesolev tekst käsitleb Ubuntu v. 14.04 ja Debian Jessie (2014 suve testing) keskkonnas QEMU-KVM virtuaalsete arvutite kasutamist libvirt teegil põhineva virt-manager haldusliidese abil. Tekst on täienduseks ja edasiarenduseks aadressil http://kuutorvaja.eenet.ee/wiki/KVM_kasutamine_Ubuntu_10.04_operatsioonis%C3%BCsteemiga olevale Ubuntu v. 10.04 tekstile.

Käesoleva teksti nö põhiline omapära ja täiendav keerukus seisneb Open vSwitch (OVS) kasutamises. Tulemusena saab tekitada virtuaalsete arvuti jaoks oluliselt realistlikemaid ja huvitavamaid võrguseadistusi. Open vSwitch kasutamist tutvustatakse eraldi tekstis Open vSwitch kasutamine operatsioonisüsteemiga Debian Jessie.

Tundub, et Ubuntu v. 14.04 ja Debian Jessie testing nagu ta on 2014 aasta suvel operatsioonisüsteemi keskkondades tuleb teha samasugused tegevused ja erinevusi pole, seepärast tekstis üldiselt ei täpsustata millises keskkonnas toimetatakse. Ka asjasse puutuvate tarkvaraliste komponentide versioonid on praktiliselt samasugused.

Kirjeldatud lahendus paistab sobivat väga hästi nt läptop või töökohaarvutis kasutamiseks. Põhiline tegevus toimub füüsilisel arvutil töötavas keskkonnnas, sh desktop kasutamine. Ja sellest keskkonnast käivitatakse virt-manager ja tema kaudu virtuaalseid arvuteid.

Tööpõhimõte

Tulemusena peaks olema võimalus tekitada nt sellise võrgutopoloogiaga ühendatud virtuaalseid arvuteid

        internet
           ...
          __|__
         |     |
         |_____| default gw
            |
            |
            |
     -------|----------------|----------
                             |
                             | eth0
           __________________|__________________
          |                                     |
          |                                     |
          |               ovsbr0 (eth0, vlan10) |
          |                                     |
          | vlan10          ||                  |
          |                 ||                  |
          |                 ||  ovs patch       |
          |                 ||                  |
          |                 ||                  |
          |   ____ em0      ||       em0 ____   |
          |  |    |                     |    |  |
          |  |    |       ovsbr1        |    |  |
          |  |____|                     |____|  |
          |        em1               em1        |
          |  test-1                     test-2  |
          |_____________________________________|

kus

  • suur kast märgib füüsilist arvutit, test-1 ja test-2 märgivad virtuaalseid arvuteid
  • eth0 - arvuti füüsilne võrguliides,
  • vlan10 - virtuaalne võrguseade, aadress 192.168.10.48
  • ovsbr0 - switchi kasutatakse põhiliselt selleks, et host ise oleks võrgust ligipääsetav, ühendab kokku eth0 ja vlan10 seadmed
  • nö infrastruktuur kasutab vlan'i sildiga 10
  • ovsbr1 - switchi kasutatakse põhiliselt virtuaalsete arvutite vahelise liikluse jaoks
  • test-1 arvuti em0 ja test-2 arvuti em0 seadmed on ühes vlan'is (silt 10)
  • test-1 arvuti em1 ja test-2 arvuti em1 seadmed on teise vlan'is (silt 20)
  • ovs patch kaabel ühendab kaks switchi, seda kaudu saab nö kõik liiklus läbi

Open vSwitch argoos paistab asjakorraldus selline

# ovs-vsctl show
a2faa303-3aea-4107-b6ec-c5ae1805c37b

   Bridge "ovsbr1"
       Port "patch1"
           Interface "patch1"
               type: patch
               options: {peer="patch0"}
       Port "ovsbr1"
           Interface "ovsbr1"
               type: internal
       Port "vnet0"
           tag: 10
           Interface "vnet0"
       ... 

   Bridge "ovsbr0"
       Port "patch0"
           Interface "patch0"
               type: patch
               options: {peer="patch1"}
       Port "ovsbr0"
           Interface "ovsbr0"
               type: internal
       Port "vlan10"
           tag: 10
           Interface "vlan10"
               type: internal
       Port "eth0"
           tag: 10
           Interface "eth0"

   ovs_version: "2.0.1"

Tundub, et kui kasutaja kuulub gruppi libvirtd, siis saab ta kõiki haldustegevusi, st virsh ja virt-manager kasutamisi teha oma kasutajana, pole tarvis root kasutajana töötada.

Tarkvara paigaldamine

# apt-get install virt-manager qemu-kvm

Tulemusena paigaldatakse muu hulgas selliste versioonidega tarkvara (Debian Jessie puhul v. 1.2.4)

# dpkg -l \*virt\* | grep ii
ii  libvirt-bin     1.2.2-0ubuntu13.1  amd64    programs for the libvirt library
ii  libvirt0        1.2.2-0ubuntu13.1  amd64    library for interfacing with different virtualization systems
ii  python-libvirt  1.2.2-0ubuntu1     amd64    libvirt Python bindings
ii  virt-manager    0.9.5-1ubuntu3     all      desktop application for managing virtual machines
ii  virtinst        0.600.4-3ubuntu2   all      Programs to create and clone virtual machines

Võrgu seadistamine

Tundub, et võrgu seadistamine õnnestub paramini seadistusfaile muutes ja käsurea utiliite kasutades, kui virt-manager haldusliidese abil. Kui ettevalmistused on tehtud, siis piisab siiski ainult virt-manager graafilise kasutajaliidese kasutamisest. Vaikimisi on virt-manageril olemas üks default võrk ja selle võiks jättagi nii nagu ta on, ja mitte kasutada

$ virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

Seejärel kirjeldada virt-manager jaoks iga vlan jaoks üks võrk

$ cat /etc/libvirt/qemu/networks/net-vlan10.xml
 <network>
   <name>net-vlan10</name>
   <forward mode='bridge'/>
   <bridge name='ovsbr1'/>
   <vlan>
     <tag id='10'/>
   </vlan>
   <virtualport type='openvswitch'/>
 </network>

Uue võrgu tekitamiseks kirjelduse alusel

$ virsh net-define net-vlan10.xml  

Kirjeldatud võrgu käivitamiseks

$ virsh net-start net-vlan10

Töötava võrgu seiskamiseks

$ virsh net-destroy net-vlan10

Olemasoleva võrgu muutmiseks sobib öelda

$ virsh net-edit net-vlan10

Olemasoleva võrgu kustutamiseks sobib öelda

$ virsh net-undefine net-vlan10

Ja sarnaselt net-vlan20. Tulemusena võiks olla

$ virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive     no           yes
 net-vlan10           active       yes           yes
 net-vlan20           active       yes           yes

Virtuaalse arvuti moodustamine

Virtuaalne arvuti tuleb tekitada üldiselt tavapärasel viisil, aga võrgu kirjeldus tuleb tõenäoliselt üle vaadata, see peaks olema midagi sellist

..
   <interface type='network'>
     <mac address='52:54:00:a7:3e:03'/>
     <source network='net-vlan10'/>
     <model type='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
   </interface>
...

kus

  • parandusi saab mitte-töötava arvuti seadistustes teha öeldes
$ virsh edit test-1

Virtuaalsete arvutite haldamine

Virtuaalseid arvuteid saab üldiselt edukalt hallata graafilise haldusliidesega valides oma kasutajakeskkonnas

Applications -> System Tools -> Virtual Machine Manager

või käsurealt

$ virt-manager

Käsurealt haldamisel sobib virtuaalse arvuti käivitamiseks öelda

# virsh start test-1

ja seiskamiseks

# virsh destroy test-1

Märkused

Tundub, et võrguseadistused on määratud kahe seadistuse koostõimel

  • üldine kõigi virtaalsete arvutite jaoks kasutatav seadistus failist /etc/libvirt/qemu/networks/net-vlan10.xml
  • konkreetse virtuaalse arvuti seadistusfaili, /etc/libvirt/qemu/test1.xml

Tundub, et praktiliselt sama tulemuse saab saavutada kahel viisil

  • üldises on kirjeldatud rohkem ja virtuaalse arvuti seadistuses vähem, see vastab ülaltoodud juhule
  • üldises on kirjeldatud vähem ja virtuaalses rohkem (võib olla, et üldist pole isegi vaja teatud juhul)
# cat /etc/libvirt/qemu/networks/net-vlan10.xml
..
<network>
  <name>net-vlan10</name>
  <uuid>b06be429-e0e4-4315-a983-19f8f6562056</uuid>
  <forward mode='bridge'/>
</network>
# cat /etc/libvirt/qemu/test-1.xml
 ..
  <interface type='bridge'>
    <mac address='52:54:00:a7:3e:03'/>
    <source bridge='ovsbr0'/>
    <vlan>
      <tag id='10'/>
    </vlan>
    <virtualport type='openvswitch'>
      <parameters interfaceid='c494d914-02ed-46f6-b0aa-ad7133c4f195'/>
    </virtualport>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  </interface>
...
  • Esmalt peale tarkvara paigaldamist tuleb korraks oma kasutaja alt välja logida ja tagasi sisse, et kehtestuks gruppi libvirtd kuuluvus.
  • Kui virtuaalse arvuti tekitamisel öeldakse, et 'Warning: KVM is not available ...', siis tuleb paigaldada pakett
# apt-get install qemu-kvm

Open vSwitch kasutamine

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid