Modifier

Partager via


NVMe – FAQ sur les disques NVMe distants

Cet article répond à certaines questions courantes sur la prise en charge des disques NVMe distants sur les machines virtuelles créées dans Azure.

Quelles sont les conditions préalables à l’activation de l’interface NVMe distante sur ma machine virtuelle ?

Une fonctionnalité a été ajoutée à la configuration de la machine virtuelle, appelée DiskControllerType, qui permet aux clients de sélectionner leur type de contrôleur préféré comme NVMe ou SCSI. Si le client ne spécifie pas de valeur DiskControllerType, la plateforme choisit automatiquement le contrôleur par défaut en fonction de la configuration de la taille de machine virtuelle. Si la taille de la machine virtuelle est configurée pour SCSI comme valeur par défaut et prend en charge NVMe, SCSI est utilisé, sauf s’il est mis à jour vers le DiskControllerType NVMe. Pour activer l’interface NVMe, les conditions préalables suivantes doivent être remplies :

  • Choisissez une famille de machines virtuelles qui prend en charge NVMe.
  • Sélectionnez l’image du système d’exploitation marquée avec la prise en charge NVMe.
  • Optez pour NVMe en sélectionnant le type de contrôleur de disque NVMe dans le Portail Azure ou un modèle ARM/CLI/PowerShell. Pour obtenir des instructions pas à pas, rendez-vous ici.
  • Seules les images Gen2 sont prises en charge. En remplissant les quatre conditions ci-dessus, vous serez en mesure d’activer NVMe sur la famille de machines virtuelles prise en charge en un rien de temps. Suivez les conditions ci-dessus pour créer ou redimensionner correctement une machine virtuelle avec NVMe sans aucune complication.

Comment activer un disque NVMe distant sur une famille de machines virtuelles ?

Pour activer l’interface NVMe pour le disque distant, vérifiez que les cinq conditions suivantes sont remplies :

  • Choisissez une famille de machines virtuelles qui prend en charge NVMe. Il est important de noter que seules les tailles de machines virtuelles Ebsv5 et Ebdsv5 sont équipées de NVMe dans les machines virtuelles de génération Intel v5. Veillez à sélectionner l’une des machines virtuelles de la série, Ebsv5 ou Ebdsv5.

  • Sélectionnez l’image du système d’exploitation marquée avec la prise en charge NVMe. Une fois que la famille de machines virtuelles et l’image de système d’exploitation prises en charge sont sélectionnées, vous êtes invité à sélectionner le type de contrôleur de disque NVMe.

    Capture d’écran de l’invite de sélection du type de contrôleur de disque NVMe.

  • Optez pour NVMe en sélectionnant le type de contrôleur de disque NVMe dans le portail Azure ou un modèle ARM/CLI/PowerShell. Pour obtenir des instructions pas à pas, rendez-vous ici.

  • Seules les images Gen2 sont prises en charge.

  • Choisissez l’une des régions Azure où NVMe est activé. Quand vous remplissez les cinq conditions, vous pouvez activer NVMe sur la famille de machines virtuelles prises en charge en un rien de temps. Suivez les conditions ci-dessus lors de la création et du redimensionnement d’une machine virtuelle avec NVMe pour garantir la réussite du lancement de la fonctionnalité.

Puis-je chiffrer mes disques NVMe distants ?

Il n’existe pas de méthode native dans Azure pour chiffrer ces disques. Vous êtes invité à les chiffrer dans le système d’exploitation, mais vous devrez les chiffrer à nouveau après le montage au démarrage.

Comment puis-je redimensionner une machine virtuelle SCSI vers une machine virtuelle compatible NVMe distante de taille différente ?

Le processus suivant peut être utilisé pour :

  • Redimensionner une machine virtuelle SCSI créée à l’aide d’une image non marquée vers une machine virtuelle compatible NVMe de taille différente sans recréer les configurations de machine virtuelle et sans étiqueter l’image.
  • Redimensionner une machine virtuelle SCSI sur une machine virtuelle compatible NVMe de taille différente sans recréer les configurations de machine virtuelle. La machine virtuelle source peut être :
  • Une image de système d’exploitation non marquée qui prend en charge NVMe
  • Une image de système d’exploitation étiquetée NVMe pour redimensionner la machine virtuelle :
  • Définissez la propriété discontrollertype de destination de la machine virtuelle en tant que NVMe.
  • Utilisez le script PowerShell suivant pour ce faire : SAP-on-Azure-Scripts-and-Utilities/NVMe-Preflight-Check at main · Azure/SAP-on-Azure-Scripts-and-Utilities · GitHub
