Modifier

Partager via


FAQ pour les disques NVMe distants

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

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

Vous pouvez utiliser DiskControllerType pendant la configuration de la machine virtuelle pour sélectionner votre type de contrôleur préféré, tel que NVMe ou Small Computer System Interface (SCSI). Si vous ne spécifiez 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, la machine virtuelle utilise SCSI, sauf si vous mettez à jour la valeur DiskControllerType sur NVMe.

Pour activer l’interface NVMe sur votre machine virtuelle, vous devez remplir les conditions préalables suivantes :

  • Choisissez une famille de machines virtuelles qui prend en charge NVMe. Seules les tailles de machines virtuelles Ebsv5 et Ebdsv5 sont équipées de NVMe dans les machines virtuelles de génération Intel v5.

  • Sélectionnez l’image de système d’exploitation étiquetée comme prenant en charge NVMe. Après avoir sélectionné une famille de machines virtuelles et une image de système d’exploitation prises en charge, vous êtes invité à sélectionner le type de contrôleur de disque NVMe.

    Capture d’écran d’un prompt de sélection du type de contrôleur de disque.

  • Optez pour NVMe en sélectionnant le type de contrôleur de disque NVMe dans le portail Azure ou dans Azure Resource Manager, Azure CLI ou le modèle Azure PowerShell. Pour obtenir des instructions pas à pas, veuillez consulter laFAQ générale sur NVMe.

  • Vérifiez que vous utilisez une machine virtuelle de Génération 2, car NVMe prend uniquement en charge les images de Génération 2.

  • Choisissez l’une des régions Azure où NVMe est activé.

Puis-je chiffrer mes disques NVMe distants ?

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

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

Vous pouvez utiliser le processus suivant pour :

  • Redimensionner une machine virtuelle basée sur SCSI créée à l’aide d’une image non marquée vers une machine virtuelle compatible NVMe d’une taille différente sans recréer les configurations de la machine virtuelle et sans marquer 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, utilisez la commande suivante pour exécuter un script Azure PowerShell qui définit la valeur de destination discontrollertype de la machine virtuelle comme NVMe :

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 est étiquetée en tant que NVMe ?

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

az vm image show --urn URN_OF_IMAGE

Comment étiqueter une image qui prend en charge NVMe pour les disques distants ?

Pour étiqueter une image prenant en charge NVMe, procédez comme suit :

  1. Chargez un disque dur virtuel (VHD) pris en charge par NVMe sur votre compte de stockage. AzCopy est un moyen rapide, mais vous pouvez également utiliser le portail pour effectuer le chargement.

    azcopy copy <local path to your VHD> <container in your storage account>
    
  2. Créez une galerie d’images à l’aide d’Azure PowerShell, du portail ou d’Azure CLI.

  3. Créez une définition d’image. Prenez soin d’inclure --feature DiskControllerTypes=SCSI,NVMe.

    Voici un exemple d’Azure 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
    
  4. Créez la version de l’image sous la galerie étiquetée NVMe avec le disque dur virtuel pris en charge par NVMe.

    Voici un exemple d’Azure 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 la création de machines virtuelles ?

Vous pouvez utiliser l’extension de script personnalisé Azure conjointement avec les modèles Azure Resource Manager (modèles ARM). Cette solution 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.

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

Si vous sélectionnez une famille de machines virtuelles non prise en charge, vous obtenez ce message d’erreur : « 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 la machine virtuelle. »

Veillez à sélectionner une famille de machines virtuelles qui prend en charge l’interface NVMe. Pour déterminer les types de contrôleurs de disque pris en charge pour la taille de la machine virtuelle, veuillez consulter la liste des références SKU de ressources dans l’API REST.

Quelles options de stockage sur disque Azure sont compatibles avec les disques NVMe distants ?

Les tailles NVMe peuvent être combinées avec des disques Azure SSD Premium v1, SSD Premium v2 et des disques de stockage Ultra. Pour plus d’informations sur les offres de disques Azure, veuillez consulter les types de 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 des NVMe est pris en charge sur les disques Azure SSD Premium v1, les disques SSD Standard et les disques HDD Standard. Vous pouvez également ajouter des disques NVMe sans redémarrer la machine virtuelle.

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

  1. Obtenez le package nvme-cli :

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

    sudo nvme list
    

    Capture d’écran des instructions pour identifier les 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 apparaissent 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 ?

Ouvrez Azure PowerShell et utilisez la commande suivante :

wmic diskdrive get model,scsilogicalunit

Capture d’écran d’un exemple de commande PowerShell pour utiliser 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. L’unité logique SCSI a la valeur de l’ID du numéro d’unité logique visible par le portail incrémentée de 1.

Voici un instantané de l’apparence des disques NVMe dans une machine virtuelle Windows compatible NVMe :

Capture d’écran montrant un exemple de commande Azure PowerShell pour identifier le disque NVMe sur une machine virtuelle Windows.

L’instantané suivant montre la sortie d’invité pour les disques de données attachés au numéro d’unité logique 0 et au numéro d’unité logique 4 (CRP). L’ID du numéro d’unité logique équivaut à l’ID d’espace de noms.

Capture d’écran montrant un exemple de l’apparence des disques NVMe dans une machine virtuelle Windows compatible NVMe.

Puis-je convertir une machine virtuelle basée sur SCSI en 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 sur les systèmes d’exploitation Linux et n’est pas pris en charge sur les systèmes d’exploitation Windows.

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

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

Puis-je utiliser Azure PowerShell ou l’Azure 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. Vous pouvez utiliser la solution de contournement suivante de l’API REST pour créer une machine virtuelle avec un disque de système d’exploitation à partir d’un objet blob existant avec NVMe activé :

$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)