NVMe - Domande frequenti su dischi NVMe remoti

Questo articolo illustra alcune domande comuni sul supporto per dischi NVMe remoti nelle macchine virtuali create in Azure.

Quali sono i prerequisiti per abilitare l'interfaccia NVMe remota nella macchina virtuale?

È stata aggiunta una funzionalità alla configurazione della macchina virtuale, denominata DiskControllerType, che consente ai clienti di selezionare il tipo di controller preferito come NVMe o SCSI. Se il cliente non specifica un valore DiskControllerType, la piattaforma sceglierà automaticamente il controller predefinito in base alla configurazione delle dimensioni della macchina virtuale. Se la dimensione della macchina virtuale è configurata per SCSI come predefinita e supporta NVMe, verrà usato SCSI a meno che non venga aggiornato a NVMe DiskControllerType. Per abilitare l'interfaccia NVMe, è necessario soddisfare i prerequisiti seguenti:

  • Scegliere una famiglia di macchine virtuali che supporti NVMe.
  • Selezionare l'immagine del sistema operativo contrassegnata con il supporto NVMe.
  • Acconsentire esplicitamente a NVMe selezionando il tipo di controller del disco NVMe nel modello portale di Azure o ARM/CLI/Power Shell. Per istruzioni dettagliate, vedere qui.
  • Sono supportate solo le immagini gen2. Soddisfando le quattro condizioni precedenti, sarà possibile abilitare NVMe nella famiglia di macchine virtuali supportata senza tempo. Seguire le condizioni precedenti per creare o ridimensionare correttamente una macchina virtuale con NVMe senza complicazioni.

Ricerca per categorie abilitare un disco NVMe remoto in una famiglia di macchine virtuali?

Per abilitare nvme per il disco remoto, verificare che siano soddisfatte le cinque condizioni seguenti:

  • Scegliere una famiglia di macchine virtuali che supporti NVMe. È importante notare che solo le dimensioni delle macchine virtuali Ebsv5 e Ebdsv5 sono dotate di NVMe nelle macchine virtuali di generazione Intel v5. Assicurarsi di selezionare una delle serie, Ebsv5 o Ebdsv5 VM.

  • Selezionare l'immagine del sistema operativo contrassegnata con il supporto NVMe. Dopo aver selezionato la famiglia di macchine virtuali e l'immagine del sistema operativo supportati, viene richiesto di selezionare il tipo di controller del disco NVMe.

    Screenshot della richiesta di selezionare il tipo di controller del disco NVMe.

  • Acconsentire esplicitamente a NVMe selezionando il tipo di controller del disco NVMe nel modello portale di Azure o ARM/CLI/PowerShell. Per istruzioni dettagliate, vedere qui.

  • Sono supportate solo le immagini gen2.

  • Scegliere una delle aree di Azure in cui è abilitato NVMe. Soddisfando le cinque condizioni, è possibile abilitare NVMe nella famiglia di macchine virtuali supportata senza tempo. Seguire le condizioni precedenti durante la creazione e il ridimensionamento di una macchina virtuale con NVMe per garantire il corretto avvio della funzionalità.

È possibile crittografare i dischi NVMe remoti?

Non esiste un modo nativo all'interno di Azure per crittografare questi dischi. Si è invitati a crittografarli all'interno del sistema operativo, ma sarà necessario crittografarli nuovamente dopo il montaggio all'avvio.

Come è possibile ridimensionare una macchina virtuale SCSI in una macchina virtuale abilitata per NVMe remota con dimensioni diverse?

Il processo seguente può essere usato per:

  • Ridimensionare una macchina virtuale SCSI creata usando un'immagine senza tag in una macchina virtuale abilitata per NVMe con dimensioni diverse senza ricreare le configurazioni della macchina virtuale e senza contrassegnare l'immagine.
  • Ridimensionare una macchina virtuale SCSI in una macchina virtuale abilitata per NVMe con dimensioni diverse senza creare nuovamente le configurazioni della macchina virtuale. La macchina virtuale di origine può essere:
  • Immagine del sistema operativo senza tag che supporta NVMe
  • Immagine del sistema operativo con tag NVMe Per ridimensionare la macchina virtuale:
  • Impostare il discontrollertype di destinazione della macchina virtuale come NVMe.
  • Usare lo script di PowerShell seguente per eseguire questa operazione: 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>]`

Come è possibile verificare se una determinata immagine è contrassegnata come NVMe?

Per verificare se una determinata immagine è contrassegnata come NVMe, usare il comando seguente:

az vm image show --urn URN_OF_IMAGE

Ricerca per categorie contrassegna un'immagine che supporta NVMe per il disco remoto?

Per contrassegnare un'immagine che supporta NVMe, seguire i quattro passaggi seguenti:

  1. Caricare il disco rigido virtuale supportato da NVMe nell'account di archiviazione. AzCopy è un modo rapido, ma è anche possibile usare il portale per caricare.
  • Informazioni di riferimento su 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. Creare la raccolta immagini usando powershell/portal/cli: [https://docs.microsoft.com/azure/virtual-machines/create-gallery]
  2. Creare la definizione dell'immagine: [https://docs.microsoft.com/azure/virtual-machines/image-version] Assicurarsi di includere --feature DiskControllerTypes=SCSI,NVMe

Esempio dell'interfaccia della riga di comando:

`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. Creare la versione dell'immagine nella raccolta con tag NVMe con il disco rigido virtuale supportato da NVMe: [https://docs.microsoft.com/azure/virtual-machines/image-version]

