cpu Archive

Virtuella förhållanden

Har sammanställt lite enkla riktlinjer gällande frågor som ofta dyker upp i virtualiserings sammanhang. Det kan vara frågor som:

  • Hur många virtuella maskiner kan jag köra på en host?
  • Hur stora LUNs skall jag skapa på mitt SAN?
  • Hur många VMs kan jag köra per LUN?
  • Hur mycket RAM och CPU skall jag ha i mina hostar?

Hostsize

Det finns naturligtvis inget enkelt svar på dessa frågor och egentligen inte något rätt och fel. Det är ju många faktorer och förhållanden som spelar in och avgör hur man i slutändan fattar ett beslut. När det gäller storleken och hur man skall dimensionera sina hostar när vi talar CPU och RAM så handlar det om att hitta ett lagom förhållande mellan den fysiska hårdvaran och den arbetslast som skall hostas på denna. Större och kraftfullare servrar innebär färre fysiska hostar att drifta och underhålla, men samtidigt medför detta att konsekvenserna av en eventuell serverkrasch blir allt mer allvarlig. Fördelen med fler mindre fysiska hostar är att lasten kan spridas ut på ett mer effektivt sätt och på så vis minimeras de negativa följderna vid ett hårdvarufel. Dessutom fungerar enligt min uppfattning lastbalanseringen (DRS) bättre i en mer balanserad miljö. I de flesta fall är det alltså bättre att skal ut än att skala upp. Oftast vill man ju ha inte belasta sina hostar mer än 70% för att tillgodose kraven för HA vilket på en kraftfullare maskin innebär större resurser som inte nyttjas. Ett exempel på lämplig server i denna klass skulle kunna vara en HP DL380 eller liknande.

pCPU vs vCPU

När vi sedan talar om förhållandet mellan den fysiska servern och de virtuella maskinerna, alltså hur många VMs / ESX host man kan köra så är svaret återigen ”det beror på”. I några fall när du har en mycket kraftfull host och de VMs som hostas har en mycket låg arbetsbelastning så kan man nå förhållanden på ca 60:1 medan du på en mindre kraftfull host och VMs med hög arbetslast kanske enbart når ett förhållande på 10:1 eller mindre. Man brukar generellt räkna med att en mellanklass server med 2 sockets kan nå ett förhållande på ca 16:1 och ca 32:1 för en med 4 sockets med en normal arbetslast på de VMs som hostas. Det gäller att ha koll på antalet virtuella CPUer i dessa sammanhang. Som en tumregel kan man räkna med att kunna köra 4 x vCPU x antalet pCPU. Det skulle på en server med två fysiska fyrakärninga CPUer ge oss 8pCPU x 4 = 32 vCPU.

Lagringdirektiv

För många VMs per LUN kan skapa flaskhalsar på ditt SAN och du kan få problem med metadata låsningar etc. Det är även viktigt att förhålla sig till det underliggande disksystemet och antalet spindlar i det RAID set som levererar lagringen. Här följer några riktlinjer att förhålla sig till:

  • Antalet VMs per LUN i genomsnitt: 14 to 16
  • För hög I/O belastning, applications: 8 to 10 VMs per LUN
  • För medel I/O belastning: 20 to 22 VMs per LUN
  • För mycket låg I/O belastning, terminalservrar, VDI-klienter: mer än 100 VMs per LUN

Tänk på att allt som föreslagits här endast är riktlinjer och rekommendationer. Det finns otaliga faktorer som spelar in i dessa sammanhang och det kan skilja mycket från olika miljöer. Det viktigaste är att man tänker till innan man designar sin virtuella infrastruktur för att på så vis slippa de vanligaste prestandaproblemen.

Daglig hälsokontroll av din vSphere-miljö

Det är mycket information och många parametrar att hålla koll på i en VMware miljö. Information som både tar tid och kräver administration för att få fram. Tänkt dig att du t.ex. vill ta reda på hur många av dina ”snapshots” som är äldre än 30 dagar eller du kanske vill få en rapport på ”CPU Ready” värdet på samtliga virtuella maskiner eller få en lista på vilka maskiner som har en ansluten och aktiv CD-ROM (detta förhindrar vMotion). Hur löser du detta idag? Ja, all denna information går naturligtvis att få fram genom vCenter men det kan i vissa fall ta onödigt lång tid och man får i många fall checka av vissa saker för varje enskild vm/host. Ok, detta kanske inte är en stor grej om man har 3 ESX hostar och kanske 25 vm:s. Men i miljöer där man kommer upp i volym på både hostar och vm:s så kan denna typ av information bli väldigt tidskrävande att få fram. Att manuellt kontrollera eller editera specifika detaljer för 200-300 virtuella maskiner kan snabbt bli ett tidsödande projekt.

