Portál AbcLinuxu, 1. května 2025 00:45

ATOL: Linux Virtualization with XEN and KVM

17.6.2009 11:37 | Přečteno: 2631× | Linux | Výběrový blog

Author: Sreenivas Reddy Bathula
Our physical CPU can handle multiple guest operating systems by Virtualization. Guest operating systems can handle their own applications. Virtualization has two options, Paravirtualization and Fullvirtualization (1).

Paravirtualization is fundamentally faster than full virtualization, with the exception of the user space implementation in UML type. OS-level virtualization is yet faster than paravirtualization, it can achieve native speed. Virtual machines performance can vary wildly depending on workload. Memory and CPU hotplug allows one to run more virtual machines on a system simultaneously, adjusting the amount of memory allocated to each guest depending on load.

Full virtualization performance in KVM and Xen is largely limited by the overhead of trap & emulate. Emulating multiple instructions at once at the time of a trap should bring it up to speed with VMware. Qemu can emulate different guest architectures. Qemu also has the distinction of being the only full virtualization technology that can run without root privileges. Parts of Qemu are used in the full virtualization implementations of Xen and KVM (2). In these days latest processors like Intel and AMD has hardware support for virtualization.

XEN

Xen is a virtual machine monitor for X86, it’s an open source software supports multiple guest operating systems. Xen is released under the terms of the GNU General Public License. Xen become popular recently, it came up with alternative to VMWare. Xen supports almost all traditional Linux kernels very well (3).

Steps for Xen Kernel Virtualization:

  1. Install Xen :
    $ yum update
    $ yum install xen
    $ yum install kernel-xen0
    $ yum install kernel-xenU
    
  2. Check grub.conf to boot Xen :
    title Xen 2.0 / XenLinux 2.6.9
      kernel /boot/xen.gz dom0_mem=131072
      module /boot/vmlinuz-2.6.9-xen0 root=/dev/hda1 ro console=tty0
    
  3. If it is started with xend then check xm list
    HOSTA:/etc/xen/scripts # xm list
    Name              Id  Mem(MB)  CPU  State  Time(s)  Console
    Domain-0           0      123    0  r----     41.2
    
  4. Building a Virtual Host: Create Physical Volume, Volume Group, Logical Volume and Root Device
     pvcreate /dev/sda5
    $ vgcreate vm_volumes /dev/sda5
    $ vgchange -a y vm_volumes
    $ lvcreate -L4096 -nroot.dokeos vm_volumes
    $ lvcreate -L2048 -nvar.dokeos vm_volumes
    $ lvcreate -L256 -nswap.dokeos vm_volumes
    $ lvcreate -L1024 -nwww.dokeos vm_volumes
    $ yum --installroot=/vhosts/root.dokeos/ -y groupinstall Base
    $ MAKEDEV -d /path/dev -x console
    $ MAKEDEV -d /path/dev -x null
    $ MAKEDEV -d /path/dev -x zero
    
  5. Set up Xen's config files :
    root@xen xen]# cat dokeos.x-tend.be
    kernel = "/boot/vmlinuz-2.6.11-1.1366_FC4xenU"
    memory = 128
    name   = "dokeos.x-tend.be"
    nics   = 1
    extra  = "selinux=0  3"
    vif    = ['ip = "10.0.11.13", bridge=xen-br0']
    disk   = ['phy:vm_volumes/root.dokeos,sda1,w'
             ,'phy:vm_volumes/var.dokeos,sda3,w'
             ,'phy:vm_volumes/www.dokeos,sda4,w'
             ,'phy:vm_volumes/swap.dokeos,sda2,w'
             ]
    root   = "/dev/sda1 ro"
    Then run [root@xen xen]# cat dokeos.x-tend.be
    kernel = "/boot/vmlinuz-2.6.11-1.1366_FC4xenU"
    memory = 128
    name   = "dokeos.x-tend.be"
    nics   = 1
    extra  = "selinux=0  3"
    vif    = ['ip = "10.0.11.13", bridge=xen-br0']
    disk   = ['phy:vm_volumes/root.dokeos,sda1,w'
             ,'phy:vm_volumes/var.dokeos,sda3,w'
             ,'phy:vm_volumes/www.dokeos,sda4,w'
             ,'phy:vm_volumes/swap.dokeos,sda2,w'
             ]
    	root   = "/dev/sda1 ro"
    
  6. $ xm create config file
    

    After booting xen virtual machine will be ready.

KVM

KVM can start with hypervisor (Process of host operating system), it needs hardware support. It works like an independent Linux kernel, which can run any application. Memory virtualized through KVM. Input/Output is virtualized through QEMU(4).

    Steps for KVM Kernel Virtualization:
  1. KVM module can be loaded at /dev/kvm. Next CPU support for KVM virtualization has to be checked and enabled.
  2. Enable device drivers: Device Drivers > Virtualization
  3. Create disk image (qeumu-img) for guest operating system
    $ qemu-img create -f qcow vm-disk.img 4G
  4. Boot operating system to virtual disk Ex : from CD-ROM
     $ kvm -no-acpi -m 384 -cdrom guestos.iso -hda vm-disk.img -boot d
  5. Call kvm_init to open /dev/kvm module Create KVM kvm_create (virtual CPU (VCPU) with an ioctl (KVM_CREATE_VCPU).) Run KVM (kvm_run (using ioctl KVM_RUN).)
  6. KVM hypervisor check up
    int main()
    {
    	void *vm_mem;
    
    	kvm = kvm_init(&test_callbacks, 0);
    	if (!kvm) {
    	    fprintf(stderr, "kvm_init failed\n");
    	    return 1;
    	}
    	if (kvm_create(kvm, 128 * 1024 * 1024, &vm_mem) < 0) {
    	    kvm_finalize(kvm);
    	    fprintf(stderr, "kvm_create failed\n");
    	    return 1;
    	}
    	if (ac > 1)
    	    if (strcmp(av[1], "-32") != 0)
    		load_file(vm_mem + 0xf0000, av[1]);
    	    else
    		enter_32(kvm);
    	if (ac > 2)
    	    load_file(vm_mem + 0x100000, av[2]);
    	kvm_show_regs(kvm, 0);
    
    	kvm_run(kvm, 0);
    
    	return 0;
    }
    

