В этой статье рассматриваются некоторые распространенные вопросы о поддержке удаленных дисков NVM Express (NVMe) на виртуальных машинах, созданных в Azure.
Каковы предварительные требования для включения удаленного интерфейса NVMe на виртуальной машине?
Вы можете использовать DiskControllerType
во время настройки виртуальной машины, чтобы выбрать предпочтительный тип контроллера в качестве NVMe или небольшого системного интерфейса компьютера (SCSI). Если значение не указано DiskControllerType
, платформа автоматически выбирает контроллер по умолчанию на основе конфигурации размера виртуальной машины. Если размер виртуальной машины настроен для SCSI по умолчанию и поддерживает NVMe, виртуальная машина использует SCSI, если значение не обновляется DiskControllerType
до NVMe.
Чтобы включить интерфейс NVMe на виртуальной машине, необходимо выполнить следующие предварительные требования:
Выберите семейство виртуальных машин, поддерживающее NVMe. Только размеры виртуальных машин Ebsv5 и Ebdsv5 оснащены NVMe на виртуальных машинах поколения Intel v5.
Выберите образ операционной системы, помеченный поддержкой NVMe. После выбора поддерживаемого значения семейства виртуальных машин и образа ОС вам будет предложено выбрать тип контроллера диска NVMe.
Войдите в NVMe, выбрав тип контроллера диска NVMe в портал Azure или в шаблоне Azure Resource Manager, Azure CLI или Azure PowerShell. Пошаговые инструкции см. в общих часто задаваемых вопросы о NVMe.
Убедитесь, что вы используете виртуальную машину поколения 2, так как NVMe поддерживает только образы поколения 2.
Выберите один из регионов Azure, где включен NVMe.
Можно ли зашифровать удаленные диски NVMe?
В Azure нет собственного способа шифрования этих дисков. Их можно зашифровать в ОС, но их необходимо повторно зашифровать после подключения при запуске.
Как изменить размер виртуальной машины на основе SCSI на удаленную виртуальную машину с поддержкой NVMe другого размера?
Для этого можно использовать следующий процесс:
- Измените размер виртуальной машины на основе SCSI, созданной с помощью отключаемого образа, на виртуальную машину с поддержкой NVMe другого размера без повторного создания конфигураций виртуальных машин и без добавления тегов к изображению.
- Измените размер виртуальной машины на основе SCSI на виртуальную машину с поддержкой NVMe другого размера без повторного создания конфигураций виртуальных машин.
Исходная виртуальная машина может быть:
- Отключаемый образ ОС, поддерживающий NVMe.
- Образ ОС с тегом NVMe.
Чтобы изменить размер виртуальной машины, выполните следующую команду, чтобы запустить скрипт Azure PowerShell, который задает целевое discontrollertype
значение виртуальной машины как 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>]
Как проверить, помечен ли изображение как NVMe?
Чтобы проверить, помечен ли образ как NVMe, используйте следующую команду:
az vm image show --urn URN_OF_IMAGE
Разделы справки пометить образ, поддерживающий NVMe для удаленных дисков?
Чтобы пометить изображение, поддерживающее NVMe, выполните следующие действия.
Отправьте виртуальный жесткий диск с поддержкой NVMe (VHD) в учетную запись хранения. AzCopy — это быстрый способ, но вы также можете использовать портал для отправки.
azcopy copy <local path to your VHD> <container in your storage account>
Создайте коллекцию образов с помощью Azure PowerShell, портала или Azure CLI.
Создайте определение образа Обязательно включите
--feature DiskControllerTypes=SCSI,NVMe
.Ниже приведен пример 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
Создайте версию образа в коллекции с тегами NVMe с виртуальным жестким диском, поддерживаемым NVMe.
Ниже приведен пример 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>
Разделы справки настроить шаблон ARM для создания виртуальной машины?
Расширение пользовательского скрипта Azure можно использовать вместе с шаблонами Azure Resource Manager (шаблонами ARM). Это решение позволяет скачать и запустить скрипты на виртуальных машинах Azure и совместимо как с Windows, так и с Linux. Подробные инструкции см. в документации по расширению пользовательских скриптов Azure для Windows и Linux.
Что произойдет, если я хочу использовать другое семейство виртуальных машин, которое не поддерживает удаленные диски NVMe?
Если выбрать неподдерживаемое семейство виртуальных машин, вы получите это сообщение об ошибке: "Выбранный размер виртуальной машины не может загружаться с DiskControllerType. Убедитесь, что указанный тип контроллера диска является одним из поддерживаемых типов контроллера диска для размера виртуальной машины".
Обязательно выберите семейство виртуальных машин, поддерживающее интерфейс NVMe. Чтобы определить, какие типы контроллеров дисков поддерживаются для размера виртуальной машины, см . список номеров SKU ресурсов в REST API.
Какие параметры хранилища дисков Azure совместимы с удаленными дисками NVMe?
Размеры NVMe можно сочетать с ssd Azure уровня "Премиум" версии 1, SSD уровня "Премиум" версии 2 и хранилищем дисков ценовой категории "Ультра". Дополнительные сведения о предложениях дисков Azure см. в разделе "Типы управляемых дисков Azure".
Поддержка Azure ли динамическое изменение размера на дисках с размерами виртуальных машин NVMe?
Динамическое изменение размера NVMe поддерживается на дисках SSD уровня "Премиум" версии 1, дисках SSD уровня "Стандартный" и дисках HDD уровня "Стандартный". Вы также можете добавлять диски NVMe без перезапуска виртуальной машины.
Как определить удаленные диски NVMe на виртуальной машине Linux?
nvme-cli
Получите пакет:sudo apt install nvme-cli
Выполните команду NVMe
list
, чтобы получить сведения о диске NVMe:sudo nvme list
Вот как данные отображаются в ответ на команды Azure PowerShell:
Как определить диски NVMe на виртуальной машине Windows?
Откройте Azure PowerShell и выполните следующую команду:
wmic diskdrive get model,scsilogicalunit
Подключенные диски ASAP представлены в гостевой строке Virtual_Disk NVME Premium
модели. Логическая единица SCSI имеет значение для идентификатора LUN, видимого на портале, увеличивается на 1.
Ниже приведен моментальный снимок того, как диски NVMe отображаются на виртуальной машине Windows с поддержкой NVMe:
Следующий моментальный снимок показывает гостевые выходные данные для дисков данных, подключенных в LUN 0 и LUN 4 (CRP). Идентификатор LUN эквивалентен идентификатору пространства имен.
Можно ли преобразовать виртуальную машину на основе SCSI в NVMe с поддержкой NVMe при сохранении того же размера виртуальной машины vCPU с использованием образа ОС с тегом NVMe?
Этот сценарий поддерживается только в операционных системах Linux и не поддерживается в операционных системах Windows.
Поддерживаются ли общие диски на удаленных дисках с виртуальными машинами с поддержкой NVMe?
Функция общего диска поддерживается для дисков SSD уровня "Премиум", SSD уровня "Премиум" версии 2 и "Ультра".
Можно ли использовать Azure PowerShell или Azure CLI для создания виртуальной машины с диском ОС из существующего большого двоичного объекта с включенным NVMe?
В настоящее время это невозможно. Вместо этого можно использовать следующее решение REST API для создания виртуальной машины с диском ОС из существующего большого двоичного объекта с включенным NVMe:
$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)