Tips & Guider Archive

Trimma prestandan i din vSphere miljö

Tänkte att jag så här dagen före dopparedagen skulle ge er läsare en liten julklapp. Detta i form av ett tips för att förbättra prestandan för dina virtuella maskiner i din vSphere miljö. Det har ju skett många förändringar i ESX4 vad gäller prestandan.

Tänkte här ta upp två stycken nya ”paravirtualiserade maskinvaror” som du kan nyttja och förhoppningsvis ge dig bättre pretsanda. Jag talar här om VMXNET3 ett nytt paravirtualiserat nätverkskort med stöd för bla 10GB ethernet och Jumbo Frames samt PVSCSI en ny paravirtualiserad SCSI-kontroller som skall ge ökad disk I/O med mindre belastning på CPU.

För att kunna använda denna nya ”virtuella hårdvara” som vSphere erbjuder och dess prestandaförbättringar krävs det att du uppgraderat dina virtuella maskiner till hårdvaruversion 7. Detta antar jag att alla som uppgraderat till vSphere redan har gjort. Om inte så följer här en snabb genomgång på hur detta sker:

  1. Börja med att uppgradera VMware Tools i ditt gästoperativsystem genom att högerklicka på den virtuella maskinen och välj ”Guest > Install/Upgrade VMware Tools”.
  2. När detta är klart kommer maskinen att boota om.
  3. Efter denna omstart stäng ner maskinen helt.
  4. Uppgradera sedan den virtuella maskinens hårdvara genom att högerklicka på den och välj ”Upgrade Virtual Hardware”.
  5. Starta nu upp din maskin och kontrollera att allt fungerar som det ska.
  6. Gör sedan en sista omstart.
  7. Klart!

Detta är uppgraderingsprocessen i komprimerad form och det viktiga här är att man installerar/uppgraderar VMware Tools innan man uppgraderar den virtuella hårdvaran till version 7.

Kommer här att kortfattat att beskriva hur man ”installerar” och nyttjar dessa nya virtuella maskinvaror och dess drivrutiner.

Installera VMXNET3 (Nytt paravirtualiserat nätverkskort)

För att kunna nyttja detta så måste man lägga till ett nytt nätverkskort till din virtuella maskin. Man kan alltså inte ändra typen för det befintliga nätverkskortet. Detta innebär att man måste notera IP-inställningarna för det gamla kortet och sedan konfigurera det nya med dessa. Tänk också på att MAC-adressen kommer att förändras. Bra att ha koll på om man har ex programvara som är knutet till denna.

  1. Börja med att notera IP-inställningarna för det nuvarande nätverkskortet.
  2. Lägg sedan till en ny ”Ethernet Adapter” till din VM genom att högerklicka på den och välj ”Edit Settings” > Hardware > Add > Ethernet Adapter”.
  3. Välj typen ”VMXNET3″ och se till att välja samma virtuella nätverk (portgrupp) som det tidigare nätverkskortet.
  4. Ta sedan bort det tidigare nätverkskortet genom att markera detta under ”Edit Settings” och klicka på remove.
  5. Konfigurera sedan det nya nätverkskortet med de IP-inställningarna som du noterat. (Windows kommer i detta läge att varna för att det finns ett tidigare nätverkskort med identisk konfiguration. Klicka bara OK på detta.)
  6. Öppna sedan en kommandotolk i din VM och kör ”ipconfig /flushdns” och ”ipconfig /registerdns”.
  7. Ditt nya paravirtualiserade VMXNET3 kort är nu konfigurerat och klart!

För att rensa och ta bort det gamla nätverkskortet och drivrutinen starta en kommandoprompt och skriv följande:

set devmgr_show_nonpresent_devices=1

start devmgmt.msc

Detta kommer att starta enhetshanteraren med möjligheten att visa dolda enheter. Välj sedan i menyn ”Visa > Visa dolda enheter”.  Radera sedan det gamla nätverkskortet under Nätverkskort.

För ytterligare info kring VMXNET och dess prestanda rekommenderas denna PDF från VMware:

http://www.vmware.com/pdf/vsp_4_vmxnet3_perf.pdf

Installera PVSCSI (Ny paravirtualiserat SCSI-kontroller)

Att lägga till en PVSCSI-kontroller är inte konstigare än att lägga till ytterligare en hårddisk till din VM. Att tänka på är dock att välja rätt SCSI-nod id. Detta skall vara 1:x där x = 1 tom 15 (tot 15 st SCSI enheter/adapter).

scsi-node

