Upptäckte idag en ganska så intressant sak angående vSphere, snapshots och blockstorleken på VMFS volymer. Detta uppdagades i en miljö där jag skulle undersöka och försöka reda ut varför ett backupjobb skapat i Veeam Backup and Replication hade misslyckats. Jag började med att titta i loggen för det aktuella backupjobbet och den specifika virtuella maskinen i Veeam. Där meddelades följande orsak till varför jobbet misslyckats:
”Creating snapshot
CreateSnapshot failed, vmRef ”320″, timeout ”1800000″, snName ”VEEAM BACKUP TEMPORARY SNAPSHOT”, snDescription ”Please do not delete this snapshot. It is being used by Veeam Backup.”, memory ”False”, quiesce ”True”
A snapshot operation cannot be performed.”
Detta tyder på att backupjobbet som bygger på att en snapshot tas på aktuell VM inte lyckades med den uppgiften. Veeam Backup & Replication som för övrigt är ett strålande verktyg för backup, replikering och återställning hade lyckats att slutföra backupen för alla (ca 30 st) virtuella maskiner utom för just denna. För att hitta källan till detta testade jag att manuellt skapa en snapshot i vSphere klienten på denna VM och fick där följande felmeddelande:

Det var alltså inte möjligt att skapa en snapshot på denna VM trots att det fanns gott om utrymme på de VMFS volymer som den lagrades på. Hittade en KB artikel på VMware.com som förklarar fenomenet. Orsaken till detta är att storleken på en utav de virtuella diskarna för den aktuella maskinen överstiger den storlek som begränsas till ett fast värde beroende på vilken ”blocksize” som den VMFS volym har där den virtuella maskinens ”working directory” husgherar. Låter det klurigt? Jag håller med!
För att klargöra det hela så börjar vi med de storleksbegränsningar för filer som respektive blocksize utgör på en VMFS datastore
| Block Size |
Maximum File Size |
| 1 MB |
256 GB – 512 Bytes |
| 2 MB |
512 GB – 512 Bytes |
| 4 MB |
1024 GB – 512 Bytes |
| 8 MB |
2048 GB – 512 Bytes |
Detta betyder att om du skapar en VMFS datastore och väljer en blockize på ex. 1 MB så innebär detta att den inte kan lagra filer större än 256 GB – 512 Bytes. Om vi nu tittar på den VM som var aktuell i detta fall så hade den följande konfiguration:
VM-NAME
Disk 0:0 60 GB lagras på iSCSI-LUN-01 VMFS-blocksize 1 MB
Disk 0:1 300 GB lagras på iSCSI-LUN-05 VMFS-blocksize 4 MB
Disk 0:0 är i detta fall ”default virtual machine directory” vilket innebär att en snapshot inte tillåts att skapas på denna då storleken på snapshoten i teorin skulle kunna överstiga den totala tillåtna storleken för denna datastore (vilket som sagt är 256 GB – 512 Bytes). Detta pga att Disk 0:1 är som ni ser är 300 GB dvs större än tillåtet.
Hur löser man då detta problem?
Alt 1.
Flytta den disk (med storage vmotion) som innehåller maskinens ”working directory” till en datastore med en större blocksize . Det är som standard den disk som innehåller ”.vmx” filen som är ”working directory”.
Alt 2.
Flytta endast konfigurationsfilen genom att köra en storage vmotion och endast välja ”.vmx” filen och på så vis byta ”working directory”.
För mer info se KB 1004040
Alt 3.
Ändra ”default virtual machine directory” till en datastore med större blocksize. Detta sker genom att manuellt redigera ”.vmx” filen för maskinen. Genom att göra detta kan man dirigera om alla snapshots till en annan datastore.
För instruktioner se KB 1002929
Mitt tips är att alltid använda sig utav den största blockstorleken (8 MB) konstant när man skapar sina VMFS volymer.
Duncan Epping – YellowBrick: Block sizes and growing your VMFS