Ditt stöd är viktigt! Med din hjälp finns Macpro kvar även i framtiden. Läs mer här
!

2015-06-30
Guide

Från VMware till KVM

De senaste åren har jag använt VMware som virtualiseringsplattform. VMware har minst sagt varit generösa genom åren med hobbyister som undertecknad som velat köra virtualisering hemma men inte velat eller kunnat betala de åtskilliga tusentals kronor som en professionell licens innebär.

Exit VMware ESXi – vilka alternativ finns?

Men som Mac- och Linux-användare har VMware en hel del nackdelar. Administrationen sker antingen via ett Windows-program, vSphere Client, eller via ett webbgränssnitt som man får tillgång till om man kör VCenter, VMwares managementserver för centraliserad hantering av VMware-servrar och andra funktioner. Åker man på ett strömavbrott och dina VMware-servrar bestämmer sig för att inte spela boll när strömmen återkommer har man raskt ett problem. Man kan logga in på en VMware-server via SSH och på så sätt starta sina maskiner om de inte vill starta automatiskt men det förutsätter att ESXi inte bestämt sig för att avaktivera SSH-inloggningen, vilket ESXi helst ser inte är aktiverad.

För att kunna hantera ESXi ordentligt krävs dock att man använder vSphere Client eller surfar in via vCenter och den senare kostar pengar och fungerar dessutom inget vidare med Safari eller Chrome i OS X, och den tidigare kräver ju Windows. Vilket jag helst inte kör på min Mac.

Jag började kika på alternativ. Hyper-V lider ju av samma “problem” som vSphere Client – det krävs Windows 8.1 Enterprise för att få in administrationsverktygen i Windows, eller så får man köra fjärrskrivbord in till Hyper-V-servern och hantera det hela där. Det är givetvis inget större problem, men för att det ska fungera krävs att man kör en fullständig version av Windows Server 2008 R2 eller senare och inte den gratisversion av Hyper-V som Microsoft generöst erbjuder.

Enter KVM – gratis är gott

Jag började snart kika på de gratis alternativ som finns. XEN är ett av dem och ett annat är KVM, och det senare föll sig mer naturligt då jag bygger mina servrar på 1 CentOS som i sin tur bygger på RedHat Enterprise Linux. Redhat har i sin tur under de senaste åren arbetat hårt med att integrera KVM 2 i RedHat Enterprise Linux och därmed har också CentOS det stödet inbyggt.

Att gå över till en annan virtualiseringsplattform är inget man gör i en handvändning. Man kan ta den smärtsamma vägen 3 och konvertera varje virtuell maskin från ESXi till KVM men det innebär givetvis nedtid för den eller de servrar man ska konvertera. Ett annat alternativ, vilket är det jag valde, är att installera om alla de servrar som innan flytten till KVM kördes under ESXi. Det handlar om lastbalanserare, webbfrontar, databasserver, brandvägg, DNS-server, NTP-server, och så vidare.

Ett ganska drygt jobb men ändå hyfsat smärtfritt tack vare att de nya virtuella servrarna likt de “gamla” körs på CentOS varför det handlar om att installera upp respektive server, installera rätt paket, flytta konfigurationsfilen, stänga av den gamla servern, starta upp den nya och sätta samma IP-adress på den servern och pang så har du “flyttat” ännu en server från ESXi till KVM.

Kom igång med KVM

Det första du ska göra är, givetvis, att installera CentOS på den hårdvara du vill köra dina virtualiserade servrar på. Maskinen måste ha stöd för Intels virtualiseringsfunktioner som numera finns i allt från Xeon-processorer i feta dyra servrar ned till den enklaste server från exempelvis HP med en prislapp på ett par tusenlappar.

Efter att ha installerat CentOS (jag använder fortfarande version 6.6) är det dags att installera KVM. Efter att du konfigurerat nätverket är det rekommenderat att du avaktiverar SELinux och brandväggen i CentOS.

