Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
project:kvm [2017/04/03 19:18]
dron
project:kvm [2017/04/07 23:32]
over23 [Používání]
Line 1: Line 1:
 ====== Základní řešení KVM virtualizace ====== ====== Základní řešení KVM virtualizace ======
  
-KVM je virtualizační technologie v Linuxovém jádře, která dalším produktům (např. emulátoru hw počítače - typicky QEMU) zprostředkovává virtualizační ​technoligii ​na CPU.+KVM je virtualizační technologie v Linuxovém jádře, která dalším produktům (např. emulátoru hw počítače - typicky QEMU) zprostředkovává virtualizační ​technologii ​na CPU.
  
 KVM je oblíbený hypervisor a je používaný ve velkém množství virtualizačních produktů (oVirt/​RHEV,​ Proxmox, OpenStack,​...). Pro naše použití nám bude stačit KVM s minimem nádstaveb nad ním. Pro interaktivní manipulaci s virtuály se spokojíme se produktem ''​virt-manager'',​ pro interakci z příkazové řádky postačí ''​virsh''​. KVM je oblíbený hypervisor a je používaný ve velkém množství virtualizačních produktů (oVirt/​RHEV,​ Proxmox, OpenStack,​...). Pro naše použití nám bude stačit KVM s minimem nádstaveb nad ním. Pro interaktivní manipulaci s virtuály se spokojíme se produktem ''​virt-manager'',​ pro interakci z příkazové řádky postačí ''​virsh''​.
  
-Pro spokojený běh virtuálů je potřeba jim poskytnout nějaké zdroje. Zase to uděláme maximálně jednoduše - síť bude realizována probridgeováním rozhranní virtuálů s fyzickým ​rozhranním ​hostitelského serveru. Diskový prostor budeme alokovat z vyhrazené volume group.+Pro spokojený běh virtuálů je potřeba jim poskytnout nějaké zdroje. Zase to uděláme maximálně jednoduše - síť bude realizována probridgeováním rozhranní virtuálů s fyzickým ​rozhraním ​hostitelského serveru. Diskový prostor budeme alokovat z vyhrazené volume group (podporovaných úložišť je samozřejmě více).
  
 +===== Disk =====
  
 +Při instalaci serveru je potřeba pouze pamatovat na to, že pro samostatnou volume groupu je potřeba vytvořit (alespoň jednu) samostatnou physical volume, takže na potřeba na to pamatovat při rozdělování disku.
  
---- +Ručně by to obnášelo zhruba tyto kroky: 
-TODO+  * Vytvoření oddílu na disku 
 +  * Vytvoření physical volume 
 +  * Vytvoření volume group na tomto physical volume
  
