Provisionnement « thick » et « thin » : quelle est la différence ?
Dans cet article, nous allons examiner en détail l’aspect de la pré-allocation de stockage dans les paramètres des disques virtuels et découvrir ce que sont le provisionnement « thick » et le provisionnement « thin », en quoi ils diffèrent, et lequel de ces types de pré-allocation de stockage est le mieux adapté à votre infrastructure.
Allocation dynamique « thick »
L’allocation dynamique « thick » est un type de pré-allocation de stockage. Avec ce type d’allocation, la totalité de la capacité de stockage du disque virtuel est pré-allouée sur le stockage physique lors de la création du disque virtuel. Un disque virtuel à allocation dynamique « thick » occupe dès le départ tout l’espace qui lui est alloué dans le magasin de données ; cet espace n’est donc pas disponible pour d’autres machines virtuelles.
Il existe deux sous-types de disques virtuels à provisionnement épais :
- Un
Lazy zeroed diskest un disque qui occupe la totalité de son espace au moment de sa création, mais cet espace peut contenir d’anciennes données sur le support physique. Ces anciennes données ne sont ni effacées ni écrasées ; elles doivent donc être « mises à zéro » avant que de nouvelles données puissent être écrites dans les blocs. Ce type de disque peut être créé plus rapidement, mais ses performances seront moindres lors des premières écritures en raison de l’augmentation du nombre d’IOPS (opérations d’entrée/sortie par seconde) pour les nouveaux blocs ; - Un
Eager zeroed diskest un disque qui alloue tout l’espace requis dès sa création, et cet espace est entièrement effacé de toute donnée antérieure présente sur le support physique. La création de disques « eager zeroed » prend plus de temps, car des zéros sont écrits sur l’intégralité du disque, mais leurs performances sont plus rapides lors des premières écritures. Ce sous-type de disque virtuel à provisionnement épais prend en charge les fonctionnalités de clustering, telles que la tolérance aux pannes.

Pour des raisons de sécurité des données, la mise à zéro immédiate (eager zeroing) est plus courante que la mise à zéro différée (lazy zeroing) avec les disques virtuels à provisionnement épais. Pourquoi ? Lorsque vous supprimez un fichier VMDK, les données présentes sur le magasin de données ne sont pas totalement effacées ; les blocs sont simplement marqués comme disponibles, jusqu’à ce que le système d’exploitation les écrase. Si vous créez un disque virtuel à mise à zéro immédiate sur ce magasin de données, la zone du disque sera totalement effacée (c’est-à-dire mise à zéro), empêchant ainsi toute personne mal intentionnée de réaliser la récupération des données précédentes – même en utilisant un logiciel tiers spécialisé.
Allocation dynamique
L’allocation dynamique est un autre type de pré-allocation de stockage. Un disque virtuel à allocation dynamique ne consomme initialement que l’espace dont il a besoin et s’agrandit au fil du temps en fonction de la demande.
Par exemple, si vous créez un nouveau disque virtuel de 30 Go à allocation dynamique et que vous y copiez 10 Go de fichiers, la taille du fichier VMDK résultant sera de 10 Go, alors que vous auriez un fichier VMDK de 30 Go si vous aviez choisi d’utiliser un disque à allocation statique.

Les disques virtuels à allocation dynamique sont rapides à créer et permettent d’économiser de l’espace de stockage. Les performances d’un disque à allocation dynamique ne sont pas supérieures à celles d’un disque à allocation statique mis à zéro de manière différée, car pour ces deux types de disques, des zéros doivent être écrits avant l’écriture de données dans un nouveau bloc. Notez que lorsque vous supprimez vos données d’un disque virtuel à allocation dynamique, la taille du disque n’est pas réduite automatiquement. En effet, le système d’exploitation supprime uniquement les index de la table de fichiers qui font référence au corps du fichier dans le système de fichiers ; il marque les blocs qui appartenaient aux fichiers « supprimés » comme libres et accessibles pour l’écriture de nouvelles données. C’est pourquoi la suppression d’un fichier semble instantanée. S’il s’agissait d’une suppression complète, où des zéros seraient écrits par-dessus les blocs occupés par les fichiers supprimés, cela prendrait environ autant de temps que la copie des fichiers en question. Voir l’illustration simplifiée ci-dessous.