Detta gäller om du sedan tidigare endast har en SCSI-kontroller. Har du två st skall nod-id vara 2:x. Anledningen till att man gör på detta sättet är för att man skall få möjligheten att lägga till en ny SCSI-kontroller istället för att bara lägga till ytterligare en ny hårddisk på den första SCSI-kontrollern vilket skulle kunna bli node-id 0:1 (den första hårddisken har node-id 0:0). Man kan ha tot 4st SCSI-kontrollers per VM och 15st enheter/kontroller = tot 60 SCSI enheter. Så ex Hårddisk 5 på SCSI-kontroller 3 skulle ha ett node-id på 2:4. (Allt börjar på 0).

Vill man ändra typen (drivrutinen) på den befintliga SCSI-kontrollern som hanterar hårddisken man bootar från kan man inte göra detta endast genom att ändra detta. Maskinen kommer då inte klara av att boota då drivrutinen för SCSI-adaptern inte kommer att kännas igen av ex Windows vid uppstart vilket resulterar i en VM som ej bootar. För att lösa detta problem kan man använda sig av följande steg:

  1. Börja med att lägga till en ny hårddisk till din VM. ”Edit Settings” > Hardware > Add > Hard Disk”.
  2. Vart du väljer att lagra denna Hårddisk eller vilken storlek spelar ingen roll.
  3. Det viktiga är att välja rätt nod-id för den nya Hårddisken för att kunna addera ytterligare en SCSI-kontroller.
  4. Välj virtuell enhets nod-id. Detta skall vara mellan 1:x – 3:x. Se texten ovan för en förklaring kring detta.
  5. Ändra därefter typen på den nyligen adderade SCSI-kontrollern till VMware Paravirtual
  6. pvscsi-choose
  7. Sedan startar du upp din maskin för att Windows skall installera drivrutinen för den nya PVSCSI-kontrollern denna drivrutin hämtas från VMware Tools.
  8. Stäng sedan ner din maskin och ta bort den nya hårddisken genom att markera denna under ”Edit Settings > Hardware” och klicka på Remove.
  9. Välj sedan under ”Edit Settings > Hardware” att markera den primära SCSI-kontrollern och välj ”Change Type”. Välj typen VMware Paravirtual. Klicka sedan Ok och starta upp din VM. Klart!pvscsi

För att rensa och ta bort den gamla SCSI-kontrollern och drivrutinen starta en kommandoprompt och skriv följande:

set devmgr_show_nonpresent_devices=1

start devmgmt.msc

Detta kommer att starta enhetshanteraren med möjligheten att visa dolda enheter. Välj sedan i menyn ”Visa > Visa dolda enheter”.  Radera sedan den gamla SCSI-kontrollern.

För ytterligare info kring PVSCSI och dess prestanda rekommenderas denna PDF från VMware:

http://www.vmware.com/files/pdf/vsphere_performance_wp.pdf

Undantag och begränsningar

Både VMXNET3 och PVSCSI har sina begränsningar vad gäller viss funktionalitet i vSphere och stödet för specifika operativsystem. Exempelvis så fungerar varken VMXNET3 eller PVSCSI enheterna ihop med VMware FT vilket kan vara bra att veta för de som tänk nytta denna funktion för sin VM. PVSCI fungerar endast med Windows 2003, Windows 2008 och Redhat Enterprise Linux 5. Du kan endast använda PVSCI på din ”boot controller disk” alltså SCSI-adaptern för den hårddisken du bootar ditt operativsystem från om du kör ESX 4.0 Update 1 eller senare (fungerar med ESX 4.0 men är inte supporterat). Detta är bara några av de begränsningar som finns gällande dessa nya adapters/drivrutiner. Tror säkerligen att listan med begränsingar kommer att bli allt minder i takt med att VMware släpper nya versioner av vSphere, men jag vill ändå göra er uppmärksamma på att det finns och kan uppstå problem om man inte läser på innan dessa implementeras .

Passar härmed på att önska er läsare en riktigt

God Jul & Gott Nytt År!

Boota ESXi 4 från ett USB-minne

esxiusb

Har satt ihop en guide som steg för steg går igenom hur du gör för att köra ESXi direkt från ett USB-minne. Det innebär att du inte behöver installera ESXi utan kan alltså enbart plugga in ditt USB-minne i din server och starta upp ESXi som ligger förinstallerat som en ”bootimage” på minnet.

En av de största fördelarna med detta är att du inte behöver ha någon lokal hårddisk i din ESXi server utan du använder istället delad lagring som iSCSI eller NFS för att lagra dina virtuella maskiner. Sedan är ju ett USB-minne mindre känsligt än en traditionell hårddisk vilket innebär högra driftsäkerhet och ökad tillgänglighet. En annan fördel är att det blir väldigt enkelt att byta ut hela servern utan att behöva installera om ESXi. Bara att plugga i USB-minnet i den nya hårdvaran och boota.

