In dit artikel gaan we het aspect van vooraf toegewezen opslag van virtuele schijfinstellingen in detail bekijken en ontdekken wat dikke en dunne provisioning zijn, hoe ze verschillen, en welk van deze typen vooraf toegewezen opslag beter is voor uw infrastructuur.
Dikke Provisioning
Dikke provisioning is een type vooraf toegewezen opslag. Bij dikke provisioning wordt de volledige hoeveelheid opslagcapaciteit van de virtuele schijf vooraf toegewezen op de fysieke opslag wanneer de virtuele schijf wordt gemaakt. Een dik toegewezen virtuele schijf verbruikt meteen alle ruimte die eraan is toegewezen in de datastore, waardoor de ruimte niet beschikbaar is voor andere virtuele machines.
Er zijn twee subtypen van dikke toegewezen virtuele schijven:
- A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but this space may contain some old data on the physical media. This old data is not erased or written over, so it needs to be “zeroed out” before new data can be written to the blocks. This type of disk can be created more quickly, but its performance will be lower for the first writes due to the increased IOPS (input/output operations per second) for new blocks;
- Een schijf met eager zeroing is een schijf die alle benodigde ruimte krijgt op het moment van creatie, en de ruimte wordt schoongeveegd van eventuele eerdere gegevens op het fysieke medium. Het maken van eager zeroed-disks duurt langer, omdat nullen naar de hele schijf worden geschreven, maar hun prestaties zijn sneller tijdens de eerste schrijfbewerkingen. Dit subtype van dikke toegewezen virtuele schijf ondersteunt clusteringfuncties, zoals fouttolerantie.
Voor data veiligheidsredenen is het actief nulzetten vaker voorkomend dan lui nulzetten bij dik-provisioned virtuele schijven. Waarom? Wanneer je een VMDK verwijdert, wordt de data op de datastore niet volledig gewist; de blokken worden eenvoudig gemarkeerd als beschikbaar, totdat het besturingssysteem ze overschrijft. Als je een actief nulgezet virtuele schijf op deze datastore maakt, zal het schijfgebied volledig gewist worden (d.w.z. genuld), waardoor iemand met slechte bedoelingen niet in staat zal zijn om de vorige data te herstellen – zelfs als ze gespecialiseerde software van derden gebruiken.
Dun-provisionering
Dun-provisionering is een ander type van opslag vooraf toewijzen. Een dun-provisioned virtuele schijf verbruikt alleen de ruimte die het aanvankelijk nodig heeft, en groeit met de tijd volgens de vraag.
Bijvoorbeeld, als je een nieuwe dun-provisioned 30GB virtuele schijf maakt en 10 GB aan bestanden kopieert, zal de grootte van het resulterende VMDK-bestand 10 GB zijn, terwijl je een 30GB VMDK-bestand zou hebben als je had gekozen voor een dik-provisioned schijf.
Dun geprovisioneerde virtuele schijven zijn snel aan te maken en handig om opslagruimte te besparen. De prestaties van een dun geprovisioneerde schijf zijn niet beter dan die van een traag genulde, dik geprovisioneerde schijf, omdat voor beide schijftypen nullen moeten worden geschreven voordat er gegevens naar een nieuw blok kunnen worden geschreven. Merk op dat wanneer u uw gegevens van een dun geprovisioneerde virtuele schijf verwijdert, de schijf grootte niet automatisch wordt verkleind. Dit komt omdat het besturingssysteem alleen de indexen uit de bestandstabel verwijdert die verwijzen naar de bestandsbody in het bestandssysteem; het markeert de blokken die tot ‘verwijderde’ bestanden behoorden als vrij en toegankelijk voor het schrijven van nieuwe gegevens. Dit is de reden waarom we het verwijderen van bestanden als onmiddellijk zien. Als het een volledige verwijdering was, waarbij nullen over de blokken werden geschreven die de verwijderde bestanden in beslag namen, zou het ongeveer dezelfde tijd kosten als het kopiëren van de betreffende bestanden. Zie de vereenvoudigde illustratie hieronder.
Problemen die kunnen optreden bij het gebruik van dun geprovisioneerde virtuele schijven
Het gebruik van dun geprovisioneerde virtuele schijven verloopt niet altijd soepel. Er zijn enkele problemen waarvan u op de hoogte moet zijn en waarop u voorbereid moet zijn.
Laten we een voorbeeld bekijken dat de virtuele machines onbruikbaar maakt. Stel dat we bijvoorbeeld een datastore van 20 GB hebben met drie virtuele machines erop draaiend. Elke virtuele machine heeft een dun toegewezen virtuele schijf met een maximale grootte van 10 GB. (Deze praktijk wordt “overprovisioning” genoemd – we wijzen virtuele schijven meer ruimte toe dan ze fysiek kunnen innemen. Dit wordt vaak gedaan, omdat het u in staat stelt het systeem te schalen door meer fysieke opslag toe te voegen wanneer u het nodig hebt.) De bestandsgrootte van elke virtuele schijf zal toenemen naarmate er gegevens worden toegevoegd, totdat er geen vrije ruimte meer over is op de datastore. De situatie wordt kritiek wanneer er nog maar 1 GB vrije ruimte over is op de datastore, zoals wanneer bijvoorbeeld VM1 8 GB inneemt, VM2 7 GB inneemt en VM3 – 4 GB.
Gewone methoden voor het verwijderen van bestanden binnen virtuele machines zullen niet helpen bij het verkleinen van de dun toegewezen virtuele schijven. Als er meer dan 1 GB aan nieuwe gegevens wordt geschreven naar een van deze virtuele machines, zullen alle drie falen en moet u een of meer van de virtuele machines migreren naar een andere datastore om hun draaiende toestanden te herstellen.
Hoe de Grootte van Dun Toegewezen Virtuele Schijf te Verminderen Na Het Verwijderen van Bestanden
Om de VMDK-bestandsgrootte van uw dun toegewezen virtuele schijven te kunnen verkleinen, moet u weten hoe u de blokken nul maakt die eerder bezet waren door de gegevens die u hebt verwijderd. Laten we kijken hoe dat moet.
Opmerking: Schijfverkleiningsbewerkingen zijn alleen mogelijk als de virtuele machines geen snapshots bevatten. Wees ook attent en voer commando’s uit op eigen verantwoordelijkheid. Maak altijd een back-up van al uw belangrijke gegevens voordat u enige schijfbewerking uitvoert.
Krimp dun-geprovisioneerde VMware-schijven in Linux
Laten we een voorbeeld bekijken: we hebben een VMDK-bestand van 10.266.496 KB (10 GB) (we hebben de grootte geleerd door naar de directory op de datastore te gaan waar onze virtuele machine zich bevindt) en willen de virtuele schijf verkleinen waarop het gast-Linux-besturingssysteem is geïnstalleerd. We kunnen proberen onnodige bestanden op deze virtuele schijf te verwijderen. Linux wist echter niet automatisch blokken na het verwijderen van bestanden; dit moet je zelf doen. Dit kun je doen door de dd
(data duplicator) hulpprogramma te gebruiken voor het kopiëren en converteren van gegevens. Deze tool is beschikbaar op alle Linux-systemen.
Opmerking: Voordat u het dd
hulpprogramma uitvoert, is het noodzakelijk om ervoor te zorgen dat de datastore voldoende capaciteit heeft om het te gebruiken (bijvoorbeeld voor een ESXi-server, kunt u de opslagcapaciteit controleren in het opslaggedeelte van de vSphere-client – ga naar Configuratie > Opslag).
Laten we het dd
hulpprogramma gebruiken.
-
Eerst controleren we de vrije ruimte op een gast-Linux virtuele machine door het gebruik van het
df -h
commando:root@test-virtual-machine:/# df -h
We krijgen de volgende output in de console:
Bestandssysteem Grootte Gebruikt Beschikb. Gebr.% Gemonteerd op udev 469M 0 469M 0% /dev tmpfs 99M 6,3M 92M 7% /run /dev/sda7 17G 8,8G 6,4G 58% / tmpfs 491M 116K 491M 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/sda1 945M 121M 760M 14% /boot /dev/sda6 3,7G 13M 3,5G 1% /var/log tmpfs 99M 36K 99M 1% /run/user/1000
We kunnen uit deze output zien dat de
/
(root) partitie 8,8 GB aan bestanden bevat. -
Laten we een paar gigabytes aan onnodige bestanden in de root partitie verwijderen. Dit is wat we zien in de console, als we het
df -h /
commando uitvoeren:Bestandssysteem Grootte Gebruikt Beschikb. Gebr.% Gemonteerd op /dev/sda7 17G 4,7G 11G 31% /
Zo bevat onze root partitie nu 4,7 GB aan bestanden. Echter, als we naar de directory gaan waar ons VMDK-bestand zich bevindt, kunnen we zien dat de grootte nog steeds 10,266,496 KB (10 GB) is.
-
Nu gaan we de vrije ruimte vullen met nullen (in ons geval vullen we 10 GB van de beschikbare 11 GB). Eerst typen we
cd
gevolgd door de naam van de directory waarop de partitie die genuld moet worden is gemount (in ons geval is datcd /
, omdat we naar de root partitie willen navigeren). Daarna voeren we het volgende commando uit, waarbij we de variabelen aanpassen aan onze behoeften:dd bs=1M count=10240 if=/dev/zero of=zero
In dit commando:
dd
kan alleen worden uitgevoerd als supergebruiker.-
bs
stelt de blokgrootte in (bijvoorbeeld,bs=1M
geeft een blokgrootte van 1 megabyte). -
count
geeft het aantal te kopiëren blokken op (standaard blijftdd
doorgaan totdat de invoer opraakt). In ons geval is 10.240 MB de hoeveelheid vrije ruimte die we willen vullen met nullen, dus het aantal 1-megabyte blokken is 10240. -
if
staat voor “input bestand”. Hier moet je aangeven waar je de gegevens vandaan wilt kopiëren. In ons geval is dat/dev/zero
– een speciaal bestand (een pseudo-apparaat) dat zoveel null-karakters levert als je wilt lezen. -
of
staat voor “output bestand”. Hier stel je de bestemming in waar je je gegevens wilt schrijven/plakken (in ons geval is de bestandsnaamzero
).
Na het uitvoeren van het bovenstaande commando groeit de grootte van ons VMDK-bestand. Dit is de uitvoer die we zien na het succesvol voltooien van het commando:
10240+0 records in 10240+0 records out 10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s Commando is succesvol voltooid.
Dus nu is de grootte van ons VMDK-bestand 11.321.856 KB (10,8 GB), wat betekent dat het is uitgebreid. Ook als we het
df -h /
commando opnieuw uitvoeren, zien we het volgende:Bestandssysteem Grootte Gebruikt Beschikbaar Gebruik% Gemount op /dev/sda7 17G 15G 569M 97% /
Dit betekent dat bijna de hele root partitie (d.w.z. 97%) bezet is. Dit komt doordat we het grootste deel van de voorheen “beschikbare” ruimte hebben gevuld met nullen. Nu is onze dun geprovisioneerde virtuele schijf klaar om te worden verkleind.
Opmerking: Om verkleining uit te voeren, is het noodzakelijk om VMware Tools te installeren.
-
Voor virtuele machines die worden uitgevoerd op VMware ESXi of VMware Workstation, voeren we de volgende twee commando’s uit in het Linux-gast-OS.a) Om ervoor te zorgen dat de schijfpartitie beschikbaar is, voeren we het volgende commando uit:
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
Dit is de uitvoer die we in ons geval zien (d.w.z. we zien de lijst met beschikbare partities):
/
/boot
/var/log
De root-partitie is aanwezig, dus we kunnen doorgaan.b) Om de partitie te verkleinen, voeren we het volgende commando uit:
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
Dit is de uitvoer die we in ons geval zien:
Negeer alstublieft eventuele waarschuwingen over schijfruimte gedurende het krimpproces. Voortgang: 100 [===========>] Schijfverkleining voltooid.
Nu is de grootte van ons verkleinde VMDK-bestand 5.323.456 KB (dat wil zeggen, 5,08 GB – veel minder dan de 10,8 GB die het eerder was).
Opmerking: Als uw gastvirtuele machine wordt uitgevoerd op een ESXi-server, kunt u na het vullen van de blokken met nullen deze stappen volgen:
- Zet de virtuele machine uit of koppel de virtuele schijf die u wilt verkleinen los.
- Verbind met de ESXi-host met de SSH-client.
- Navigeer naar de map Virtuele Machine.
- Controleer het schijfgebruik met
du -h
. - Voer
vmkfstools -K test-virtual-machine.vmdk
uit. - Controleer het schijfgebruik opnieuw met
du -h
.
Het verkleinen van dun geprovisioneerde VMware-schijven in Windows
Net als Linux, zeroed Windows niet automatisch blokken na het verwijderen van bestanden. Om de vrije ruimte van de doelschijven op uw Windows virtuele machine te kunnen zeroen, moet u SDelete downloaden – een gratis hulpprogramma uit de Microsoft Sysinternals Suite – en de bestanden uit het gedownloade archief uitpakken naar c:\program files\sdelete
Volg dan deze stappen:
- Voer
cmd
uit -
Ga naar de map waar SDelete zich bevindt. In ons geval is het:
cd c:\program files\sdelete
-
Voor elke partitie in de console, gebruik het
sdelete -z
commando. Dit is wat we in ons geval hebben:sdelete -z c:
sdelete -z d:
Deze commando’s zullen elke vrije ruimte op uw dun-provisioned schijf zeroen door alle ongebruikte ruimte op de gespecificeerde partities in te vullen. Wacht een paar minuten tot het proces is voltooid. Uw VMDK-bestand zal tijdens het proces uitbreiden naar zijn maximale grootte.
-
Zorg ervoor dat VMware Tools op uw Windows virtuele machine is geïnstalleerd. Standaard worden VMware Tools geïnstalleerd in
c:\program files\vmware\vmware tools\
Ga naar deze map door te typen:
cd c:\program files\vmware\vmware tools\
-
Om de beschikbare schijfpartities te bekijken, typ:
vmwaretoolboxcmd disk list
-
Verklein de schijfpartities die u nodig heeft. In ons geval heeftten we de volgende commando’s uitgevoerd:
vmwaretoolboxcmd disk shrink c:\
vmwaretoolboxcmd disk shrink d:\
Wacht tot het programma klaar is met het verkleinen van de schijf.
U kunt deze methode gebruiken voor virtuele machines die draaien op VMware ESXi of VMware Workstation.
VMware Storage Distributed Resource Scheduler
Hierboven hebben we een oplossing genoemd om handmatig dun provisioned schijven te verkleinen. Er is echter nog een manier om uw virtuele schijven (zowel dun provisioned als dik provisioned) te beheren als u een datastorecluster gebruikt in vSphere. VMware biedt automatische virtuele schijfmigratie binnen het datastorecluster om een overloop van de schijfopslag waar dun provisioned virtuele schijven zich bevinden te vermijden en om I/O-resources in evenwicht te brengen.
Als u meer dan één gedeelde datastore hebt die aan de ESXi-server is gekoppeld, kunt u de Storage Distributed Resource Scheduler (Storage DRS) instellen. Storage DRS is een intelligente vCenter Server-functie voor het efficiënt beheren van VMFS- en NFS-opslag die automatische plaatsing en migratie van virtuele-machineschijven biedt. U kunt Storage DRS ook instellen op de handmatige modus als u het liever handmatig goedkeurt aanbevelingen voor migratie.
Volg deze stappen om Storage DRS in te schakelen:
- Navigeer naar het datastorecluster in de vSphere Web Client.
- Ga naar vCenter > Datastoreclusters.
- Selecteer uw datastorecluster en klik op Beheren > Instellingen > Services > Storage DRS.
- Klik op Bewerken.
- Configureer de automatiseringsinstellingen, I/O-gerelateerde functies en geavanceerde opties die u nodig hebt.
- Klik op OK om te voltooien.
Als er geen datastoreclusters in uw vSphere-omgeving zijn, volgt u deze stappen om een nieuw datastorecluster te maken en in te stellen:
- Navigeer naar vCenter > Datacenters in de vSphere Web Client.
- Klik met de rechtermuisknop op je Datacenter en selecteer Nieuwe Datastore Cluster.
- Voer de naam van je datastore-cluster in en vink het vakje aan bij “Storage DRS inschakelen“.
- Selecteer de automatiseringsinstellingen, I/O-gerelateerde functies en geavanceerde opties die je nodig hebt.
- Klik op OK om te voltooien.
Conclusie
In deze blogpost hebben we de soorten virtuele schijven overwogen en de voor- en nadelen van elk gewogen om de verschillen tussen dikke en dunne provisioning beter te begrijpen. Dikke provisionering met onmiddellijke nullen is het beste voor prestaties en beveiliging, maar vereist voldoende vrije opslagruimte en kost veel tijd om te maken. Dikke provisionering met trage nullen is goed vanwege de korte creatietijden, maar biedt niet zoveel snelheid als schijven met onmiddellijke nullen en is minder veilig. Dunne provisionering is de beste keuze om datastore-ruimte te besparen op het moment van schijfcreatie.
Je kunt een virtuele schijf maken met een grotere maximale grootte dan de fysieke ruimte die je beschikbaar hebt (“overprovisioning”) en in de toekomst meer fysieke opslag toevoegen, maar onthoud dat als de fysieke schijfruimte vol raakt en de dunne-provisioned schijf niet kan groeien om meer gegevens te accommoderen, je virtuele machines onbruikbaar worden – dus vergeet niet om de hoeveelheid vrije ruimte in de gaten te houden. We hebben ook methoden doorgenomen om VMware dun-provisioned virtuele schijven te verkleinen, voor het geval je liever geen extra opslag toevoegt en de ingenomen ruimte wilt verminderen.
Source:
https://www.nakivo.com/blog/thick-and-thin-provisioning-difference/