Ajouter un disque à une machine virtuelle Linux
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Cet article vous explique comment attacher un disque persistant à votre machine virtuelle afin de conserver vos données, et ce, même si votre machine virtuelle est remise en service en raison d’une opération de maintenance ou de redimensionnement.
Attacher un nouveau disque à une machine virtuelle
Si vous souhaitez ajouter un nouveau disque vide sur votre machine virtuelle, utilisez la commande az vm disk attach avec le paramètre --new
. Si votre machine virtuelle est dans une Zone de disponibilité, le disque est automatiquement créé dans la même zone que la machine virtuelle. Pour plus d'informations, consultez Vue d’ensemble des zones de disponibilité. L’exemple suivant crée un disque nommé myDataDisk avec une taille de 50 Go :
az vm disk attach \
-g myResourceGroup \
--vm-name myVM \
--name myDataDisk \
--new \
--size-gb 50
Latence plus faible
Dans certaines régions, la latence d’attachement de disque a été réduite. Vous pourrez donc constater une amélioration pouvant atteindre jusqu’à 15 %. Cela est utile si vous avez des basculements planifiés/non planifiés entre machines virtuelles, si vous mettez à l’échelle votre charge de travail ou si vous exécutez une charge de travail avec état à grande échelle telle qu’Azure Kubernetes Service. Cependant, cette amélioration est limitée à la commande d’attachement de disque explicite, az vm disk attach
. Vous ne constaterez pas d’amélioration des performances si vous appelez une commande qui peut implicitement effectuer un attachement, comme az vm update
. Vous n’avez rien besoin de faire sinon appeler la commande d’attachement explicite pour voir cette amélioration.
Il est actuellement possible de bénéficier d’une latence réduite dans chaque région publique, à l’exception des suivantes :
- Centre du Canada
- USA Centre
- USA Est
- USA Est 2
- États-Unis - partie centrale méridionale
- USA Ouest 2
- Allemagne Nord
- Inde Ouest Jio
- Europe Nord
- Europe Ouest
Association d'un disque existant
Pour attacher un disque existant, rechercher l’ID de disque et transmettez-le à la commande az vm disk attach. L’exemple suivant interroge pour un disque nommé myDataDisk dans myResourceGroup, puis l’attache à la machine virtuelle nommée myVM :
diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)
az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId
Formater et monter le disque
Vous devez exécuter SSH dans votre machine virtuelle Azure afin de partitionner, de formater et de monter votre nouveau disque pour que votre machine virtuelle Linux puisse l’utiliser. Pour plus d’informations, consultez l’article Utilisation de SSH avec Linux sur Azure. L’exemple suivant établit une connexion à une machine virtuelle à l’aide de l’adresse IP publique 10.123.123.25 avec le nom d’utilisateur azureuser :
ssh azureuser@10.123.123.25
Recherche du disque
Une fois connecté à votre machine virtuelle, recherchez le disque. Dans cet exemple, nous utilisons lsblk
pour répertorier les disques.
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
Le résultat ressemble à l’exemple suivant :
sda 0:0:0:0 30G
├─sda1 29.9G /
├─sda14 4M
└─sda15 106M /boot/efi
sdb 1:0:1:0 14G
└─sdb1 14G /mnt
sdc 3:0:0:0 50G
sdc
correspond au disque que nous recherchons, car il fait 50 G. Si vous ajoutez plusieurs disques et ne savez pas duquel il s’agit uniquement en vous basant sur la taille, vous pouvez accéder à la page des machines virtuelles du portail, sélectionner Disques et vérifier le numéro d’unité logique (LUN) du disque sous Disques de données. Comparez le numéro LUN du portail au dernier nombre de la partie HTCL de la sortie, qui correspond au numéro d’unité logique (LUN). Une autre option consiste à répertorier le contenu du répertoire /dev/disk/azure/scsi1
:
ls -l /dev/disk/azure/scsi1
La sortie doit ressembler à celle de l’exemple suivant :
lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc
Formater le disque
Pour formater le disque, utilisez parted
. Si la taille du disque est supérieure ou égale à deux tébioctets (Tio), vous devez utiliser le partitionnement GPT. Si elle est inférieure à 2 Tio, vous pouvez utiliser le partitionnement MBR ou GPT.
Notes
Il est recommandé d’utiliser la dernière version de parted
disponible pour votre distribution.
Si la taille du disque est supérieure ou égale à 2 Tio, vous devez utiliser le partitionnement GPT. Si la taille du disque est inférieure à 2 Tio, vous pouvez utiliser le partitionnement MBR ou GPT.
L’exemple suivant utilise parted
sur /dev/sdc
, où le premier disque de données se trouve généralement sur la plupart des machines virtuelles. Remplacez sdc
par l’option adaptée à votre disque. Nous le formatons également à l’aide du système de fichiers XFS.
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1
Utilisez l’utilitaire partprobe
pour vérifier que le noyau tient compte de la nouvelle partition et du nouveau système de fichiers. Si vous ne parvenez pas à utiliser partprobe
, les commandes blkid ou lsblk ne retournent pas immédiatement l’UUID du nouveau système de fichiers.
Monter le disque
À présent, créez un répertoire afin de monter le système de fichiers à l’aide de mkdir
. L'exemple suivant crée un répertoire sous /datadrive
:
sudo mkdir /datadrive
Utilisez mount
pour monter le système de fichiers. L'exemple suivant monte la partition /dev/sdc1
sur le point de montage /datadrive
:
sudo mount /dev/sdc1 /datadrive
Rendre le montage permanent
Pour vous assurer que le lecteur est remonté automatiquement après un redémarrage, vous devez l’ajouter au fichier /etc/fstab
. Il est aussi vivement recommandé d’utiliser l’UUID (identificateur unique universel) dans /etc/fstab
pour faire référence au lecteur plutôt que de se contenter du nom de l’appareil (par exemple /dev/sdc1). Si le système d’exploitation détecte une erreur disque pendant le démarrage, l’utilisation de l’UUID évite que le disque incorrect ne soit monté sur un emplacement donné. Les disques de données restants reçoivent alors les mêmes ID d’appareil. Pour rechercher l’UUID du nouveau lecteur, utilisez l’utilitaire blkid
:
sudo blkid
La sortie doit ressembler à celle-ci :
/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"
Notes
si vous ne modifiez pas correctement le fichier /etc/fstab
, il se peut que le système ne puisse plus démarrer. En cas de doute, reportez-vous à la documentation de la distribution pour obtenir des informations sur la modification adéquate de ce fichier. Il est par ailleurs vivement recommandé de créer une sauvegarde du fichier /etc/fstab
avant de le modifier.
Ouvrez ensuite le fichier /etc/fstab
dans un éditeur de texte. Ajoutez une ligne à la fin du fichier, en utilisant la valeur UUID de l’appareil /dev/sdc1
créé lors des étapes précédentes et le point de montage /datadrive
. Avec l’exemple de cet article, la nouvelle ligne se présente comme suit :
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
Quand vous avez terminé de modifier le fichier, enregistrez et fermez l’éditeur.
Vous pouvez également exécuter la commande suivante pour ajouter le disque au fichier /etc/fstab
:
echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2" >> /etc/fstab
Notes
La suppression ultérieure d’un disque de données sans modifier fstab pourrait entraîner l’échec du démarrage de la machine virtuelle. La plupart des distributions fournissent les options fstab nofail et/ou nobootwait. Ces options permettent à un système de démarrer même si le disque n’est pas monté au moment du démarrage. Pour plus d’informations sur ces paramètres, consultez la documentation de votre distribution.
L’option nofail garantit que la machine virtuelle démarre même si le système de fichiers est endommagé ou si le disque n’existe pas au moment du démarrage. Sans cette option, vous pouvez être confronté au comportement décrit dans Cannot SSH to Linux VM due to FSTAB errors (Connexion SSH vers machine virtuelle Linux impossible en raison d’erreurs FSTAB)
La console série de machine virtuelle Azure peut servir pour accéder à la console sur votre machine virtuelle si la modification de fstab a entraîné un échec de démarrage. Plus de détails dans la documentation relative à la console série.
Prise en charge de TRIM/UNMAP pour Linux dans Azure
Certains noyaux Linux prennent en charge les opérations TRIM/UNMAP pour ignorer les blocs inutilisés sur le disque. Cette fonctionnalité est particulièrement utile pour informer Azure que des pages supprimées ne sont plus valides et peuvent être ignorées. Cette fonctionnalité permet d’économiser de l’argent sur les disques qui sont facturés en fonction de la quantité de stockage consommée, comme les disques standard non managés et les captures instantanées de disque.
Il existe deux façons d’activer la prise en charge de TRIM sur votre machine virtuelle Linux. Comme d’habitude, consultez votre distribution pour connaître l’approche recommandée :
Utilisez l’option de montage
discard
dans/etc/fstab
, par exemple :UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2
Dans certains cas, l’option
discard
peut avoir un impact sur la performance. Vous pouvez également exécuter la commandefstrim
manuellement à partir de la ligne de commande ou l’ajouter à votre crontab pour l’exécuter régulièrement :
Dépannage
Lorsque vous ajoutez des disques de données à une machine virtuelle Linux, vous pouvez rencontrer des erreurs si un disque n’existe pas sur le LUN 0. Si vous ajoutez un disque manuellement à l’aide de la commande az vm disk attach -new
et que vous spécifiez un LUN (--lun
) au lieu de laisser la plateforme Azure déterminer le LUN approprié, vérifiez qu’un disque existe déjà ou existera sur le LUN 0.
Prenons l’exemple suivant montrant un extrait de code de sortie de lsscsi
:
[5:0:0:0] disk Msft Virtual Disk 1.0 /dev/sdc
[5:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdd
Les deux disques de données existent sur le LUN 0 et sur le LUN 1 (la première colonne dans les détails de sortie lsscsi
[host:channel:target:lun]
). Les deux disques doivent être accessibles à partir de la machine virtuelle. Si vous aviez manuellement spécifié le premier disque à ajouter au LUN 1 et le deuxième disque au LUN 2, les disques peuvent ne pas s’afficher correctement à partir de votre machine virtuelle.
Notes
La valeur Azure host
est égale à 5 dans ces exemples, mais elle peut varier selon le type de stockage que vous sélectionnez.
Ce comportement de disque n’est pas dû à un problème d’Azure, mais dépend de la façon dont le noyau Linux suit les spécifications SCSI. Lorsque le noyau Linux analyse le bus SCSI à la recherche des périphériques connectés, un périphérique doit être présent sur le LUN 0 pour que le système puisse continuer l’analyse des autres périphériques. Par conséquent :
- Examinez la sortie de
lsscsi
après l’ajout d’un disque de données pour vérifier que vous disposez d’un disque sur le LUN 0. - Si le disque ne s’affiche pas correctement dans votre machine virtuelle, vérifiez qu'un disque existe sur le LUN 0.
Étapes suivantes
- Pour vous assurer que votre machine virtuelle Linux est correctement configurée, passez en revue les recommandations visant à optimiser les performances de votre machine virtuelle Linux .
- Développez votre capacité de stockage en ajoutant des disques supplémentaires et configurez RAID pour augmenter les performances.