powerCLI

Det är här som finessen och möjligheterna med PowerShell och vSphere PowerCLI verkligen kommer till nytta. Powershell är som ni säkert alla vet ett textbaserat ”shell” – alltså ett kommando-promptsverktyg som till skillnad från de tidigare verktygen som funnits för Windows, t.ex. CMD.exe och Windows Script Host, är helt igenom objektorienterat och bygger på .NET-Framework 2.0. Genom PowerShell och så kallade “command-lets” kan man på ett mycket effektivt sätt administrera och hantera olika komponenter i Windows. vSphere PowerCLI är ett Windows PowerShell interface för vSpheres API. Det innehåller olika PowerShell “command-lets” för att administrera de olika vSphere komponenterna.

Det finns hundratals sidor på nätet med guider och tips på hur man kommer igång med PowerShell och vSphere PowerCLI och jag tänker inte ge mig in på detta utan tänkte istället tipsa er om ett utmärkt script skrivet av mannen bakom www.virtu-al.net. Detta smått fantastiska script innehåller många olika funktioner och skapar automatisk en rapport med en generell översikt av din virtuella infrastruktur och notiser av eventuella punkter kan kräva åtgärder eller tillsyn. Scriptet körs mot din vCenter server och mailar resultatet som en snygg och prydligt html-tabell till valfri e-postmottagare. Följande punkter är exempel på punkter som scriptet kontrollerar och går igenom:

  • Number of Hosts
  • Number of VMs
  • Number of Datastores
  • Number of DRS Migrations for the last days
  • Snapshots over x Days old
  • Datastores with less than x% free space
  • VMs created over the last x days
  • VMs with No Tools
  • VMs with CD-Roms connected
  • VMs with CPU ready over x%
  • Hosts in Maintenance Mode
  • VC Error Events over the last x days
  • VC Windows Event Log Errors for the last x days with VMware in the details
  • VM active alerts
  • Cluster Active Alerts
  • vSphere check: Outdated VM Hardware (Less than V7)
  • VMs in Inconsistent folders (the name of the folder is not the same as the name)

Detta är endast några av de punkter som scriptet kontrollerar och redogör för i din miljö. För att kunna köra detta script krävs det att du har PowerShell och vSphere PowerCLI installerat på den server som du vill köra detta från (måste inte vara din vCenter server).

PowerShell kan du hämta här. Och VMware vSphere PowerCLI kan du hämta här.

Själva scriptet hittar du här: vCenterDailyReport.txt Döp om scriptet till ‘vCenterDailyReport.ps1′ efter du laddat ner det.

För att få det hela att fungera så börjar du med att installera PowerShell och därefter vSphere PowerCLI. När detta är gjort så sparar du ner scriptet till lämplig plats på servern t.ex. ”c:\vscripts\vCenterDailyReport.ps1″. När detta är gjort kan du starta vSphere PowerCLI prompten via startmenyn. Det kommer att se ut ungefär såhär:

vcli1

För att sedan köra scriptet skriver du följande vid kommandoprompten:

c:\vscripts\vCenterDailyReport.ps1 vcenterServerNamn

Byt ut ”vcenterServerNamn” mot namnet på din vCenter server eller IP-adress.  För att redigera scriptet så att rapporten som genereras hamnar hos rätt mottagare letar du upp raderna so visas nedan och redigerar dess efter din miljö.

# Set the SMTP Server address
$SMTPSRV = ""
# Set the Email address to recieve from
$EmailFrom = ""
# Set the Email address to send the email to
$EmailTo = ""

Det finns även andra variabler att justera efter behov men börja med detta och se till att det att fungerar först. Jag har schemalagt detta script och det körs dagligen i vår miljö och jag har varje morgon en snygg och prydlig rapport som väntar på mig i inkorgen. Vill du schemalägga scriptet gör du det enklast genom att skapa en enkel ”bat-fil” som du sedan kör via windows egna task scheduler.

Lägg följande rad i batfilen för att köra scriptet (redigera eventuella sökvägar efter din egen miljö):

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile
C:\Program\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"
Command "& 'C:\vscripts\vCenterDailyReport.ps1' vcenterServerNamn"

Lycka till med detta mycket kraftfulla och tidsbesparande script.