Esempio dell'interfaccia della riga di comando:

`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>`

Ricerca per categorie configurare un modello di Resource Manager per l'avvio iniziale della macchina virtuale?

È possibile usare l'estensione script personalizzato di Azure insieme ai modelli di Azure Resource Manager. In questo modo è possibile scaricare ed eseguire script in macchine virtuali di Azure ed è compatibile con Windows e Linux. Per indicazioni dettagliate, vedere la documentazione dell'estensione per script personalizzati di Azure per Windows e Linux. Esempi per Windows sono disponibili qui.

Cosa accade se si vuole usare un'altra famiglia di macchine virtuali che non supporta il disco NVMe remoto?

Se si seleziona una famiglia di macchine virtuali non supportata, verrà visualizzato un messaggio di errore che indica: "Le dimensioni della macchina virtuale selezionate non possono essere avviati con DiskControllerType. Verificare che il tipo di controller del disco fornito sia uno dei tipi di controller disco supportati per le dimensioni della macchina virtuale Y, eseguire una query sull'API SKU perhttps://docs.microsoft.com/rest/api/compute/resource-skus/list determinare i tipi di controller del disco supportati per gli SKU delle risorse delle dimensioni della macchina virtuale - Elenco - API REST (Calcolo di Azure)". Assicurarsi quindi di selezionare una famiglia di macchine virtuali che supporti l'interfaccia NVMe.

Quali opzioni di archiviazione su disco di Azure sono compatibili con il disco NVMe remoto?

Le dimensioni NVMe possono essere combinate con dischi SSD Premium v1, SSD Premium v2 e Ultra. Per altre informazioni sulle offerte di dischi di Azure, vedere Dischi gestiti di Azure.

Supporto tecnico di Azure ridimensionamento in tempo reale su dischi con dimensioni di VM NVMe?

Il ridimensionamento in tempo reale di NVMe è supportato in dischi SSD Premium v1, ssd Standard e dischi HDD Standard. È anche possibile aggiungere dischi NVMe senza riavviare la macchina virtuale. Inoltre, il ridimensionamento in tempo reale è supportato anche nei dischi SSD Premium v1, SSD Standard e HDD Standard.

Come è possibile identificare i dischi NVMe remoti in una macchina virtuale Linux?

  1. Ottenere il pacchetto nvme-cli
`sudo apt install nvme-cli`
  1. Eseguire il comando NVMe list per recuperare i dettagli del disco NVMe:
`sudo nvme list`

Screenshot delle istruzioni per identificare i dischi NVMe nella macchina virtuale Linux.

Screenshot delle istruzioni per scegliere l'ID dello spazio dei nomi nel portale Linux.

Ecco come vengono visualizzati i dati in risposta ai comandi di Azure PowerShell:

Screenshot di un esempio di risposta al comando di Azure PowerShell.

Come è possibile identificare i dischi NVMe nella macchina virtuale Windows?

Avviare PowerShell e usare il comando seguente: wmic diskdrive get model,scsilogicalunit

Screenshot di un esempio di esempio di comando di PowerShell per avviare NVMe in Windows.

I dischi collegati ASAP vengono presentati nel guest con la stringa di modello "Virtual_Disk NVME Premium" e l'unità logica SCSI avrà un valore visibile LUN ID incrementato di 1. 
Ecco uno snapshot del modo in cui i dischi NVMe vengono visualizzati nella macchina virtuale Windows abilitata per NVMe:

Diagramma che mostra un esempio di comando di PowerShell per identificare il disco NVMe nella macchina virtuale Windows.

Lo snapshot seguente mostra nell'output guest per i dischi dati collegati a LUN 0 e LUN 4 (CRP). L'ID LUN è equivalente all'ID spazio dei nomi.

Diagramma che mostra l'esempio di come vengono visualizzati i dischi NVMe nella macchina virtuale Windows abilitata per NVMe.

È possibile convertire una macchina virtuale SCSI abilitata per NVMe mantenendo le stesse dimensioni vCPU della macchina virtuale con un'immagine del sistema operativo con tag NVMe?

Questo scenario è supportato solo dai sistemi operativi Linux e non è supportato dai sistemi operativi Windows.

I dischi condivisi nei dischi remoti sono supportati con macchine virtuali NVMe?

La funzionalità disco condiviso è supportata per dischi SSD Premium, SSD Premium v2 e Ultra.

È possibile usare Azure PowerShell/interfaccia della riga di comando per creare una macchina virtuale con un disco del sistema operativo da un BLOB esistente con NVMe abilitato?

Attualmente non è possibile. Tuttavia, è possibile usare la soluzione alternativa seguente in base all'API REST:

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