Problèmes pouvant survenir lors de l’utilisation de disques virtuels à allocation dynamique
L’utilisation de disques virtuels à allocation dynamique ne se passe pas toujours sans heurts. Il existe certains problèmes dont vous devez être conscient et auxquels vous devez vous préparer.
Prenons un exemple qui rend les machines virtuelles inutilisables. Imaginons par exemple un magasin de données de 20 Go sur lequel s’exécutent trois machines virtuelles. Chaque machine virtuelle dispose d’un ensemble de disques virtuels à allocation dynamique dont la taille maximale est fixée à 10 Go. (Cette pratique s’appelle le « surprovisionnement » : on attribue aux disques virtuels plus d’espace qu’ils ne peuvent en occuper physiquement. Elle est couramment utilisée, car elle permet d’assurer l’évolutivité du système en ajoutant du stockage physique au fur et à mesure des besoins.) La taille de chaque disque virtuel augmente à mesure que des données sont ajoutées, jusqu’à ce qu’il ne reste plus d’espace libre sur le magasin de données. La situation devient critique lorsqu’il ne reste plus qu’1 Go d’espace libre sur le magasin de données, par exemple lorsque la VM1 occupe 8 Go, la VM2 7 Go et la VM3 4 Go.
Les méthodes habituelles de suppression de fichiers au sein des machines virtuelles ne permettent pas de réduire la taille des disques virtuels à allocation dynamique. Si plus de 1 Go de nouvelles données sont écrites sur l’une de ces machines virtuelles, les trois cesseront de fonctionner et vous devrez migrer une ou plusieurs d’entre elles vers un autre magasin de données pour rétablir leur état de fonctionnement.
Comment réduire la taille d’un disque virtuel à allocation dynamique après la suppression de fichiers
Pour pouvoir réduire la taille du fichier VMDK de vos disques virtuels à allocation dynamique, vous devez savoir comment mettre à zéro les blocs précédemment occupés par les données que vous avez supprimées. Voyons comment procéder. Remarque : Les opérations de réduction de disque ne sont possibles que si les machines virtuelles ne contiennent pas d’instantanés. Veuillez également faire preuve de vigilance et exécuter les commandes sous votre propre responsabilité. Sauvegardez toujours toutes vos données importantes avant d’effectuer toute opération sur le disque.
Réduire la taille des disques VMware à allocation dynamique sous Linux
Prenons un exemple : nous disposons d’un fichier VMDK de 10 266 496 Ko (10 Go) (nous avons déterminé sa taille en accédant au répertoire du magasin de données où se trouve notre machine virtuelle) et souhaitons réduire la taille du disque virtuel sur lequel le système d’exploitation Linux invité est installé. Nous pouvons essayer de supprimer les fichiers inutiles présents sur ce disque virtuel. Cependant, sous Linux, les blocs ne sont pas automatiquement mis à zéro après la suppression des fichiers ; vous devrez le faire vous-même. Pour ce faire, vous pouvez utiliser l’utilitaire dd (duplicateur de données) destiné à la copie et à la conversion de données. Cet outil est disponible sur tous les systèmes Linux.
Remarque : Avant d’exécuter l’utilitaire dd , il est nécessaire de s’assurer que le magasin de données dispose d’une capacité suffisante pour l’utiliser (par exemple, pour un serveur ESXi, vous pouvez vérifier la capacité de stockage dans la section « Stockage » du client vSphere – rendez-vous sur Configuration > Storage).
Utilisons l’utilitaire dd .
-
Tout d’abord, nous vérifions l’espace libre sur une machine virtuelle Linux invitée à l’aide de la commande
df -h:root@test-virtual-machine:/# df -hNous obtenons le résultat suivant dans la console :
Filesystem Size Used Avail Use% Mounted on
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/1000Ce résultat nous indique que la partition
/(racine) contient 8,8 Go de fichiers. -
Supprimons quelques gigaoctets de fichiers inutiles dans la partition racine. Voici ce que nous voyons dans la console lorsque nous exécutons la commande
df -h /:Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 4,7G 11G 31% /Ainsi, notre partition racine contient désormais 4,7 Go de fichiers. Cependant, en accédant au répertoire où se trouve notre fichier VMDK, nous constatons que sa taille est toujours de 10 266 496 Ko (10 Go).
-
Nous allons maintenant remplir l’espace libre avec des zéros (dans notre cas, nous allons remplir 10 Go sur les 11 Go disponibles). Tout d’abord, nous tapons
cdsuivi du nom du répertoire sur lequel est montée la partition à remplir de zéros (dans notre cas, il s’agit decd /, car nous souhaitons accéder à la partition racine). Après cela, nous exécutons la commande suivante, en adaptant les variables à nos besoins :dd bs=1M count=10240 if=/dev/zero of=zeroDans cette commande :
ddne peut être exécutée qu’en tant que super-utilisateur.bsdéfinit la taille des blocs (par exemple,bs=1Mvous donnerait une taille de bloc de 1 mégaoctet).countspécifie le nombre de blocs à copier (par défaut,ddcontinue indéfiniment ou jusqu’à épuisement des données d’entrée). Dans notre cas, 10 240 Mo correspondent à l’espace libre que nous souhaitons remplir de zéros ; le nombre de blocs de 1 mégaoctet est donc de 10 240.-
ifsignifie « fichier d’entrée ». C’est ici que vous devez indiquer la source à partir de laquelle vous souhaitez copier les données. Dans notre cas, il s’agit de/dev/zero– un fichier spécial (un pseudo-périphérique) qui fournit autant de caractères nuls que vous souhaitez en lire. ofsignifie « fichier de sortie ». C’est ici que vous définissez la destination où vous souhaitez écrire/coller vos données (dans notre cas, le nom du fichier estzero).
Après avoir exécuté la commande ci-dessus, la taille de notre fichier VMDK augmente. Voici le résultat que nous obtenons après l’exécution réussie de la commande :
10240+0 records in
10240+0 records out
10737418240 bytes (10 GB) copied, 59,4348 s, 181 MB/s
Command has been completed successfully.La taille de notre fichier VMDK est donc désormais de 11 321 856 Ko (10,8 Go), ce qui signifie qu’il a augmenté. De plus, si nous exécutons à nouveau la commande
df -h /, nous obtiendrons le résultat suivant :Filesystem Size Used Avail Use% Mounted on
/dev/sda7 17G 15G 569M 97% /Cela signifie que la quasi-totalité de la partition racine (soit 97 %) est occupée. Cela s’explique par le fait que nous avons rempli la majeure partie de l’espace auparavant « disponible » avec des zéros. Notre disque virtuel à allocation dynamique est désormais prêt à être réduit.
Remarque : Pour effectuer la réduction, il est nécessaire d’installer VMware Tools.
-
Pour les machines virtuelles fonctionnant sous VMware ESXi ou VMware poste de travail, nous exécutons les deux commandes suivantes dans le système d’exploitation invité Linux.a) Pour nous assurer que la partition du disque est disponible, nous exécutons la commande :
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
Voici le résultat que nous obtenons dans notre cas (c’est-à-dire que nous voyons la liste des partitions disponibles) :
/
/boot
/var/log
La partition racine est présente, nous pouvons donc continuer.b) Pour réduire la partition, nous exécutons la commande suivante :
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
Voici le résultat obtenu dans notre cas :
Please disregard any warnings about disk space for the duration of shrink process.
Progress: 100 [===========>]
Disk shrinking complete.Désormais, la taille de notre fichier VMDK réduit est de 5 323 456 Ko (soit 5,08 Go, ce qui est bien inférieur aux 10,8 Go initiaux).
Remarque : Si votre machine virtuelle invitée s’exécute sur un serveur ESXi, après avoir rempli les blocs avec des zéros, vous pouvez suivre ces étapes :
- Éteignez la machine virtuelle ou déconnectez le disque virtuel que vous souhaitez réduire.
- Connectez-vous à l’hôte ESXi à l’aide du client SSH.
- Accédez à la page
Virtual Machine Folder. - Überprüfen Sie die Nutzung des Disks mit
du -h. - Exécutez
vmkfstools -K test-virtual-machine.vmdk. - Überprüfen Sie erneut die Nutzung des Disks mit
du -h.
Réduire la taille des disques VMware à allocation dynamique sous Windows
Tout comme sous Linux, Windows ne remet pas automatiquement à zéro les blocs après la suppression de fichiers. Pour pouvoir remettre à zéro l’espace libre des disques cibles sur votre machine virtuelle Windows, vous devez télécharger SDelete – un utilitaire gratuit de la suite Sysinternals de Microsoft – et décompresser les fichiers de l’archive téléchargée dans c:program filessdelete
Suivez ensuite ces étapes :
- Exécutez
cmd -
Accédez au répertoire où se trouve
SDelete. Dans notre cas, il s’agit de :cd c:program filessdelete -
Pour chaque partition de la console, utilisez la commande
sdelete -z. Voici ce que nous avons dans notre cas :sdelete -z c:
sdelete -z d:
Ces commandes remettront à zéro tout l’espace libre de votre disque à allocation dynamique en remplissant tout l’espace inutilisé sur les partitions spécifiées. Patientez quelques minutes jusqu’à ce que le processus soit terminé. Votre fichier VMDK atteindra sa taille maximale au cours du processus.
-
Assurez-vous que VMware Tools est installé sur votre machine virtuelle Windows. Par défaut, VMware Tools est installé dans
c:program filesvmwarevmware toolsAccédez à ce répertoire en tapant :
cd c:program filesvmwarevmware tools -
Pour afficher les partitions de disque disponibles, tapez :
vmwaretoolboxcmd disk list -
Réduisez les partitions de disque souhaitées. Dans notre cas, nous avons exécuté les commandes suivantes :
vmwaretoolboxcmd disk shrink c:
vmwaretoolboxcmd disk shrink d:
Warten jusqu’à ce que le programme ait terminé de réduire le disque.
Vous pouvez utiliser cette méthode pour les machines virtuelles fonctionnant sous VMware ESXi ou VMware Poste de travail.
VMware Storage Distributed Resource Scheduler
Nous avons évoqué plus haut une solution permettant de réduire manuellement la taille des disques à allocation dynamique. Il existe toutefois une autre façon de gérer vos disques virtuels (qu’ils soient à allocation dynamique ou à allocation statique), si vous utilisez un cluster de magasins de données dans VMware vSphere. VMware propose une migration automatique des disques virtuels au sein du cluster de magasins de données afin d’éviter le débordement de l’espace de stockage sur lequel se trouvent les disques virtuels à allocation dynamique et d’équilibrer les ressources d’E/S.
Si plusieurs magasins de données partagés sont montés sur le serveur ESXi, vous pouvez configurer le Storage Distributed Resource Scheduler (Storage DRS). Storage DRS est une fonctionnalité intelligente de vCenter Server permettant de gérer efficacement le stockage VMFS et NFS. Elle assure le placement et la migration automatiques des disques des machines virtuelles. Vous pouvez également configurer Storage DRS en mode manuel si vous préférez approuver manuellement les recommandations de migration.
Suivez ces étapes pour activer Storage DRS :
- Accédez au cluster de magasins de données dans le vSphere Web Client.
- Rendez-vous sur
vCenter > Datastore Clusters. - Sélectionnez votre cluster de magasins de données, puis cliquez sur
Manage > Settings > Services > Storage DRS. - Cliquez sur
Edit. - Configurez les paramètres d’automatisation, les fonctions liées aux E/S et les options avancées dont vous avez besoin.