Overall KVM is the best but it needs few changes regarding changing kernel to hypervisor. Advantages are it can use kernel effectively and it has independent hypervisor. Drawbacks are it requires special processors and user space.

Reference

       

Hodnocení: 67 %

        špatnédobré        

Anketa

How do you rate this article?
 (8 %)
 (71 %)
 (21 %)
Celkem 24 hlasů

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

belisarivs avatar 17.6.2009 11:42 belisarivs | skóre: 22 | blog: Psychobláboly
Rozbalit Rozbalit vše Re: ATOL: Linux Virtualization with XEN and KVM
Odpovědět | Sbalit | Link | Blokovat | Admin

Mezi Exhaustive a Informative by se hodil jeste jeden stupen.

Par radku treba o KVM ma k Exhaustive daleko, ale zaroven to neni jenom informativni zmineni par prikazu.

IRC is just multiplayer notepad.
17.6.2009 11:44 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: ATOL: Linux Virtualization with XEN and KVM

Vďaka za podnet, ale podľa mňa 3 voľby stačia (aj tak je bežných len pár hlasov). Na hodnotenie študentov to nemá žiaden priamy vplyv.

belisarivs avatar 17.6.2009 13:01 belisarivs | skóre: 22 | blog: Psychobláboly
Rozbalit Rozbalit vše Re: ATOL: Linux Virtualization with XEN and KVM

Ony tam chybi docela dulezite informace jako treba sprava Xenovych stroju pomoci xm a neco podobneho u kvm.

Nekdy proste masina vytuhne, nekdy je ji potreba zrusit a tak.

IRC is just multiplayer notepad.
17.6.2009 13:04 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Zavaděč Xenu
Odpovědět | Sbalit | Link | Blokovat | Admin
Uvítal bych povídání o zavádění Xenu. Jednou to po mně někdo chtěl nastavit a v rychlosti jsem zjistil, že Xen je v podstatě obraz hypervizoru, kterému se musí na správné místo dodat obraz Dom0 jádra. Něco jako u Linuxu init ram disk. Sranda začíná, když potřebujete zavést všechny tři obrazy najednou (Xen, Dom0-Linux a initrd). GRUB implementuje rozhraní Xenu přes module. Já jsem to zkoušel přes LILO (kvůli LVM nad MD), tam bylo nutné všechny tři obrazy zabalit do Linuxu kompatibilní obálky, kterou LILO načetlo a která teprve pak vybalila obrazy a spustila Xen. Změnilo se na tom něco?
17.6.2009 14:42 Marek 'marx' Grác | skóre: 21 | blog: Paralelný blog | Brno / Bratislava
Rozbalit Rozbalit vše Re: Zavaděč Xenu

To znie zaujímavo, budúci rok by som to zadal ako tému :)

belisarivs avatar 17.6.2009 22:45 belisarivs | skóre: 22 | blog: Psychobláboly
Rozbalit Rozbalit vše Re: Zavaděč Xenu

Jaky je smysl toho co popisujes?

Protoze treba takove opensuse nema s rozbehanim problem. Proste nainstalujes xen, ten se sam prida do grubu, nabootujes jej a pres vm-install (ktery jde pouzit i jako neinteraktivni s parametrama) nainstalujes systemy dle libosti.

Takhle uz jsem snad nainstaloval vic systemu nez normalnich nevirtualizovanych.

A dalsi skvela vec je v opensuse autoyast. Proste si nechas na konci instalace klonovat system do xml konfiguraku a pri dalsi instalaci jenom predhodis ten konfigurak vm-installu. Cili napises jeden prikaz a jenom pockas na dokonceni instalace. Bez jedineho kliknuti.

IRC is just multiplayer notepad.
18.6.2009 09:49 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Zavaděč Xenu

A měl jste kořenový souborový systém na LVM nad softwarovým RAIDem a obraz jádra taky na RAIDem? A všechno (SETUP, zavaděč, Xen, Dom0) řešené přes sériovou konzoli?

Pokud to všechno GRUB/OpenSUSE už zvládne, pak je to dobré. Drobný detail je, že já jsem to dělal na Gentoo.

Smyslem je osvětlit, jak věci fungují. Ne ukázat na tajemné tlačítko instalátoru jedné distribuce.

17.6.2009 20:40 azurIt | skóre: 34 | blog: zatial_bez_mena
Rozbalit Rozbalit vše Re: ATOL: Linux Virtualization with XEN and KVM
Odpovědět | Sbalit | Link | Blokovat | Admin
Create disk image (qeumu-img) for guest operating system

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.