`azure-nvme-VM-update.ps1 [-subscription_id] <String> [-resource_group_name] <String> [-vm_name] <String> [[-disk_controller_change_to] <String>] [-vm_size_change_to] <String> [[-start_vm_after_update] <Boolean>] [[-write_logfile] <Boolean>]`

Comment puis-je vérifier si une image donnée est étiquetée en tant que NVMe ?

Pour vérifier si une image donnée est étiquetée NVMe, utilisez la commande suivante :

az vm image show --urn URN_OF_IMAGE

Comment étiqueter une image qui prend en charge NVMe pour disque distant ?

Pour étiqueter une image prenant en charge NVMe, suivez les quatre étapes ci-dessous :

  1. Chargez le disque dur virtuel pris en charge par NVMe sur votre compte de stockage. AzCopy est un moyen rapide, mais vous pouvez également utiliser le Portail Azure pour effectuer le chargement.
  • Référence AzCopy : [https://docs.microsoft.com/azure/storage/common/storage-use-azcopy-v10]
`azcopy copy <local path to your vhd> <container in your storage account>`
  1. Créez votre galerie d’images à l’aide de Powershell, du Portail ou de l’interface CLI : [https://docs.microsoft.com/azure/virtual-machines/create-gallery]
  2. Créez la définition de l’image : [https://docs.microsoft.com/azure/virtual-machines/image-version] Veillez à inclure --feature DiskControllerTypes=SCSI,NVMe

Exemple CLI :

`az sig image-definition create --resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> --publisher <publisher> --offer <offerName> --sku <skuName> --os-type <osType> --os-state <osState> --feature DiskControllerTypes=SCSI,NVMe`
  1. Créez la version de l’image sous la galerie étiquetée NVMe avec le disque dur virtuel pris en charge par NVMe.: [https://docs.microsoft.com/azure/virtual-machines/image-version]

Exemple CLI :

`az sig image-version create --resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> --gallery-image-version <version> --target-regions <region1> <region2> --replica-count <replicaCount> --os-vhd-uri <NVMe-supported vhd uri> --os-vhd-storage-account <storageAccount>`

Comment configurer un modèle ARM pour le lancement initial de ma machine virtuelle ?

Vous pouvez utiliser l’extension de script personnalisé Azure conjointement avec les modèles Azure Resource Manager. Cela vous permet de télécharger et d’exécuter des scripts sur des machines virtuelles Azure. Cette méthode est également compatible avec Windows et Linux. Pour obtenir des instructions détaillées, reportez-vous à la documentation sur l’extension de script personnalisé Azure pour Windows et Linux. Vous trouverez des exemples pour Windows ici.

Que se passe-t-il si je souhaite utiliser une autre famille de machines virtuelles qui ne prend pas en charge le disque NVMe distant ?

Si vous sélectionnez une famille de machines virtuelles non prise en charge, vous recevrez un message d’erreur indiquant : « La taille de machine virtuelle sélectionnée ne peut pas démarrer avec DiskControllerType. Vérifiez que le type de contrôleur de disque fourni est l’un des types de contrôleurs de disque pris en charge pour la taille de machine virtuelle Y Veuillez interroger l’API SKU à l’adresse [https://docs.microsoft.com/rest/api/compute/resource-skus/list] pour déterminer les types de contrôleurs de disque pris en charge pour les références SKU de ressource de taille de machine virtuelle – Liste – API REST (Azure Compute) ». Par conséquent, veillez à sélectionner une famille de machines virtuelles qui prend en charge l’interface NVMe.

Quelles options de stockage sur disque Azure sont compatibles avec le disque NVMe distant ?

Les tailles NVMe peuvent être combinées avec des disques SSD Premium v1, SSD Premium v2 et Ultra. Pour plus d’informations sur les offres de disques Azure, consultez Disques managés Azure.

Est-ce qu’Azure prend en charge le redimensionnement instantané sur des disques avec des tailles de machine virtuelle NVMe ?

Le redimensionnement en direct de NVMe est pris en charge sur les disques SSD Premium v1, SSD Standard et HDD Standard. Vous pouvez également ajouter des disques NVMe sans redémarrer la machine virtuelle. En outre, le redimensionnement en direct est également pris en charge sur les disques SSD Premium v1, SSD Standard et HDD Standard.

Comment puis-je identifier les disques NVMe distants sur une machine virtuelle Linux ?

  1. Obtenir le package nvme-cli
`sudo apt install nvme-cli`
  1. Exécutez la commande NVMe list pour récupérer les détails du disque NVMe :
`sudo nvme list`

Capture d’écran des instructions d’identification des disques NVMe sur une machine virtuelle Linux.

Capture d’écran des instructions de sélection d’un ID d’espace de noms dans le portail Linux.

Voici comment les données s’affichent en réponse aux commandes Azure PowerShell :

Capture d’écran d’un exemple de réponse à une commande Azure PowerShell.

Comment identifier les disques NVMe sur une machine virtuelle Windows ?

Lancez PowerShell et utilisez la commande suivante : wmic diskdrive get model,scsilogicalunit

Capture d’écran d’un exemple de commande PowerShell pour lancer NVMe sur Windows.

Les disques attachés ASAP sont présentés dans l’invité avec la chaîne de modèle « Virtual_Disk NVME Premium » et la valeur de l’ID LUN visible du portail de valeurs sera incrémentée de 1 pour l’unité logique SCSI. 
Voici un instantané de la façon dont les disques NVMe sont vus dans une machine virtuelle Windows compatible NVMe :

Diagramme d’un exemple de commande PowerShell pour identifier le disque NVMe sur une machine virtuelle Windows.

L’instantané suivant montre la sortie d’invité pour des disques de données attachés à LUN 0 et LUN 4 (CRP). L’ID LUN équivaut à l’ID d’espace de noms.

Diagramme d’un exemple de la façon dont les disques NVMe sont vus dans une machine virtuelle Windows avec NVMe.

Puis-je convertir une machine virtuelle SCSI vers une machine virtuelle compatible NVMe tout en conservant la même taille de processeur virtuel de machine virtuelle avec une image de système d’exploitation marquée NVMe ?

Ce scénario est uniquement pris en charge par les systèmes d’exploitation Linux et n’est pas pris en charge dans les systèmes d’exploitation Windows.

Les disques partagés dans les disques distants sont-ils pris en charge avec les machines virtuelles NVMe ?

La fonctionnalité de disque partagé est prise en charge pour les disques SSD Premium, SSD Premium v2 et Ultra.

Puis-je utiliser Azure PowerShell ou l’interface CLI pour créer une machine virtuelle avec un disque de système d’exploitation à partir d’un objet BLOB existant avec NVMe activé ?

Ce n’est pas possible actuellement. Toutefois, la solution de contournement suivante basée sur l’API REST peut être utilisée à la place :

# This is the workaround using REST-API
# to create a VM with an OS disk from an existing BLOB with NVMe enabled 

$subscriptionID = '<Your Subscription ID>'
$resourceGroupName = '<Your Resource Group Name>'
$storageAccountName = '<Your Account Name>'
$storageAccountContainer = '<Your Account Container>'
$blobName = 'blob-nvme_OsDisk_1.vhd'

$diskName = 'test'
$diskSkuName = 'Standard_LRS'
$diskSizeGB = 30
$osType = 'Linux' 
$hyperVGeneration = 'V2'
$location = 'eastus'

$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
$token = ($profileClient.AcquireAccessToken($azContext.Subscription.TenantId)).AccessToken

$body = @{
    location = $location
    sku = @{ name = $diskSkuName }
    properties = @{
        osType                  = $osType
        hyperVGeneration        = $hyperVGeneration
        supportedCapabilities   = @{diskControllerTypes = 'SCSI, NVMe'}
        diskSizeGB              = $diskSizeGB
        creationData = @{
            storageAccountId	= "/subscriptions/$subscriptionID/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName"

            sourceUri           = "https://$storageAccountName.blob.core.windows.net/$storageAccountContainer/$blobName"
            createOption		= 'Import'
        }
    }
}

$apiVersion='2023-10-02'
$restUri = "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/disks/$diskName`?api-version=$apiVersion"
$authHeader = @{
    'Content-Type'='application/json'
    'Authorization'='Bearer ' + $token
}

Invoke-RestMethod `
    -Uri $restUri `
    -Method 'Put' `
    -Headers $authHeader `
    -Body ($body | ConvertTo-Json)