SQL Server och virtualisering

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Vi på SQL Service får ofta frågor angående lämpligheten i att köra SQL Server i virtualiserade miljöer. Därför tänkte jag kort sammanfatta en del av de erfarenheter och slutsatser kring detta, som vi har samlat på oss i olika uppdrag.  

Generellt sätt har vi inget emot virtualisering, på samma sätt som vi inte har något emot IBM, HP, Dell eller andra serverleverantörer. Det fungerar bra, och är 100% supporterat av Microsoft (Och oss…) Dock finns det några problem med virtualisering som man skall vara observant på:

Overhead: Det finns en generell overhead med att köra virtuella maskiner på ca 10 – 20 %. Så man tappar alltså 10 – 20 % prestanda i förhållande till att köra med motsvarande resurser i en fysisk maskin. 
CPU: Man kan i vanliga fall maximalt allokera  4 virtuella CPU’er till en virtuell maskin. 1 virtuell CPU=1 fysisk kärna (Eller i värsta fall ½ fysisk kärna, om hyperthreading är påslaget på den fysiska hosten). Så behöver man CPU kraft som överstiger 4 CPU kärnor (minus 10 – 20% overhead…) skall man inte köra virtuellt Delning av resurser: Det är vanligt att man delar på resurser, dvs CPU, minne osv mellan virtuella maskiner. Det bör man undvika i SQL server fallet. Allokera de resurser du behöver endast till SQL Server maskinen. Se till att Vmware/Hyper-V är rätt konfigurerat här.
IO: Virtuella miljöer innebär oftast någon form av SAN, och då skall man vara uppmärksam på de för och nackdelar som finns med det (Inga VRAID5 volymer för loggfilen till exempel…) Samma problematik gäller i och för sig för fysiska maskiner kopplade till SAN.

Vill man till exempel använda olika SSD lösningar är det inte säkert att det fungerar med virtualisering, eftersom många av dessa lösningar till exempel består av ett fysiskt kort man stoppar in i en fysisk server. Med andra ord handlar alla dessa potentiella fallgropar om prestanda. Kort sagt kan man inte få samma höga prestanda i en virtuell miljö som i en fysisk. Men det är ju långt ifrån alla servrar som behöver mer  prestanda än man kan klämma ur en virtuell server idag. Den sista punkten handlar om licensiering. Kör du standard edition av SQL Server, och vill köra CPU licenser i en virtuell miljö, måste du ha en CPU licens per virtuell CPU som tilldelas den virtuella maskinen.

Säg att du på en fysisk maskin med 2 fysiska CPU’er med 12 kärnor i vardera vill köra SQL Server 2008 R2 Standard Edition. Om du kör på den fysiska maskinen direkt, måste du ha 2 CPU licenser (Eftersom du har 2 fysiska CPU’er). Vill du köra virtuellt, och använder den sagda maskinen som en host, och installerar virtuella maskiner på den, så kan du till att börja med använda max 4 kärnor per virtuell maskin. Och för det måste du betala 4 CPU licenser. Och lägger du på fler virtuella maskiner, säg 6 stycken lika dana, så att du kan använda alla 24 kärnor som finns i den fysiska host’en, måste du betala för 24 CPU licenser. Och då börjar virtualisering att bli riktigt dyrt…..

Kontakta oss gärna om du vill att vi hjälper er att välja rätt väg framåt!