- Cliquez sur
OKpour terminer.
S’il n’y a pas de magasins de données dans votre environnement vSphere, suivez ces étapes pour créer et configurer un nouveau magasin de données :
- Accédez à
vCenter > Datacentersdans le vSphere Web Client. - Cliquez avec le bouton droit sur votre datacenter et sélectionnez
New Datastore Cluster. - Saisissez le nom de votre cluster de magasins de données et cochez la case en regard de «
"Turn On Storage DRS"». - Sélectionnez les paramètres d’automatisation, les fonctions liées aux E/S et les options avancées dont vous avez besoin.
- Cliquez sur «
OK» pour terminer.
Conclusion
Dans cet article de blog, nous avons passé en revue les types de disques virtuels et pesé le pour et le contre de chacun afin de mieux comprendre les différences entre l’allocation « thick » et l’allocation « thin ». Les disques à provisionnement « thick » avec mise à zéro immédiate offrent les meilleures performances et la meilleure sécurité, mais nécessitent suffisamment d’espace de stockage libre et leur création prend beaucoup de temps. Les disques à provisionnement « thick » avec mise à zéro différée présentent l’avantage d’une création rapide, mais ils n’offrent pas la même vitesse que les disques à mise à zéro immédiate et sont moins sécurisés. Les disques à provisionnement « thin » constituent le meilleur choix pour économiser de l’espace sur le magasin de données au moment de la création du disque.
Vous pouvez créer un disque virtuel dont la taille maximale est supérieure à l’espace physique dont vous disposez (« surprovisionnement ») et ajouter ultérieurement du stockage physique, mais n’oubliez pas que si l’espace disque physique est saturé et que le disque à allocation dynamique ne peut pas s’agrandir pour accueillir davantage de données, vos machines virtuelles deviendront inutilisables – veillez donc à surveiller l’espace libre disponible. Nous avons également passé en revue les méthodes permettant de réduire la taille des disques virtuels VMware à allocation dynamique, au cas où vous préféreriez ne pas ajouter de stockage supplémentaire et deviez réduire l’espace occupé.