Börja med att redigera /etc/selinux/config och ändra följande rad så den ser ut så här:

SELINUX=disabled

Avaktivera brandväggen med följande kommando:

chkconfig iptables off

Starta sedan om servern:

reboot

När servern har startat om är det dags att installera KVM:

yum -y install @virt* dejavu-lgc-* xorg-x11-xauth tigervnc \
libguestfs-tools policycoreutils-python bridge-utils

Slå därefter på virtualiseringslagret och starta om servern:

chkconfig libvirtd on; shutdown -r now

När servern startas upp är det dags att konfgurera nätverket. KVM erbjuder två olika sett för virtuella maskiner att prata med resten av nätverket. Det ena är ett inbyggt nätverskort, virbr0, som i praktiken agerar router mellan virtualiseringslagret och det fysiska nätverkskortet. Som standard får varje virtuell maskin en IP-adress i 192.168.122.0-spannet via DHCP.

Man kan tänka sig att det är en god ide att ha servrarna i ett eget ip-nät, i synnerhet om man har för avsikt att mest bygga olika labbservrar, men i praktiken är denna modell mindre bra ur främst prestandasynpunkt.

Jag har istället valt att köra alla virtuella servrar via en direkt brygga mellan KVM och det inbyggda nätverkskortet. Ange följande kommandon, ett i taget:

chkconfig network on
service network restart
cp -p /etc/sysconfig/network-scripts/ifcfg-{eth0,br0}
sed -i -e'/HWADDR/d' -e'/UUID/d' -e's/eth0/br0/' -e's/Ethernet/Bridge/' \
/etc/sysconfig/network-scripts/ifcfg-br0
echo DELAY=0 >> /etc/sysconfig/network-scripts/ifcfg-br0
echo 'BOOTPROTO="none"' >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo BRIDGE=br0 >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
brctl show

Du kommer nu ha ett nytt nätverkskort i maskinen kallat br0 som har samma IP-adress som eth0 tidigare hade.

Skapa virtuella maskiner

Loggar du in via SSH från en Mac måste du sannolikt

Kommandot virsh med tillhörande parametrar är ett kommando du kommer använda en hel del så det är en god ide att lägga det på minnet direkt. Du kan redan nu testa följande kommando:

virsh list

Detta presenterar en lista över dina virtuella servrar, eller “domäner” som det heter i KVM-sammanhang.

Därefter är det dags att skapa den virtuella hårddisk som din virtuella server ska använda som lagring. I exemplet nedan skapar jag en “hårddisk” på 10 gigabyte i filformatet qcow2 i katalogen /kvm där jag lagrar mina virtuella maskiner:

qemu-img create -f qcow2 /kvm/test.qcow2 10G

Går allt som det ska kommer du få följande information tillbaka:

Formatting '/kvm/test.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536

Därefter är det dags att skapa och starta den virtuella servern. Detta sker med en rad kommandon som givetvis går att både scripta och lägga i en mallfil:

virt-install --virt-type kvm --name test --ram 1024 \
--disk /kvm/test.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6 \
--extra-args="console=tty0 console=ttyS0,115200n8 serial" \
--location=/kvm/iso/CentOS-6.6-x86_64-bin-DVD1.iso

Som synes pekar jag med parametern --location på en ISO-fil som jag installerar CentOS 6.6 från.

Ett problem som kan uppstå när du loggar in via SSH från en Mac är att följande svar kommer från virt-install:

locale.Error: unsupported locale setting

Detta har att göra med hur terminalen i din Mac presenterar vilken teckenuppsättning du vill använda via SSH. Fixa det med följande kommando:

export LC_ALL="en_US"

Kör virt-install med de parametrar jag visade ovan och du kommer få följande svar:


Starting install...
Retrieving file .treeinfo... | 676 B 00:00 ...
Retrieving file vmlinuz... | 7.9 MB 00:00 ...
Retrieving file initrd.img... | 66 MB 00:00 ...
Creating domain... | 0 B 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.