-## server +Pokud je ''/​dev/​sda3''​ volný, neobsazený,​ právě vytvořený oddíl, pak jsou druhé dva kroky  
-[root@wintermute ~]# systemctl list-unit-files | grep virt + 
-[root@wintermute ~]# systemctl ​status ​libvirtd +<code bash> 
-[root@wintermute ~]# systemctl restart ​libvirtd +pvcreate /dev/sda3  
-## client +vgcreate vmdata /dev/sda3 
-pavouk@SemioTex ~> ssh muter # root and -X forwarding+</​code>​ 
 + 
 +===== Síť ===== 
 + 
 +Uvnitř hosta to bude vypadat asi takto: 
 + 
 +{{ :​project:​net_schema.png?​direct&​400 |}} 
 + 
 + 
 +===== Instalace ===== 
 + 
 +Popisovaná instalace je na distribuci CentOS7 nainstalované z minimal ISO, informace jsou ale imho dost obecné, takže na jiných distribucích to bude velmi podobné. 
 + 
 +Vlastní instalace KVM (závislostí je celkem dost...). 
 + 
 +<code bash> 
 +yum install libvirt-daemon-kvm qemu-kvm qemu-kvm-tools 
 +</​code>​ 
 + 
 +Zkontrolujeme,​ že se libvird bude spouštět po startu... 
 + 
 +<code bash> 
 +systemctl ​is-enabled ​libvirtd 
 +</​code>​ 
 + 
 +...a spustíme ho. 
 + 
 +<code bash> 
 +service ​libvirtd ​start 
 +</​code>​ 
 + 
 +Instalace managemt utilitky. 
 + 
 +<code bash> 
 +yum install virt-manager dejavu-lgc-sans-fonts xorg-x11-xauth 
 +</​code>​ 
 + 
 +Pozor, jedná se o GUI nástroj a X-windows na serveru nebudeme zbytečně provozovat, takže její spouštění bude následně probíhat pomocí tunelování X-windows session přes SSH. Proto instalujeme i xauth (v minimal verzi se neinstaluje) a také nějaké fonty. 
 + 
 +Zdá se, že od nějaké verze CentOS7 (7.3?) je v konfiguraci sshd defaultně tunelování X11 zakázáno. Povolíme... 
 + 
 +<code bash> 
 +nano /etc/ssh/​sshd_config 
 +</​code>​ 
 + 
 +<​file>​ 
 +... 
 +X11Forwarding yes 
 +... 
 +</​file>​ 
 + 
 +...a otočíme sshd. 
 + 
 +<code bash> 
 +service sshd restart 
 +</​code>​ 
 + 
 +Pokud polezete na server z Linuxu, doporučuji použít dobrodiní ''​config''​ souboru ssh. Do souboru ''​~/​.ssh/​config''​ doplníme něco jako 
 + 
 +<​file>​ 
 +Host wintermute 
 +    ​#kvm server, labka 
 +    HostName 1.2.3.4 
 +    User root 
 +    ForwardAgent yes 
 +    IdentityFile ~/​.ssh/​id_rsa 
 +</​file>​ 
 + 
 +pak stačí zadat ''​ssh wintermute''​ a je hotovo. Jinak je potřeba používat o něco delší ''​ssh ​-X root@1.2.3.4''​. 
 + 
 +Pokud polezete z windows, je potřeba mít nainstalovaný X-windows server. TODO 
 + 
 +===== Konfigurace ===== 
 + 
 +Virt manager se spustí takto: 
 + 
 +<code bash> 
 +virt-manager 
 +</​code>​ 
 + 
 +Pokud správně funguje X11 forwarding, tak se otevře grafické okno managera. Pro základní konfiguraci je potřeba rozkliknout defaultní konexi (z jednoho managera lze spravovat více hostů) QEMU/KVM. Otevře se okno s ''​QEMU/​KVM Connection Details''​. Postupně nastavíme 
 + 
 +==== Storage ==== 
 + 
 +Defaultní úložiště pro diskové image virtuálů je filesystém. Přidáme naši volume group - klikneme na ''​+ Add Pool'',​ zvolíme název a vybereme ''​logical:​ LVM Volume Group''​. ''​Target Path''​ bude naše volume group vmdata, vyplníme cestu k blokovému zařízení - ''/​dev/​vmdata''​. To je zde vše. Jen zkontrolujeme,​ že pool vmdata existuje, je Active a spouští se po startu (Autostart On Boot). 
 + 
 +Další úložiště doporučuju mít normálně ve filesystému a používat ho pro ISO image instalačních CDček - klikneme na ''​+ Add Pool'',​ zvolíme název a vybereme ''​dir:​ Filesystem Directory''​. Doporučuju něco jako ''/​iso''​. 
 + 
 +==== Network Interfaces ==== 
 + 
 +Tato operace je poněkud delikátní,​ pokud je server někde daleko a nemáte k němu přístup, může to být napínavé :-) Jsou dvě možnosti. Připravit si bridge dopředu, nebo si jej nakliknout z virt-manageru. 
 + 
 +Z virt-manageru se to dělá takto. 
 + 
 +Klikneme na ''​+ Add Interface'',​ vybereme ''​Interface Type: Bridge'',​ pojmenujeme jej ''​name br1''​. Teď pozor, ať si neuřízneme větev na které sedíme - ''​Start mode: none''​ a ''​Activate now''​ nezaškrtávat! Vybereme fyzický interface pro probridgeování (v mém případě enp3s0) a v nastaven ''​IP settings:''​ by se měla zobrazit volba ''​Copy configuration from enp3s0''​ a tu nebudeme měnit. 
 + 
 +Po potvrzení se připraví konfigurace bridge, jen se neaplikuje. To lze zkontrolovat v klasickém umístění v ''/​etc/​sysconfig/​network-scripts/​ifcfg-br1''​ a ''/​etc/​sysconfig/​network-scripts/​ifcfg-enp3s0''​. Tamtéž bych provedl ruční změnu a nastavil v obou případech ''​ONBOOT="​yes"''​ a odvážně otočil network - ''​service network restart''​. 
 + 
 +===== Používání ===== 
 +DOTAZY: 
 +  * jak konfigurujeme domeny guestum? 
 +  * jak pridelujeme IPv4/IPv6 guestum? 
 +  * jak budem guesty pojmenovavat [navrhuju format UZIVATEL_UCEL_DISTRO_PUBLIC/​PERSONAL_PROD/​TEST] 
 + 
 +TODO
  
 +acpid, start virtual server on host bootup
  
 +==== virsh ====
  
 +Mocná commandline utilitka. Pro běžné používání asi stačí
  
