Partage via


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 :
  • 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 étendre un disque quand une copie d’arrière-plan de données se produit également sur ce disque, 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.

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
  • Europe Ouest
  • USA Est

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.

  1. 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, utilisez az vm deallocate.

  2. 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.

  3. 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.

  1. 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
    
  2. 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
    
  3. 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

  1. Augmentez la taille du disque du système d’exploitation comme détaillé précédemment
  2. Redémarrez la machine virtuelle, puis accédez à la machine virtuelle à l’aide du compte d’utilisateur racine.
  3. 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
       }
   }
}