En populär metod idag för att bättre utnyttja en servers resurser är att installera virtuella maskiner på en dator. Man har då ett värdoperativssystem och i den installerar man virtuella datorer som delar värdens resurser. Här följer en komplett guide för att virtualisera Ubuntu 13.10 Server under en värd med Ubuntu 13.10 Server.
En fördel med att använda virtuella instanser istället för att bara ha en installation per dator är som sagt att man bättre kan utnyttja serverns kapacitet. Istället för 20 datorer så kan man ersätta dem med 1 dator och 20 virtuella datorer. Om någon av de virtuella servrarna skulle behöva mer resurser så är det enkelt att flytta en virtuell maskin till en annan dator som har mer lediga resurser.
Först måste vi ha en dator med Ubuntu 13.10 Server installerad. Här hittar du en guide som jag har gjort tidigare där värden startas på ett RAID-1 system. Vill du inte använda RAID så går det att följa guiden med hoppa över konfigureringen av RAID.
I den här guiden kommer vi att använda oss av KVM för virtualiseringen, en annan teknik som finns i Ubuntu är XEN. Den stora skillnaden mellan de två är att XEN går att använda på datorer som inte har stöd i processorn för virtualisering. Det kräver då en del under installationen, kommer att återkomma till XEN i ett senare inlägg. KVM kräver alltså att processorn har stöd för virtualisering.
Kontrollera om processorn har stöd för virtualisering
De flesta processorer idag har stöd för virtualisering. För att kontrollera om din processor har det som krävs så behöver du ha Linux installerat på datorn eller så startar vi datorn med en Linux start-CD.
Först installerar vi paketet cpu-checker, det paketet behövs för att kunna kontrollera processorn. Skriv följande i en terminal.
sudo apt-get install cpu-checkerDu får sedan ange ditt lösenord.
[sudo] password for pontus:Därefter installeras paketen som krävs. Du får trycka på "J" när den frågar om du vill fortsätta.
Läser paketlistor... Färdig
Bygger beroendeträd
Läser tillståndsinformation... Färdig
Följande ytterligare paket kommer att installeras:
msr-tools
Följande NYA paket kommer att installeras:
cpu-checker msr-tools
0 att uppgradera, 2 att nyinstallera, 0 att ta bort och 168 att inte uppgradera.
Behöver hämta 15,5 kB arkiv.
Efter denna åtgärd kommer ytterligare 119 kB utrymme användas på disken.
Vill du fortsätta [J/n]? j
Läs:1 http://se.archive.ubuntu.com/ubuntu/ precise/main msr-tools i386 1.2-3 [8 942 B]
Läs:2 http://se.archive.ubuntu.com/ubuntu/ precise/main cpu-checker i386 0.7-0ubuntu1 [6 552 B]
Hämtade 15,5 kB på 0s (48,7 kB/s)
Väljer tidigare ej valt paket msr-tools.
(Läser databasen ... 34141 filer och kataloger installerade.)
Packar upp msr-tools (från .../msr-tools_1.2-3_i386.deb) ...
Väljer tidigare ej valt paket cpu-checker.
Packar upp cpu-checker (från .../cpu-checker_0.7-0ubuntu1_i386.deb) ...
Hanterar utlösare för man-db ...
Ställer in msr-tools (1.2-3) ...
Ställer in cpu-checker (0.7-0ubuntu1) ...Sedan skriver vi följande för att testa processorn.
sudo kvm-okOch vi får besked direkt, antingen så står det i slutet:
KVM acceleration can be usedDå kan vi använda KVM. Det kan också stå något i still med nedanstående.
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions
INFO: KVM (vmx) is disabled by your BIOS
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
and then hard poweroff/poweron your system
KVM acceleration can NOT be usedPå den här datorn har förmodligen processorn stödet som krävs men det är inaktiverat i BIOS. Man får då starta om datorn och aktivera det.
Eller om vi har otur så får vi följande besked.
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be usedDå kommer tyvärr inte KVM att fungera, då kvarstår alternativet med XEN.
Om man inte har Linux installerat på datorn så kan man starta datorn med en Live-CD och testa ifrån den.
Installera nödvändiga paket
Först måste vi installera paketen som krävs för att kunna köra virtuella maskiner. Skriv följande i en terminal på servern.
sudo apt-get install qemu-kvm libvirt-binAnge ditt lösenord när du blir uppmanad till det. Installationen av nädvändiga paket kommer att starta och beroende på din internetuppkoppling så kan det ta lite tid. När det är klart så är har vi paketen som behövs för att kunna köra virtuella maskiner.
För att kunna installera en virtuell maskin så kommer vi att använda oss av virtinst. Så då installerar vi även den.
sudo apt-get install virtinstDen användare som skall administrera de virtuella datorerna behöva tillhöra gruppen libvirt, därför lägger vi till användaren till den gruppen med följande kommando. Ersätt $USER med ditt användarnamn.
sudo adduser $USER libvirtdBrygga nätverket
Om vi ska köra virtuella datorer i Ubuntu 13.10 Server så måste vi brygga nätverket på servern för att de virtuella maskinerna ska kunna komma åt nätverket. Det finns två metoder. Antingen så använder man NAT, Network Adress Translation, nackdelen med den här metoden är att andra datorer på nätverket inte kan komma åt den virtuella datorn. Istället kommer vi att använda en annan metod som ger dem riktiga ip-nummer som övriga datorer i nätverket kan ansluta till.
Först måsta vi installera bridge-utils, om det inte redan är installerat, så vi skriver följande i en terminal:
sudo apt-get install bridge-utilsOm den frågar efter lösenord så anger vi det. Därefter kommer bridge-utils att installeras, om det redan skulle vara installerat så får vi besked om det.
Slutligen så skapar vi en brygga genom att redigera filen /etc/network/interfaces med valfri editor. Jag brukar alltid använda editorn joe.
sudo joe /etc/network/interfacesFilen ser nu ut enligt följande:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcpVi kommenterar bort raderna under "# The primary network interface" genom att skriva ett # i början av raderna och lägger till konfigurationen för bryggan. Filen ska nu se ut enligt nedan:
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# auto eth0
iface eth0 inet dhcp
auto br0
iface br0
inet static address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off Ersätt IP-nummerna enligt vad du använder på ditt nätverk.
Installera verktygen för att administrera virtuella maskiner
När vi ska installera gäst operativsystemet så måste vi komma åt den grafiska konsolen. Servern som agerar värd har inget grafiskt gränssnitt, eller rättare sagt jag avråder från att ha det då det skapar onödig belastning på datorn. Därför kommer vi att sköta datorerna från en arbetsstation, jag använder en dator med Ubuntu. På din arbetsstation behöver vi installera administrationsverktyget för virtuella maskiner. Skriv följande i en terminal på din arbetsdator och ange ditt lösenord om du blir uppmanad till det.
sudo apt-get install virt-managerNär installationen är slutförd så startar vi virt-manager genom att trycka på Alt + F2 och sök efter virt-man
När virt-manager startar så kommer den inte att hitta något värd system på arbetsdatorn (om du inte har installerat det på den).
Så vi lägger till en anslutning till våran server genom menyn Fil -> Lägg till anslutning. Fyll i enligt nedan men ersätt användarnamn och värdnamn med dina uppgifter.
Därefter frågar den om SSH-nyckeln är korrekt, skriv "yes" i rutan. Därefter blir du ombedd att ange ditt lösenord. Därefter är vi inloggade på våran värd och din skärm bör nu se ut enligt nedan.
Det finns bara en rad, vm1 i det här fallet. Det är själva värdmaskinen, vi har ju inte installerat några gäst system än.
På nästa sida börjar vi installera en gäst.
Installera en Ubuntu 13.10 Server som gäst
Äntligen har vi kommit så långt så det är dags att installera en gäst på våran nya värd för virtuella maskiner.
Vi behöver nu disk-imagen för Ubuntu server så att vi kan komma åt den från våran värd. Hos mig ligger den på en filserver i nätverket, katalogen som den ligger i är monterad på värden under /vol1.
Förutom imagen behöver vi även bestämma vad den nya maskinen skall heta och hur mycket minna vi ska ge den. Den första installationen kommer att bli en "mall", med det menar jag att jag kommer att installera Ubuntu 13.10 Server men den kommer inte att användas. När en server skall installeras så klonar vi den här och har således en nyinstallerad server på ett par minuter. Därför döper vi den till "base" och ger den 256 MB ram. Disken kommer att bli 20GB stor.
En virtuell maskin kan du antingen starta installationen i terminalen och fortsätta installationen i virt-manager eller sköta allt från virt-manager. Startar vi installationen från terminalen så kan imagen ligga var som helst där vi kommer åt den från servern men om vi ska starta från virt-manager så måste den ligga i diskpoolen. Vi lägger till imagen till diskpoolen genom att kopiera den till /var/lib/libvirt/images med följande kommando på servern, observera att vi står i katalogen där vi har imagen.
sudo cp ubuntu-13.10-server-amd64.iso /var/lib/libvirt/imagesFör att libvirt ska hitta imagen så måste vi uppdatera diskpoolen. Dubbelklicka på värden i virt-manager och välj fliken "Lagring". Klicka sedan på uppdatera knappen, inringad i rött.
Nu skall imagen dyka upp i listan. Stäng genom att klicka på krysset uppe till vänster.
Därefter klicka vi på knappen för att starta en ny gäst i virt-manager, inringad i rött nedan.
Nu döper vi maskinen och väljer var installationsmediat finns (Lokalt Installationsmedia ...)
I nästa fönster klickar vi på "Bläddra ...".
Markera imagen för Ubuntu Server och klicka på "Välj volym".
Nu kommer vi tillbaka och väljer OS-typ samt Version. Tyvärr finns inte Ubuntu13.10 med i min lista förmodligen beror det på att min arbetsdator har Ubuntu 12.10 installerad. Dags att uppgradera kanske ...
Anledningen till att man ska välja vilket operativssystem man skall installera är för att då vet libvirt hur den skall optimera efter systemet som är installerat. Väljer du fel system här så kanske du inte får ut maximal prestanda som du kan få om du väljer rätt.
I nästkommande skärm väljer vi hur mycket minne och hur många processorer det nya systemet skall ha. På bas-systemet lägger jag allokeringen rätt restriktiv, det är nämligen inga problem att senare allokera till mer resurser.
Dags att skapa en disk-image som vi skall installera på. En viktig sak att fundera på här är att antingen så skapar men en fil eller så kan man använda sig av en blockenhet. När vi skapar gästen med hjälp av virt-manager så är det enda alternativet vi har att skapa en disk-image. En del säger att prestandan blir bättre med en blockenhet kontra en image. För min användning så spelar det inte så stor roll då det bara är min hemmaserver utan någon större belastning.
En till sak att fundera över är om man skall allokera allt utrymme på en gång eller inte. Skillnaden är att om du allokerar allt utrymme så blir filen lika stor som gästen har tillgängligt utrymme. Medans om du inte allokerar utrymmet så tar filen inte mer utrymme än vad gästen använder, när den behöver mer utrymme så växer filen upp till max-storleken. Nackdelen med att inte allokera allt utrymme direkt är att prestandan blir något sämre när gästen skriver. För min användning så spelar det ingen störrre roll så jag kommer inte att allokera allt utrymme direkt.
Den sista frågan är vilket format man skall använda på imagen. De vanligaste är raw eller qcow. Prestandan i raw ska enligt uppgifter vara något bättre men qcow har mer funktioner, till exempel möjlighet att göra snapshot. Här kommer jag att använda mig av qcow2.
Markera "Välj hanterad eller annan befintlig lagring", klicka därefter på bläddra.
Våran diskpool kommer nu upp och vi väljer att skapa en ny volym, längst ner i mitten.
Filen döper jag till samma som systemet, base. Formatet väljer jag qcow2, gör den 20GB stor samt så allokerar jag inget utrymme på den. Klicka sedan på "Avsluta".
Nu är vi tillbaka i diskpoolen och vi markerar den nya volymen samt klickar på "välj volym". Om du är observant så ser du en ny katalog hos mig, lost+found. Jag kom på att jag hade glömt att lägga till en RAID-volym till diskpoolen så jag skapade den och mountade den i /var/lib/libvirt/images. Anledningen till det är att jag installerar alltid systemet på en 20GB partition och sedan lagrar jag alla filer på separata enheter.
När disk-imagen är vald så komemr vi tillbaka till guiden och kan se att den har valt våran nya image.
Sista rutan, genom att bocka i "Anpassa konfigurationen för installation" så kan vi ändra vissa parametrar innan vi installerar.
Om vi har bockat i att anpassa konfigurationen så kommer följande skärm upp. Här väljer jag under "Processor" att "Kopiera värd-CPU-konfiguration". Man kan emulera andra processorer om man har behov av det.
Under Disk så väljer jag Virtio som diskbuss då den har bäst prestanda. När vi är klara med alla anpassningar klickar vi på "Börja installation" längst upp till vänster.
Vi får sedan skriva in vårat lösenord, därefter kommer installationen upp som om vi satt vi den nya datorn. Vi slutför installationen som vanligt. För en guide om det se här. Den guiden installerar Ubuntu Server med RAID1, fast nu skippar vi RAID och använder bara en vanlig partition. Så när partionernaren kommer så väljer vi "Guidad partionering - använd hela disken".
Virt-manager kommer att låsa muspekaren när installationen har startat, om du vill göra annat under tiden du väntar så trycker du på control och alt så släpps muspekare och du kan arbeta med annat. När du går tillbaka till installationen så kommer musen att låsas igen.
När installationen är sutförd så loggar du in och skriver.
sudo haltFöljt av ditt lösenord. Det nya systemet kommer nu att stängas av. När systemet har stängts ner klickar du på pile till höger om powerknappen och väljer "Framtvingad avstägning".
Och svarar ja på frågan om du är säker.
Därefter kan vi stänga fönstret.
Klona bassystemet
Nu har vi en basinstallation som vi kommer att använda som mall när vi skapar nya servrar. För att klona en dator så måste den vara avstängd.
Vi kan klona en dator på två sätt, antingen via konsolen eller genom att använda oss av virt-manager.
Klona i konsolen med hjälp av virt-clone
Skriv följande i en terminal för att klona en dator. Den kommer att döpas till server1 och använda sig av filen /var/lib/libvirt/images/server1.img som diskimage.
sudo virt-clone --original base --name server1 --file /var/lib/libvirt/images/server1.imgVi möts av nedanstående. Blev lite rädd när jag läste 21 minuter men det gick snabbare, tog bara 1,23 minuter.
Allocating 'server1.img' 2% [ ] 19 MB/s | 530 MB 21:41 ETA Slutligen kommer följande.
Clone 'server1' created successfully.Maskinen kan nu startas med följande kommando.
sudo virsh -c qwmu:///system start server1Klona grafisk med hjälp av virt-manager
Istället för att klona i konsolen så kan man lika gärna göra det grafiskt via virt-manager. Det tar ungefär lika lång tid, så vilken metod man väljer är en smaksak.
Börja med att högerklicka på basinstallationen och välj "klona" i menyn.
Döp den nya servern. Diskimagen kommer att få samma namn och läggs i /var/lib/libvirt/images/.
Därefter startar kopieringen och det är bara att luta sig tillbaka i någon minut. Eller varför inte hämta en kopp kaffe.
Därefter kommer maskinen att hamna i listan i virt-manager och vi kan tilldela resurserna som den behöver och starta den.
Eftersom att basinstallationen innehåller en tom server med enbart ssh-servern så kan vi nu installera de tjänster som vi vill driva på den. Det första som dock måste göras är att byta namn på maskinen, värdnamnet alltså. Samt om den skall ha ett fast IP-nummer så behöver vi ställa in det.
Värdnamnet ändrar vi genom att redigera /etc/hostname. Därefter startar vi om.