User Tools

Site Tools


navody:vps:kvm

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
navody:vps:kvm [2016/07/18 23:16] – přesunutí společných částí do úvodu datamolenavody:vps:kvm [2016/10/03 23:24] – Přidána doporučení k image datamole
Line 1: Line 1:
 ====== Používání KVM a na vpsFree.cz  ====== ====== Používání KVM a na vpsFree.cz  ======
  
-Tato info stránka obsahuje dvě verze používání KVM CentOS 7 a Debian 8.+Tato info stránka obsahuje návody pro zprovoznění KVM na Alpine Linux 3.4+, CentOS 7 a Debian 8.
  
 Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, zapnout následující vlastnosti: Nejprve je potřeba ve vpsAdminu, v detailu vaší VPS, zapnout následující vlastnosti:
Line 9: Line 9:
   * KVM – povolí použití KVM (pro HW podporu virtualizace).   * KVM – povolí použití KVM (pro HW podporu virtualizace).
  
 +Na vpsFree není jiná možnost než mít disky pro KVM virtuály v souborech (images). Doporučujeme k tomu vytvořit nový (sub)dataset, **vypnout v něm kompresi** a nastavit velikost bloku (Record size) na 65536 B. Vypnutí komprese je velmi důležité, jinak vám bude image bobtnat a bobtnat, přes deklarovanou velikost image, dokud narazí na kvótu datasetu! Pro optimální výkon vytvářejte „raw“ image.
  
