Bewerken

Delen via


Veelgestelde vragen over externe NVMe-schijven

In dit artikel vindt u enkele veelgestelde vragen over ondersteuning voor externe NVM Express-schijven (NVMe) op virtuele machines (VM's) die zijn gemaakt in Azure.

Wat zijn de vereisten voor het inschakelen van de externe NVMe-interface op mijn VM?

U kunt DiskControllerTypes tijdens de VM-configuratie uw voorkeurscontrollertype selecteren als NVMe of Small Computer System Interface (SCSI). Als u geen waarde opgeeft DiskControllerTypes , kiest het platform automatisch de standaardcontroller op basis van de vm-grootteconfiguratie. Als de VM-grootte is geconfigureerd voor SCSI als standaard en NVMe ondersteunt, gebruikt de VIRTUELE machine SCSI, tenzij u de DiskControllerTypes waarde bijwerkt naar NVMe.

Als u de NVMe-interface op uw VIRTUELE machine wilt inschakelen, moet u aan de volgende vereisten voldoen:

  • Kies een VM-familie die ONDERSTEUNING biedt voor NVMe. Alleen Ebsv5- en Ebdsv5-VM-grootten zijn uitgerust met NVMe in de Virtuele Machines van de Intel v5-generatie.

  • Selecteer de installatiekopieën van het besturingssysteem die zijn gelabeld met NVMe-ondersteuning. Nadat u een ondersteunde VM-familie en installatiekopiewaarde voor het besturingssysteem hebt geselecteerd, wordt u gevraagd het type NVMe-schijfcontroller te selecteren.

    Schermopname van een prompt om een schijfcontrollertype te selecteren.

  • Meld u aan voor NVMe door het type NVMe-schijfcontroller te selecteren in Azure Portal of in de Azure Resource Manager-, Azure CLI- of Azure PowerShell-sjabloon. Raadpleeg de algemene veelgestelde vragen over NVMe voor stapsgewijze instructies.

  • Zorg ervoor dat u een vm van de tweede generatie gebruikt, omdat NVMe alleen installatiekopieën van de tweede generatie ondersteunt.

  • Kies een van de Azure-regio's waarvoor NVMe is ingeschakeld.

Kan ik mijn externe NVMe-schijven versleutelen?

Er is geen systeemeigen manier in Azure om deze schijven te versleutelen. U kunt ze in het besturingssysteem versleutelen, maar u moet ze opnieuw versleutelen na het koppelen bij het opstarten.

Hoe kan ik het formaat van een vm op basis van SCSI wijzigen in een externe VM met NVMe-functionaliteit van een andere grootte?

U kunt het volgende proces gebruiken om een van de volgende handelingen uit te voeren:

  • Wijzig het formaat van een vm op basis van SCSI die is gemaakt met behulp van een niet-gemarkeerde installatiekopieën naar een VM met NVMe van een andere grootte zonder de VM-configuraties opnieuw te maken en zonder de installatiekopieën te taggen.
  • Wijzig de grootte van een vm op basis van SCSI naar een VM met NVMe-functionaliteit van een andere grootte zonder de VM-configuraties opnieuw te maken.

De bron-VM kan het volgende zijn:

  • Een installatiekopieën van het besturingssysteem zonder vlag die ONDERSTEUNING bieden voor NVMe.
  • Een met NVMe getagde installatiekopieën van het besturingssysteem.

Als u het formaat van de VIRTUELE machine wilt wijzigen, gebruikt u de volgende opdracht om een Azure PowerShell-script uit te voeren waarmee de doelwaarde discontrollertype van de VIRTUELE machine als NVMe wordt ingesteld:

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

Hoe kan ik controleren of een installatiekopieën zijn gelabeld als NVMe?

Gebruik de volgende opdracht om te controleren of een afbeelding is gelabeld als NVMe:

az vm image show --urn URN_OF_IMAGE

Hoe kan ik een installatiekopieën taggen die NVMe ondersteunt voor externe schijven?

Voer de volgende stappen uit om een installatiekopieën te taggen die NVMe ondersteunen:

  1. Upload een met NVMe ondersteunde virtuele harde schijf (VHD) naar uw opslagaccount. AzCopy is een snelle manier, maar u kunt ook de portal gebruiken om te uploaden.

    azcopy copy <local path to your VHD> <container in your storage account>
    
  2. Maak een galerie met installatiekopieën met behulp van Azure PowerShell, de portal of de Azure CLI.

  3. Maak een definitie van een installatiekopieën. Zorg ervoor dat u deze opneemt --feature DiskControllerTypes=SCSI,NVMe.

    Hier volgt een Azure CLI-voorbeeld:

    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. Maak de installatiekopieënversie onder de galerie met NVMe-tags met de door NVMe ondersteunde VHD.

    Hier volgt een Azure CLI-voorbeeld:

    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>
    

Hoe kan ik een ARM-sjabloon configureren voor het maken van vm's?

U kunt de aangepaste Scriptextensie van Azure gebruiken in combinatie met Azure Resource Manager-sjablonen (ARM-sjablonen). Met deze oplossing kunt u scripts downloaden en uitvoeren op virtuele Azure-machines en compatibel is met Zowel Windows als Linux. Raadpleeg de documentatie voor de aangepaste Scriptextensie van Azure voor Windows en Linux voor gedetailleerde richtlijnen.

Wat gebeurt er als ik een andere VM-familie wil gebruiken die geen externe NVMe-schijven ondersteunt?

Als u een niet-ondersteunde VM-familie selecteert, wordt dit foutbericht weergegeven: 'De geselecteerde VM-grootte kan niet worden opgestart met DiskControllerTypes. Controleer of het opgegeven type schijfcontroller een van de ondersteunde schijfcontrollertypen is voor de VM-grootte.

Zorg ervoor dat u een VM-serie selecteert die ondersteuning biedt voor de NVMe-interface. Raadpleeg de lijst met resource-SKU's in de REST API om te bepalen welke schijfcontrollertypen worden ondersteund voor de VM-grootte.

Welke azure-schijfopslagopties zijn compatibel met externe NVMe-schijven?

NVMe-grootten kunnen worden gecombineerd met Azure Premium SSD v1, Premium SSD v2 en Ultra Disk Storage. Zie Azure Managed Disk Types voor meer informatie over Azure-schijfaanbiedingen.

Wordt het formaat van ondersteuning voor Azure live gewijzigd op schijven met NVMe-VM-grootten?

Live formaat van NVMe wordt ondersteund op Azure Premium SSD v1-schijven, Standard SSD-schijven en Standard HDD-schijven. U kunt ook NVMe-schijven toevoegen zonder de virtuele machine opnieuw op te starten.

Hoe kan ik externe NVMe-schijven identificeren op een Virtuele Linux-machine?

  1. Haal het nvme-cli pakket op:

    sudo apt install nvme-cli
    
  2. Voer de NVMe-opdracht list uit om details van de NVMe-schijf op te halen:

    sudo nvme list
    

    Schermopname van instructies voor het identificeren van NVMe-schijven op een virtuele Linux-machine.

    Schermopname van instructies voor het kiezen van een naamruimte-id in de Linux-portal.

    Zo worden de gegevens weergegeven als reactie op Azure PowerShell-opdrachten:

    Schermopname van een voorbeeldantwoord op een Azure PowerShell-opdracht.

Hoe kan ik NVMe-schijven identificeren op een Windows-VM?

Open Azure PowerShell en gebruik de volgende opdracht:

wmic diskdrive get model,scsilogicalunit

Schermopname van een PowerShell-voorbeeldopdracht voor het gebruik van NVMe in Windows.

De gekoppelde ASAP-schijven worden weergegeven in de gast met de modeltekenreeks Virtual_Disk NVME Premium. De logische eenheid SCSI heeft de waarde voor de door de portal zichtbare LUN-id verhoogd met 1.

Hier volgt een momentopname van hoe NVMe-schijven worden weergegeven in een WINDOWS-VM met NVMe:

Schermopname van een voorbeeld van een Azure PowerShell-opdracht om de NVMe-schijf op een Windows-VM te identificeren.

De volgende momentopname toont gastuitvoer voor gegevensschijven die zijn gekoppeld aan LUN 0 en LUN 4 (CRP). De LUN-id is gelijk aan de naamruimte-id.

Schermopname van een voorbeeld van hoe NVMe-schijven worden weergegeven in een windows-VM met NVMe-functionaliteit.

Kan ik een op SCSI gebaseerde VM converteren naar NVMe-ingeschakeld terwijl ik dezelfde VM vCPU-grootte behoudt met een besturingssysteeminstallatiekopieën met NVMe-tags?

Dit scenario wordt alleen ondersteund op Linux-besturingssystemen en wordt niet ondersteund op Windows-besturingssystemen.

Worden gedeelde schijven in externe schijven ondersteund met VM's met NVMe-functionaliteit?

De functie voor gedeelde schijven wordt ondersteund voor Premium SSD, Premium SSD v2 en Ultra Disk Storage-schijven. Gedeelde schijven met NVME worden niet ondersteund met het besturingssysteem Windows Server 2019.

Kan ik Azure PowerShell of de Azure CLI gebruiken om een virtuele machine te maken met een besturingssysteemschijf op basis van een bestaande blob waarvoor NVMe is ingeschakeld?

Het is momenteel niet mogelijk. In plaats daarvan kunt u de volgende REST API-tijdelijke oplossing gebruiken om een virtuele machine te maken met een besturingssysteemschijf op basis van een bestaande blob waarvoor NVMe is ingeschakeld:

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