-   * virt-manager - gui +<code bash> 
-       * virsh <-- cli manager virtualek ​ +virsh list 
-   * service virtd +virsh console ​<číslo> 
-   * pridelit volume grypu +virsh shutdown <​číslo>​ 
-      * lvs +virsh destroy <číslo
-      * umount /vm # zbavil jsem se mount pointu /vm +virsh start <jméno
-      * lvremove /​dev/​cl_wintermute/​vm # zbavil jsem se mount pointu /vm +</code>
-      * vgs ## vylistuj lvm +
-      * pvresize +
-      * vytvorena volume group [/​dev/​vmdata] +
-    * storage: virt-manager na forwardnutejch xkach z serveru +
-      * create storage pool -vg_data : use logical: LVM Volume Group +
-      * create storage pool ->  +
-      * source: ​/dev/​vmdata +
-      *  a target path: empty +
-      * ## muzes si pripravit do rootu /​vm_iso ​ a namountovat jej, coz je pak zdrojak  +
-    * network interfaces:​ +
-    * na serveru mtui +
-    * [v pripade ze jsem to posral: /​etc/​syconfig/​network-scripts/​ifconfig-en2:​ device=eno1,​ onboot=yes] +
-    * ve virt-manager ​   +
-      * bridge -br1 +
-      * on boot +
-      * active now = ne +
-      * eno1 briguju  +
-    * ##na serveru nmtui-edit +
-    * service network restart [kdyz spadne virt-manager,​ rychle reboot, kdyz mozne kvuli logu] +
-    * create virtual network : naty ted nepotrebuju +
-    * install virtual machine: +
-      nainstallu si na virtualku acpi-daemon +
-      start virtual server on host bootup [zafunguj po startu serveru]+
       ​       ​
 ===== Links ===== ===== Links =====
   * [[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​6/​html/​Virtualization_Administration_Guide/​index.html   * [[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​6/​html/​Virtualization_Administration_Guide/​index.html
 ]] ]]
 +  * configure XAUTH to work over sudo for virt-manager : http://​jianmingli.com/​wp/?​p=724
 +  * [[https://​libvirt.org/​aclpolkit.html| libvirt over policy kit ]]
 +  * https://​goldmann.pl/​blog/​2012/​12/​03/​configuring-polkit-in-fedora-18-to-access-virt-manager/​
  
  • project/kvm.txt
  • Last modified: 2017/08/08 20:24
  • by over23