-====== KVM na CentOS 7  ======+ 
 +===== KVM na Alpine Linuxu  ===== 
 + 
 +Nainstalujte potřebné balíčky (ip6tables je volitelný): 
 + 
 +<code shell> 
 +apk update 
 +apk add qemu-system-x86_64 qemu-openrc qemu-img bridge iptables ip6tables 
 +</code> 
 + 
 +Nakonfigurujte bridge pro Qemu/KVM virtuály; vytvořte soubor ///etc/network/interfaces.tail// (IP adresu si samozřejmě můžete zvolit libovolnou z privátního rozsahu): 
 + 
 +<code shell> 
 +auto br0 
 +iface br0 inet static 
 +     pre-up brctl addbr br0 
 +     address 172.17.1.1 
 +     netmask 255.255.255.0 
 +     post-down brctl delbr br0 
 +</code> 
 + 
 +Jelikož OpenVZ poněkud neohrabaně přepisuje soubor ///etc/network/interfaces// (proto také konfiguraci bridge přidáváme do //interfaces.tail//, tak nejjistější je v tuto chvíli kontejner restartovat. :/ 
 + 
 +Povolte uživateli ve skupině //qemu// spravovat vytvořený bridge: 
 + 
 +<code shell> 
 +echo "allow br0" > /etc/qemu/bridge.conf 
 +chown root:qemu /etc/qemu/bridge.conf 
 +chmod 0640 /etc/qemu/bridge.conf 
 +</code> 
 + 
 +Nastavte IP maškarádu pro přístup Qemu/KVM virtuálů ven do veřejného Internetu. 
 + 
 +Pokud už máte nakonfigurované iptables, tak jen přidejte pravidlo: 
 + 
 +<code> 
 +iptables -t nat -A POSTROUTING -s 172.17.1.0/24 ! -o br0 -j MASQUERADE 
 +</code> 
 + 
 +V opačném případě můžete postupovat např. podle odstavce [[#nastaveni_iptables|Nastavení iptables]]. 
 + 
 + 
 +==== Vytvoření a spuštění virtuálu ==== 
 + 
 +V tomto návodu předpokládám použití [[https://github.com/jirutka/qemu-openrc|qemu-openrc]] – OpenRC init skript pro startování Qemu/KVM. Na Alpine samozřejmě můžete používat i libvirt, ale opravdu chcete a potřebujete jeho neohrabané XML konfiguráky a/nebo klikátka nad ním…? ;) Qemu-openrc je výrazně jednodušší a transparentnější řešení. Každý virtuál je reprezentovaný init skriptem, stejně jako ostatní programy, můžete deklarativně nastavovat závislosti mezi virtuály atd. 
 + 
 +Vytvoření nového virtálu spočívá pouze v přípravě image disku, vytvoření symlinku pro init skript a úpravě jednoduchého konfiguračního skriptu. Nechť se nový virtuál jmenuje třeba „myvirt.“ 
 + 
 +Připravte raw image pro myvirt o potřebné velikosti: 
 + 
 +<code shell> 
 +mkdir -p /var/lib/qemu/myvirt/ 
 +qemu-img create -f raw /var/lib/qemu/myvirt/disk0.img 5G 
 +chown qemu:qemu /var/lib/qemu/myvirt/disk0.img 
 +chmod 0600 /var/lib/qemu/myvirt/disk0.img 
 +</code> 
 + 
 +Zkopírujte výchozí konfigurák /etc/conf.d/qemu do /etc/conf.d/qemu.myvirt a upravte dle potřeby: 
 + 
 +<code shell> 
 +cd /etc/conf.d 
 +cp qemu qemu.jarvis 
 +vi qemu.jarvis  # read comments and edit 
 +</code> 
 + 
 +Zejména tedy přidejte připravený image: 
 + 
 +<code shell> 
 +disk1_file="/var/lib/qemu/myvirt/disk0.raw" 
 +disk1_format="raw" 
 +</code> 
 + 
 +A zřejmě také instalační CD některé distribuce, které jste si předem stáhli: 
 + 
 +<code shell> 
 +cdrom0_file="/var/lib/qemu/alpine-virt-3.4.1-x86_64.iso" 
 +</code> 
 + 
 +Vytvořte symlink pro init skript a spusťte myvirt: 
 + 
 +<code shell> 
 +cd /etc/init.d 
 +ln -s qemu qemu.myvirt 
 + 
 +rc-service qemu.myvirt start 
 +</code> 
 + 
 + 
 +==== Nastavení iptables ==== 
 + 
 +Pokud nepoužíváte žádný nástroj pro generování iptables pravidel (jako např. [[https://github.com/MaxKellermann/ferm|ferm]]), doporučuji vyjít z [[https://gist.github.com/jirutka/3742890|připravené šablony pravidel]]. Tyto jsou přímo ve formátu iptables, který je možný načíst pomocí iptables-restore. 
 + 
 +Stáhněte upravenou šablonu pravidel s přidanou maškarádou pro náš bridge do /etc/iptables: 
 + 
 +<code shell> 
 +rmdir /etc/iptables 
 +wget -O /etc/iptables http://haste.fit.cvut.cz/raw/iwuqoso 
 +</code> 
 + 
 +Upravte konfigurák /etc/conf.d/iptables (IPv4): 
 + 
 +<code shell> 
 +# /etc/conf.d/iptables 
 + 
 +IPTABLES_SAVE="/etc/iptables" 
 +#SAVE_RESTORE_OPTIONS="-c" 
 +SAVE_ON_STOP="no" 
 +IPFORWARD="yes" 
 +</code> 
 + 
 +…a /etc/conf.d/ip6tables (IPv6): 
 + 
 +<code shell> 
 +# /etc/conf.d/ip6tables 
 + 
 +IP6TABLES_SAVE="/etc/iptables" 
 +SAVE_RESTORE_OPTIONS="-T filter" 
 +SAVE_ON_STOP="no" 
 +IPFORWARD="yes" 
 +</code> 
 + 
 +Spusťte iptables a ip6tables a přidejte je do runlevel boot: 
 + 
 +<code shell> 
 +rc-service iptables start 
 +rc-service ip6tables start 
 +rc-update add iptables boot 
 +rc-update add ip6tables boot 
 +</code> 
 + 
 +==== Kontakty ==== 
 + 
 +  * [[jakub@jirutka.cz|Jakub Jirůtka]] (na [[irc://chat.freenode.net/vpsfree|#vpsfree]] jako jirutka) 
 + 
 +===== KVM na CentOS 7  =====
  
 <note warning> <note warning>
Line 28: Line 163:
 </code> </code>
  
-===== Vytvoření virtuálu pomocí virt-manager na straně serveru =====+==== Vytvoření virtuálu pomocí virt-manager na straně serveru ====
  
 Motivace: Když pracujete na pomalém připojení (což O2 ADSL na vsi bezpochyby je), potřebujete minimalizovat datové toky přes váš pracovní počítač. Lokální virt-manager by stahoval minimálně kernel a initramdisk po relativně pomalém downloadu a typicky po ukrutně pomalém uploadu nahrával na hostitelský kontejner. Motivace: Když pracujete na pomalém připojení (což O2 ADSL na vsi bezpochyby je), potřebujete minimalizovat datové toky přes váš pracovní počítač. Lokální virt-manager by stahoval minimálně kernel a initramdisk po relativně pomalém downloadu a typicky po ukrutně pomalém uploadu nahrával na hostitelský kontejner.
Line 39: Line 174:
  
  
-====== KVM na Debian 8  ======+===== KVM na Debian 8  =====
  
 Tento návod je prováděn na Debianu 8. Měl by být plně funkční také na CentOS (s jinými příkazy viz. výše). Pokoušel jsem se KVM rozchodit i na Ubuntu 14.04, ale tam bohužel marně. Tento návod je prováděn na Debianu 8. Měl by být plně funkční také na CentOS (s jinými příkazy viz. výše). Pokoušel jsem se KVM rozchodit i na Ubuntu 14.04, ale tam bohužel marně.
Line 54: Line 189:
 Poté nainstalujeme libvirt knihovnu: Poté nainstalujeme libvirt knihovnu:
 <code shell> <code shell>
-install qemu-kvm libvirt-bin+apt-get install qemu-kvm libvirt-bin
 apt-get install virt-manager apt-get install virt-manager
 </code> </code>
Line 69: Line 204:
  
  
-===== Kontakty =====+==== Kontakty ====
  
   * [[:uzivatele/pavlix]]   * [[:uzivatele/pavlix]]