Des machines virtuelles sont créées en permanence sur Azure, et très régulièrement sur Windows Serveur. Sans se poser de question, le choix de l’image présélectionne sans votre avis la taille du disque OS, sans aucun pouvoir de modification.
Mais comment faire si l’on souhaite autre chose que la taille par défaut de 128GB pour notre lecteur C ?
Nous allons voir ensemble dans cet article les différentes possibilités, avant et après la création d’une machine virtuelle, pour changer très facilement la taille du disque OS.
Cas classique : Image Windows Server
Commençons par le cas standard, la création d’une machine virtuelle avec Windows Serveur entraîne la création d’un disque OS.
Dans le second onglet de création de la machine virtuelle, je n’ai pas de choix concernant la taille de mon disque OS :
Rappel : les performances du disque vont influer sur la SLA de la machine virtuelle, que vous pouvez retrouver en pourcentages ici.
Une fois la machine virtuelle créée, je ne peux que constater la taille de mon disque OS, assez facilement depuis la section des disques :
Redimensionnement du disque OS sur une machine virtuelle existante
Une alerte est mentionnée en haut de page : la taille d’un disque ne peut se faire que si ce dernier est détaché de la machine virtuelle ou que si cette dernière est éteinte :
Cas A : Redimensionnement à la baisse
Une fois la machine virtuelle arrêtée, un redimensionnement à la baisse va obligatoirement échouer, dans le but de prévenir la perte de données :
Cas B : Redimensionnement à la hausse
Cela ne sera pas le cas dans le cas d’un redimensionnement à la hausse, comme vous pouvez le voir en dessous :
Dernière chose à faire, agrandir la partition du lecteur C directement depuis la machine virtuelle :
Comment faire donc pour effectuer pour disposer d’un lecteur C plus petite taille ? Sachant que l’OS est loin de remplir le lecteur C, plusieurs options s’offrent à nous :
- Création d’une machine virtuelle avec une image portant la mention [smalldisk]
- Redimensionnement du disque OS, après déploiement de la machine virtuelle
Remarque importante : Prenez garde avec la taille des disques, un disque trop réduit vous apportera peu d’IOPS et donc des performances disques insuffisantes :
Néanmoins, cette démarche peut être utile dans certains cas et donc générer une économie de coûts.
1er cas : Image Windows Server 2019 [smalldisk]
Si, avant la création de la machine virtuelle, vous savez déjà que votre disque C peut être plus réduit, vous pouvez alors partir sur des images spécifiques. Voici par exemple la liste des [smalldisk] disponibles pour Windows Serveur :
Une fois la machine provisionnée sur votre souscription Azure, vous constaterez que la taille du disque OS est de 30GB. Cette taille est donc plus réduite que la précédente. Vous pourrez toujours changer celle-ci à la hausse simplement en éteignant votre machine virtuelle.
2ème cas : Redimensionnement du lecteur C puis du disque OS
Il arrive dans certains cas que la machine virtuelle existe déjà. Il va donc falloir commencer le processus par redimensionner le lecteur C. Je suis donc tombé sur cet excellent article (en anglais) et écrit par Jack Rudlin. Les étapes nécessaires pour y parvenir sont :
- Réduction de la partition de l’OS dans Windows
- Redimensionnement du disque OS dans Azure
- Lancement du script sous PowerShell
- Extension de la partition du système d’exploitation
Je recréé donc une nouvelle machine virtuelle, afin de faire avec vous cette opération de réduction « à chaud » :
Important : comme indiqué dans l’article de Jack et dans la source Microsoft, il est fortement recommandé de faire un snapshot du disque avant toute opération pour sauvegarder les données.
Dans un premier temps, nous nous connectons en RDP sur la machine virtuelle. Cet accès nous permet de changer la taille du lecteur C via un une première requête PowerShell, disposants des droits d’administration :
Get-Partition -DiskNumber 0
Cette requête nous donne le numéro de partition, utilisé après pour le redimensionnement.
Get-Partition -DiskNumber 0 -PartitionNumber 2 | Resize-Partition -Size 31GB
Cette simple commande redimensionne la partition du lecteur C.
La suite va se faire en dehors de la machine virtuelle. Il faut commencer par éteindre la machine virtuelle pour effectuer la copie des données :
Il donc falloir ici utiliser le module AZ sur votre poste via PowerShell pour continuer la suite des opérations. Voici une vidéo qui explique bien comment y arriver facilement :
La suite se fait avec le lancement du script donné par Jack, disponible depuis son GitHub via ce lien.
Aussi je vous conseille de passer par PowerShell ISE pour modifier facilement le script, car plusieurs variables vont devoir être modifiées :
- Ressource ID du disque OS à modifier, que vous pouvez retrouver dans les propriétés du disque OS
- Nom de la VM, que vous pouvez retrouver sur la page de la machine virtuelle
- Nom de la souscription Azure, que vous pouvez retrouver sur la page de la machine virtuelle
Avant de lancer le script :
- Celui-ci demande de posséder un certains nombres de droits pour effectuer toutes les tâches
- Dans mon exemple (généralement non recommandé), j’ai utilisé un utilisateur avec le profil d’administrateur global du tenant Azure
- A minima, vous devez disposer au moins des rôles de contributeur VM et de contributeur de compte de stockage dans Azure
Dans le détail, le script de Jack effectue les actions suivantes :
- Création d’un compte de stockage temporaire
- Création d’un container temporaire dans le nouveau compte de stockage
- Copie du disque OS dans le compte de stockage temporaire sous forme de page blob
- Modification la taille du page blob pour que le disque d’OS soit réduit
- Reconversion du disque non managé en disque managé
- Remplacement du disque OS actuel de la VM par le nouveau disque OS plus petit
- Redémarrage de la machine virtuelle
- Nettoyage du compte de stockage temporaire et de l’ancien disque managé
Le processus peut également être suivi depuis le portail Azure en constatant l’évolution du compte de stockage créé par le script de Jack :
Il faut compter une bonne quinzaine de minutes pour que le script arrive à sa fin. Une connexion en RDP à cette dernière permet de réaliser la dernière étape du processus.
Compte tenu des volumes renseignés dans notre exemple, un reliquat d’espace est disponible sur le disque OS (522MB) :
Il faut donc compter au total une bonne vingtaine de minutes pour effectuer ce processus.
Conclusion
Il est donc bien possible de redimensionner un disque OS à plusieurs moments. Pensez toujours à faire des sauvegardes avant ce type d’opération ! Pensez à partager dans les commentaires vos autres sources d’apprentissage ????