Detta är dock inte en från VMware officiellt supporterad metod för att köra ESXi och ska därför kanske inte användas i en skarp produktionsmiljö men fungerar utmärkt i test och labb syfte. De stora serverleverantörerna som HP, DELL osv har alla liknande lösningar integrerade i vissa modeller. Med t.ex. interna USB-minnen eller SD-kort.

Guiden hittar du här: Esxi4UsbBoot.pdf

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.

Utöka systemdisken på en VM

Hur många gånger har man inte haft behovet av att öka utrymmet på systemdisken på en windowsmaskin (c:). Man kanske startade med 20GB och märkt efterhand att man behövt utöka detta utrymme till ex 40GB. Det är mycket enkelt att öka storleken på den VMDK fil som din systemdisk består av direkt från din vSphereklient. Det besvärliga är att få windows att nyttja och ”extenda” det extra urymmet som tilldelats disken. Detta kan man enkelt lösa med hjälp av ett litet verktyg från DELL vid namn ExtPart. Det fina med det hela är att du kan göra detta under skarp drift!

Jag vet att det finns ett flertal andra sätt att lösa detta på med exempelvis olika partitioneringsprogram som ”Paragon” eller med gParted (Linux boot cd med verktyg för bla NTFS partitioner) men enligt erfarenhet så tycker jag att detta är det snabbaste och enklaste alternativet utav dem. Ni som kör Windows server 2008 behöver inte bry er om detta då det enkelt går att ”extenda” en systempartition enkelt via att högerklicka på den direkt i diskmanagern. Dock fungerar verktyget ExtPart endast på 32 bitars operativ. Har dokumenterat detta förfarande och satt ihop en liten PDF-guide som visar hur detta sker steg för steg. Hoppas att detta kan vara till hjälp för någon. Lycka till!

PDF-Guiden hittar ni här: ExtPartGuide.pdf

Verktyget ExtPart kan ni hämta här: ExtPart.exe

Både verktyget och guiden kommer att ligga under ”Guider” respektive ”Verktyg”

P2V och Software RAID

Genomförde nyligen en P2V konvertering av en Windows server (2003 32bit). Servern hade 2st fysiska IDE-diskar som var speglade med Windows egna mjukvaruraid. Genomförde själva konverteringen med hjälp av VMware Converter.  Körde an så kallad ”Cold Clone” vilket innebär att man bootar den fysiska servern från en skiva där en anpassad version av Win-PE finns som startar VMware vCenter Converter. Föredrar att alltid använda denna metod vid P2V migreringar då risken för att dataförändringar under själva konverteringen försvinner helt.

Själva konverteringen gick bra trots att det tog ca 5-6 timmar. Det var ca 150GB data som skulle migreras. Det tog lite tid då det bara var 100Mbit nät plus att det var riktigt slöa IDE-diskar. Efter att konverteringen var klar så skulle jag boota upp den nya virtuella maskinen. Detta lyckades INTE och jag fick bara meddelandet ”No operation system found”. Funderade lite kring detta och testade att mounta den VMDK fil som min nya virtuella maskin bestod av till en annan virtuell maskin för att kontrollera innehållet på denna. All data fanns där och jag redigerade ”boot.ini” för att va säker på att den gick mot rätt partition. Testade även att boota maskinen med en win srv 2003 skiva och körde FIXBOOT & FIXMBR utan resultat. Kollade även i diskmanagern att partitionen var aktiv.

Hyffsat frustrerad så började jag googla på detta då jag var ganska säker på att felet hade att göra med att det var en mjukvaruspegling på diskarna när konverteringen kördes. Det jag fann som besvarade min fundering och förklarade problemet var att VMware Convertern bara fungerar med basic eller dynamiska diskar. Men den dynamiska disken måste bestå av endast en fysisk disk.  Det man alltså måste göra innan konverteringen kan ske är att bryta speglingen på dessa diskar i diskmanagern (”break mirror”).

Convertern fungerar så att den försöker att skapa samma antal virtuella diskar som den hittar fysiska diskar under konverteringsprocessen. Detta innebär att diskarna måste ha unika enhetsnamn tilldelade. Om samma enhetsnamn (ex c:) delas mellan två fysiska diskar som är fallet med Windows mjukvaruraid så kommer konverteringen inte att fungera! Eller jo, den kommer att slutförs men det resulterar i att man inte har en bootbar volym.  Hårdvaruraid fungerar av dessa skäl naturligtvis bra. Något att tänka på om ni stöter på en maskin med mjukvaruraid som skall migreras till den virtuella världen.