Kontollera att den virtuella maskin du just skapade är igång med kommandot virsh list.

Om du hade använt VMware eller Hyper-V hade du nu högerklickat på den virtuella maskinen och öppnat dess konsoll. Men nu befinner vi ju oss i SSH, så vad gör vi?

Enkelt – ange virsh console test där test är namnet (se ovan) på den virtuella maskinen vi just skapade.

Det är inte vackert, men det fungerar och hur det fungerar är ganska enkelt egentligen – när jag skapade den virtuella maskinen med virt-install gav jag den också en parameter för seriell kommunikation där allt på maskinens konsoll ska skickas ut via en virtuell serieport:

--extra-args="console=tty0 console=ttyS0,115200n8 serial"

Smart och enkelt. Du kan nu installera CentOS genom att använda tab, page up eller page down, piltangenter och så vidare. För att komma ut ur konsolläget trycker du vänster ctrl-alt och sedan å på ett svenskt tangentbord.

Grafiskt gränssnitt

Om du vill installera Windows eller något annat operativsystem som kräver en grafisk konsoll är det inte överdrivet komplicerat heller. Genom att ladda ned en 4 X11-klient (eller X.org som det heter nu för tiden) för OS X och sedan installera den kan du genom att ansluta via SSH till din KVM-server få upp ett grafiskt gränssnitt till hur du arbetar med dina virtuella maskiner. Detta gränssnitt kallas kort och gott virt-manager och du har redan installerat det.

logga in på din KVM-server med följande kommando:

ssh -Y root@kvmserver där “kvmserver” är namnet eller IP-adressen på din KVM-server.

När du är inloggad skriver du följande kommando:

virt-manager

X.org kommer då starta på din Mac och följande gränssnitt kommer visa sig:

Genom att dubbelklicka på den maskin du vill arbeta med får du upp ett nytt fönster med konsollen och med en knapp kallad “Details”. För den som arbetat med VMware eller Hyper-V tidigare är detta ganska välbekant:

Just bilden ovan är värd att lägga på minnet då alla virtuella maskiner du skapar som standard ju ansluter sig till den inbyggda nätverksbryggan i KVM som jag berättade om tidigare. Byt nätverksgränssnitt för din virtuella maskin till br0 genom detta gränssnitt (notera att maskinen måste vara avstängd för att denna inställning ska bli permanent).

Du kan nu starta upp din virtuella maskin igen och arbeta med den genom konsolen antingen i det grafiska virt-manager eller genom virsh-console. Nu kan du konfigurera nätverket i den virtuella maskinen precis på samma sätt som du hade konfigurerat nätverket i en vanlig fysisk server.

Summering

Att komma igång med KVM är som synes inte överdrivet komplicerat. Det som däremot kan bli komplicerat är när man vill installera andra operativsystem än Linux, exempelvis Windows Server. Jag har inte kommit så långt i processen ännu och har fortfarande en ESXi på en server enkom för att driva de fåtal Windows-servrar jag har kvar. Att installera om de maskinerna är inte görbart varför jag kommer tvingas migrera dem till KVM. Jag lär återkomma till det ämnet vad tiden lider men tills vidare kan jag rapportera att KVM med tio virtuella Linuxservrar fungerar ypperligt.

Uppdatering

Läs [https://www.macpro.se/2015/07/fran-vmware-till-kvm-del-tva-konvertera-servrar/](del två) av denna artikel om hur man konverterar Windows-servrar från VMware till KVM.


  1. Läs mer om CentOS här
  2. Läs mer om KVM här
  3. Information om hur du konverterar VMware-maskiner till KVM finns här
  4. Ladda ner X.org (aka X11) här

Macpro är annonsfri för att göra din läsupplevelse bättre.
Läs mer här om hur du hjälper Macpro förbli annonsfri

© 2004 - 2017 Joacim Melin