Développer des disques durs virtuels sur une machine virtuelle Linux
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Cet article traite du développement des disques de système d’exploitation et des disques de données pour une machine virtuelle Linux. Vous pouvez ajouter des disques de données pour fournir plus d’espace de stockage, et vous pouvez également étendre un disque de données existant. La taille par défaut de disque dur virtuel pour le système d’exploitation est généralement de 30 Go sur une machine virtuelle Linux dans Azure. Cet article décrit l’extension de disques de système d’exploitation ou de disques de données. Vous ne pouvez pas développer la taille des volumes en bandes.
Ce disque du système d’exploitation a une capacité maximale de 4 095 Gio. Cependant, de nombreux systèmes d’exploitation sont partitionnés avec un enregistrement de démarrage principal (MBR) par défaut. Le MBR limite la taille utilisable à 2 Tio. Si vous avez besoin de plus de 2 Tio, envisagez d’attacher des disques de données pour le stockage de données. Si vous devez stocker des données sur le disque du système d’exploitation et que vous avez besoin de plus d’espace, convertissez-le en table de partitionnement GUID (GUID Partition Table/GPT).
Avertissement
Assurez-vous que l’état d’intégrité de votre système de fichiers soit toujours sain, votre type de table de partition de disque (GPT ou MBR) prendra en charge la nouvelle taille. Veillez également à sauvegarder vos données avant de développer les disques. Pour plus d’informations, consultez le démarrage rapide de Sauvegarde Azure.
Identifier l’objet de disque de données Azure dans le système d’exploitation
Lors de l’expansion d’un disque de données, lorsqu’il existe plusieurs disques de données présents sur la machine virtuelle, il peut être difficile de lier les numéros d’unité logique Azure aux appareils Linux. Si le disque du système d’exploitation a besoin d’une extension, il est clairement étiqueté dans le portail Azure comme disque du système d’exploitation.
Commencez par identifier la relation entre l’utilisation du disque, le point de montage et l’appareil, avec la commande df
.
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 97G 1.8G 95G 2% /
<truncated>
/dev/sdd1 ext4 32G 30G 727M 98% /opt/db/data
/dev/sde1 ext4 32G 49M 30G 1% /opt/db/log
Ici, nous pouvons voir, par exemple, que le système de fichiers /opt/db/data
est presque plein et se trouve sur la partition /dev/sdd1
. La sortie de df
indique le chemin d’accès de l’appareil, que le disque soit monté par le chemin d’accès de l’appareil ou par l’UUID (préféré) dans le fstab. Notez également la colonne Type, qui indique le format du système de fichiers. Le format est important plus tard.
Localisez maintenant l’unité logique qui correspond à /dev/sdd
en examinant le contenu de /dev/disk/azure/scsi1
. La sortie de la commande ls
suivante indique que l’appareil appelé /dev/sdd
dans le système d’exploitation Linux se trouve à LUN1 lors de la recherche dans le portail Azure.
sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep 9 21:54 ./
drwxr-xr-x. 4 root root 80 Sep 9 21:48 ../
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root 13 Sep 9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root 12 Sep 9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root 13 Sep 9 21:54 lun2-part1 -> ../../../sde1
Étendre un disque managé Azure
Étendre sans temps d’arrêt
Vous pouvez étendre vos disques managés sans libérer votre machine virtuelle. Le paramètre de cache hôte de votre disque ne change pas si vous pouvez ou non développer un disque de données sans libérer votre machine virtuelle.
Cette fonctionnalité présente les limitations suivantes :
- Prise en charge uniquement pour les disques de données.
- Si la taille d’un disque HDD Standard, SSD Standard ou SSD Premium est inférieure ou égale à 4 Tio, libérez votre machine virtuelle et détachez le disque avant de l’étendre à plus de 4 Tio. Si l’un de ces types de disque est déjà supérieur à 4 Tio, vous pouvez l’étendre sans libérer la machine virtuelle ni détacher le disque. Cette opération ne s’applique pas aux Disques Ultra ou SSD Premium v2.
- Non pris en charge pour les disques partagés.
- Installer et utiliser soit :
- La dernière version d’Azure CLI
- Le dernier module Azure PowerShell
- Portail Azure
- Ou un modèle Azure Resource Manager avec une version d’API
2021-04-01
ou plus récente.
- Non disponible sur certaines machines virtuelles classiques. Utilisez ce script pour obtenir la liste des références SKU de machines virtuelles classiques qui prennent en charge le développement sans temps d’arrêt.
Extension avec des disques Ultra Disk et SSD Premium v2
L'extension avec des disques Ultra Disks et Premium SSD v2 présente les limitations supplémentaires suivantes :
- Vous ne pouvez pas développer un disque quand une copie en arrière-plan de données s’y produit également, comme lorsqu’un disque est alimenté à partir de captures instantanées.
- Vous ne pouvez pas étendre une machine virtuelle utilisant les contrôleurs NVMe pour des disques SSD Premium v2 ou Disques Ultra sans temps d’arrêt.
Important
Prévoyez jusqu’à dix minutes pour que la taille correcte se reflète dans les machines virtuelles Windows et Linux. Pour les machines virtuelles Linux, vous devez effectuer une fonction de relance d’analyse. Pour une machine virtuelle Windows qui n’a pas de charge de travail, vous devez effectuer une fonction de relance d’analyse Windows. Vous pouvez relancer l’analyse immédiatement, mais si elle se produit dans les dix minutes, il est possible que vous deviez relancer l’analyse une nouvelle fois pour afficher la taille correcte.
Disponibilité régionale
Le redimensionnement de Disques Ultra et de disques SSD Premium v2 est actuellement disponible dans toutes les régions prenant en charge SSD Premium v2 et Ultra, à l’exception des suivantes :
- USA Ouest 2
Développer un disque géré Azure
Vérifiez que vous avez installé la dernière version d’Azure CLI et que vous êtes connecté à un compte Azure avec la commande az login.
Cet article nécessite une machine virtuelle existante dans Azure avec au moins un disque de données attaché et préparé. Si vous n’avez pas encore de machine virtuelle à utiliser, consultez Créer et préparer une machine virtuelle avec des disques de données.
Dans les exemples ci-après, remplacez les exemples de nom de paramètre, tels que myResourceGroup et myVM, par vos propres valeurs.
Important
Si votre disque remplit les exigences indiquées dans Étendre sans temps d’arrêt, vous pouvez ignorer les étapes 1 et 3.
La réduction d’un disque existant n’est pas prise en charge et risque d’entraîner une perte de données.
Après avoir développé les disques, vous devez développer le volume dans le système d’exploitation pour tirer parti du disque plus volumineux.
Il est impossible d’effectuer des opérations sur les disques durs virtuels avec la machine virtuelle en cours d’exécution. Libérez la machine virtuelle avec la commande az vm deallocate. L’exemple suivant libère la machine virtuelle nommée myVM dans le groupe de ressources nommé myResourceGroup :
az vm deallocate --resource-group myResourceGroup --name myVM
Notes
La machine virtuelle doit être libérée pour développer le disque dur virtuel. L’arrêt de la machine virtuelle avec
az vm stop
ne libère pas les ressources de calcul. Pour publier les ressources de calcul, utilisezaz vm deallocate
.Affichez la liste des disques managés dans un groupe de ressources avec la commande az disk list. L’exemple suivant affiche la liste des disques managés dans le groupe de ressources nommé myResourceGroup :
az disk list \ --resource-group myResourceGroup \ --query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \ --output table
Développez le disque requis avec la commande az disk update. L’exemple ci-après étend la taille du disque managé nommé myDataDisk à 200 Go :
az disk update \ --resource-group myResourceGroup \ --name myDataDisk \ --size-gb 200
Notes
Lorsque vous étendez un disque managé, la taille mise à jour est arrondie à la taille de disque managé la plus proche. Pour obtenir un tableau des tailles et niveaux de disque managé disponibles, consultez Comprendre la facturation du Stockage sur disque Azure.
Démarrez votre machine virtuelle avec az vm start. L’exemple suivant démarre la machine virtuelle nommée myVM dans le groupe de ressources nommé myResourceGroup :
az vm start --resource-group myResourceGroup --name myVM
Étendre une partition de disque et un système de fichiers
Notes
Bien qu’il existe de nombreux outils permettant d’effectuer le redimensionnement de partition, les outils détaillés dans le reste de ce document sont les mêmes que ceux utilisés par certains processus automatisés tels que cloud-init. Comme indiqué ici, l’outil growpart
avec le package gdisk
offre une compatibilité universelle avec les disques GPT (table de partition GUID), car les anciennes versions de certains outils tels que fdisk
ne prennent pas en charge GPT.
Détection d’une taille de disque modifiée
Si un disque de données a été étendu sans temps d’arrêt en utilisant la procédure mentionnée précédemment, la taille du disque signalée n’est pas modifiée tant que l’appareil n’est pas rescanné, ce qui ne se produit normalement que pendant le processus de démarrage. Cette nouvelle analyse peut être appelée à la demande avec la procédure suivante. Dans cet exemple, nous constatons, à l’aide des méthodes de ce document, que le disque de données est actuellement /dev/sda
et a été redimensionné de 256 Gio à 512 Gio.
Identifier la taille actuellement reconnue sur la première ligne de sortie à partir de
fdisk -l /dev/sda
sudo fdisk -l /dev/sda
Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x43d10aad Device Boot Start End Sectors Size Id Type /dev/sda1 2048 536870878 536868831 256G 83 Linux
Insérez un caractère
1
dans le fichier de réanalyse de cet appareil. Notez la référence à sda dans l’exemple. L’identificateur de disque changera si un autre appareil disque a été redimensionné.echo 1 | sudo tee /sys/class/block/sda/device/rescan
Vérifiez que la nouvelle taille de disque est désormais reconnue
sudo fdisk -l /dev/sda
Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors Disk model: Virtual Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x43d10aad Device Boot Start End Sectors Size Id Type /dev/sda1 2048 536870878 536868831 256G 83 Linux
Le reste de cet article utilise les utilisations du disque de l’OS pour les exemples relatifs à la procédure permettant d’augmenter la taille d’un volume au niveau de l’OS. Si le disque étendu est un disque de données, consultez les instructions d’aide précédentes afin d’identifier le périphérique de disque de données, puis suivez ces instructions pour remplacer l’appareil de disque de données (par exemple /dev/sda
), les numéros de partition, les noms de volumes, les points de montage et les formats de système de fichiers, le cas échéant.
Tous les conseils de système d’exploitation Linux doivent être considérés comme génériques et peuvent s’appliquer à n’importe quelle distribution, mais ils correspondent généralement aux conventions de l’éditeur de place de marché nommé. Reportez-vous aux documents Red Hat pour connaître les exigences de package sur toute distribution revendiquant la compatibilité Red Hat, comme CentOS et Oracle.
Augmenter la taille du disque du système d’exploitation
Les instructions suivantes s’appliquent aux distributions Linux approuvées.
Notes
Avant de continuer, effectuez une copie de sauvegarde de votre machine virtuelle ou prenez au moins un instantané de votre disque de système d’exploitation.
Sur Ubuntu 16.x et versions plus récentes, la partition racine du disque du système d’exploitation et les systèmes de fichiers sont automatiquement étendus pour utiliser tout l’espace contigu libre sur le disque racine par cloud-init, à condition qu’il y ait un peu d’espace libre pour l’opération de redimensionnement. Dans ce cas, la séquence est simplement
- Augmentez la taille du disque du système d’exploitation comme détaillé précédemment
- Redémarrez la machine virtuelle, puis accédez à la machine virtuelle à l’aide du compte d’utilisateur racine.
- Vérifiez que le disque du système d’exploitation affiche désormais une taille de système de fichiers accrue.
Comme indiqué dans l’exemple suivant, le disque du système d’exploitation a été redimensionné à 100 Go depuis le portail. Le système de fichiers /dev/sda1 monté sur / affiche désormais 97 Go.
df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 314M 0 314M 0% /dev
tmpfs tmpfs 65M 2.3M 63M 4% /run
/dev/sda1 ext4 97G 1.8G 95G 2% /
tmpfs tmpfs 324M 0 324M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 324M 0 324M 0% /sys/fs/cgroup
/dev/sda15 vfat 105M 3.6M 101M 4% /boot/efi
/dev/sdb1 ext4 20G 44M 19G 1% /mnt
tmpfs tmpfs 65M 0 65M 0% /run/user/1000
user@ubuntu:~#
Extension sans temps d’arrêt de la prise en charge de la référence SKU de machine virtuelle classique
Si vous utilisez une référence SKU de machine virtuelle classique, elle peut ne pas prendre en charge le développement de disques sans temps d’arrêt.
Utilisez le script PowerShell suivant pour déterminer les références SKU de machine virtuelle disponibles :
Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}
foreach($vmSize in $vmSizes){
foreach($capability in $vmSize.Capabilities)
{
if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
{
$vmSize.Name
}
}
}