Преобразование виртуальных машин Linux и Windows из SCSI в NVMe

Azure виртуальные машины поддерживают два типа интерфейсов хранилища: небольшой системный интерфейс (SCSI) и NVM Express (NVMe). Интерфейс SCSI — это устаревший стандарт, обеспечивающий физическое подключение и передачу данных между компьютерами и периферийными устройствами. NVMe аналогичен SCSI, что обеспечивает подключение и передачу данных, но NVMe — это более быстрый и эффективный интерфейс для передачи данных между серверами и системами хранения.

В этой статье вы узнаете, как преобразовать Azure виртуальные машины под управлением Linux или Windows с контроллера диска SCSI в NVMe с помощью Azure Boost и скрипта преобразования NVMe Azure.

Azure продолжает поддерживать интерфейс SCSI в версиях предложений виртуальных машин, предоставляющих хранилище SCSI. Однако в дальнейшем не все новые серии виртуальных машин будут поддерживать хранилище SCSI.

Что изменилось для виртуальной машины?

Изменение интерфейса узла с SCSI на NVMe не изменяет удаленное хранилище (диск ОС или диски данных), но изменяет способ использования дисков операционной системы.

Предупреждение

Нумерирование устройств NVMe (/dev/nvme0n1, /dev/nvme0n2) не является стабильным во время перезагрузки. Всегда используйте:

  • /dev/disk/azure/* символьные ссылки
  • UUID дисков в /etc/fstab
Диск Виртуальная машина с поддержкой SCSI Виртуальная машина NVMe с временным диском SCSI (например, Ebds_v5) Виртуальная машина NVMe с временным диском NVMe
Диск операционной системы /dev/sda /dev/nvme0n1 /dev/nvme0n1
Временный диск /dev/sdb /dev/sda /dev/nvme1n1
Первый диск данных /dev/sdc /dev/nvme0n2 /dev/nvme0n2

Подсказка

Некоторые типы виртуальных машин имеют несколько временных дисков (например, E64ds_v6).

Преобразование Azure виртуальной машины из SCSI в NVMe с помощью Azure Boost поможет вам воспользоваться всеми преимуществами этих улучшений производительности и поддерживать конкурентное преимущество в облачной вычислительной среде.

Перенос виртуальной машины Linux из SCSI в NVMe

Чтобы выполнить миграцию из SCSI в NVMe, необходимо выполнить следующие высокоуровневые действия.

  1. Проверьте, поддерживает ли серия виртуальных машин NVMe.
  2. Проверьте готовность вашей операционной системы к работе с NVMe.
  3. Преобразуйте виртуальную машину в NVMe.
  4. Проверьте операционную систему.

1. Проверьте, поддерживает ли серия виртуальных машин NVMe

Таблица доступности Azure Boost перечисляет поддерживаемые виртуальные машины для дисков, подключенных через NVMe.

2. Проверьте готовность операционной системы к работе с NVMe

Операционная система должна поддерживать устройства NVMe. Например, необходимо подготовить драйверы устройств и initrdвременную файловую систему, используемую во время запуска. Кроме того, необходимо проверить точки подключения файловых систем, так как они проверяют, используется ли имя устройства SCSI (/dev/sdX).

Скрипт миграции может автоматически выполнять эти проверки готовности при использовании -FixOperatingSystemSettings.

2.1 Проверьте тип контроллера виртуальной машины

Проверка типа контроллера с помощью PowerShell
PS C:\Users\user1> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
Проверьте тип контроллера с помощью Azure CLI
$ az vm show --name [your-vm-name] --resource-group [your-resource-group-name]
{
"additionalCapabilities": {
...
 "storageProfile": {
 ...
   "diskControllerType": "SCSI",
 ...
Проверьте тип контроллера с помощью портала Azure

Снимок экрана свойств виртуальной машины на портале Azure, включая тип контроллера.

2.2 Подготовка к миграции

Скрипт миграции может автоматически заботиться о предварительных требованиях при использовании -FixOperatingSystemSettings параметра.

Если вы хотите внести необходимые изменения вручную, убедитесь, что:

  • Модули NVMe устанавливаются и входят в состав initrd/initramfs.
  • Конфигурация GRUB включает параметр nvme_core.io_timeout=240.
  • /etc/fstab проверяет наличие устройств.

Уточните у поставщика вашей ОС все необходимые команды для обновления initrd/initramfs.

2.2.1 Подготовка PowerShell

Подсказка

Этот шаг не требуется при запуске скрипта в Azure Cloud Shell.

  1. Установите PowerShell с помощью документации по PowerShell.

  2. Подключитесь к Azure с помощью Connect-AzAccount.

  3. Выберите правильную подписку с помощью Select-AzSubscription -Subscription [your-subscription-id].

  4. Задайте политику выполнения с помощью Set-ExecutionPolicy -ExecutionPolicy Unrestricted.

2.2.2. Скачивание скрипта

Скрипт можно скачать с помощью команды PowerShell:

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/Azure-NVMe-Conversion.ps1" -OutFile ".\Azure-NVMe-Conversion.ps1"

2.3. Запуск миграции

Сценарий имеет несколько параметров:

Параметр Описание Обязательно
-ResourceGroupName Имя группы ресурсов для виртуальной машины. Да
-VMName Имя виртуальной машины в Azure. Да
-NewControllerType Тип контроллера хранилища, в который должна быть преобразована виртуальная машина (NVMe или SCSI). Да
-VMSize Номер SKU виртуальной машины Azure, в который требуется преобразовать виртуальную машину. Да
-StartVM Запустите виртуальную машину после преобразования. нет
-IgnoreSKUCheck Игнорировать проверку SKU виртуальной машины. нет
-IgnoreWindowsVersionCheck Пропустить проверку версии Windows. нет
-FixOperatingSystemSettings Автоматически исправьте параметры ОС с помощью команд выполнения Azure. нет
-WriteLogfile Создайте файл журнала. нет
-IgnoreAzureModuleCheck Не выполняйте проверку установленных модулей Azure. нет
-IgnoreOSCheck Не проверяйте готовность ОС. Ожидается, что ОС готова. нет
-SleepSeconds Время, необходимое Azure для применения изменений перед запуском виртуальной машины. нет

Ниже приведен пример команды:

# Example usage
.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType <NVMe/SCSI> -VMSize <new-VM-SKU> -StartVM -FixOperatingSystemSettings

Подсказка

Вы всегда можете вернуться к SCSI. Скрипт предоставляет команду для прямого возврата к исходной конфигурации.

2.3.1 Пример выходных данных
PS /home/philipp> ./NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType NVMe -VMSize Standard_E4bds_v5 -StartVM -FixOperatingSystemSettings                                          
00:00 - INFO      - Starting script Azure-NVMe-Conversion.ps1
00:00 - INFO      - Script started at 06/27/2025 15:41:39
00:00 - INFO      - Script version: 2025062704
00:00 - INFO      - Script parameters:
00:00 - INFO      -   ResourceGroupName -> testrg
00:00 - INFO      -   VMName -> testvm
00:00 - INFO      -   NewControllerType -> NVMe
00:00 - INFO      -   VMSize -> Standard_E4bds_v5
00:00 - INFO      -   StartVM -> True
00:00 - INFO      -   FixOperatingSystemSettings -> True
00:00 - INFO      - Script Version 2025062704                                                                           
00:00 - INFO      - Module Az.Compute is installed and the version is correct.
00:00 - INFO      - Module Az.Accounts is installed and the version is correct.
00:00 - INFO      - Module Az.Resources is installed and the version is correct.
00:00 - INFO      - Connected to Azure subscription name: AG-GE-CE-PHLEITEN
00:00 - INFO      - Connected to Azure subscription ID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
00:00 - INFO      - VM testvm found in Resource Group testrg
00:01 - INFO      - VM testvm is running
00:01 - INFO      - VM testvm is running Linux
00:01 - INFO      - VM testvm is running SCSI
00:02 - INFO      - Running in Azure Cloud Shell
00:02 - INFO      - Authentication token is a SecureString
00:02 - INFO      - Authentication token received
00:02 - INFO      - Getting available SKU resources
00:02 - INFO      - This might take a while ...
00:06 - INFO      - VM SKU Standard_E4bds_v5 is available in zone 1
00:06 - INFO      - Resource disk support matches between original VM size and new VM size.
00:06 - INFO      - Found VM SKU - Checking for Capabilities
00:06 - INFO      - VM SKU has supported capabilities
00:06 - INFO      - VM supports NVMe
00:06 - INFO      - Pre-Checks completed
00:06 - INFO      - Entering Linux OS section
00:37 - INFO      -    Script output: Enable succeeded: 
00:37 - INFO      -    Script output: [stdout]
00:37 - INFO      -    Script output: [INFO] Operating system detected: sles
00:37 - INFO      -    Script output: [INFO] Checking if NVMe driver is included in initrd/initramfs...
00:37 - INFO      -    Script output: [INFO] NVMe driver found in initrd/initramfs.
00:37 - INFO      -    Script output: [INFO] Checking nvme_core.io_timeout parameter...
00:37 - INFO      -    Script output: [INFO] nvme_core.io_timeout is set to 240.
00:37 - INFO      -    Script output: [INFO] Checking /etc/fstab for deprecated device names...
00:37 - INFO      -    Script output: [INFO] /etc/fstab does not contain deprecated device names.
00:37 - INFO      -    Script output: 
00:37 - INFO      -    Script output: [stderr]
00:37 - INFO      -    Script output: 
00:37 - INFO      - Errors: 0 - Warnings: 0 - Info: 7
00:37 - INFO      - Shutting down VM testvm
01:18 - INFO      - VM testvm stopped
01:18 - INFO      - Checking if VM is stopped and deallocated
01:19 - INFO      - Setting OS Disk capabilities for testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2 to new Disk Controller Type to NVMe
01:19 - INFO      - generated URL for OS disk update:
01:19 - INFO      - https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Compute/disks/testvm_OsDisk_1_165411276cbe459097929b981eb9b3e2?api-version=2023-04-02
01:19 - INFO      - OS Disk updated
01:19 - INFO      - Setting new VM Size from Standard_E4s_v3 to Standard_E4bds_v5 and Controller to NVMe
01:19 - INFO      - Updating VM testvm
01:54 - INFO      - VM testvm updated
01:54 - INFO      - Start after update enabled for VM testvm
01:54 - INFO      - Waiting for 15 seconds before starting the VM
02:09 - INFO      - Starting VM testvm
03:31 - INFO      - VM testvm started
03:31 - INFO      - As the virtual machine got started using the script you can check the operating system now
03:31 - INFO      - If you have any issues after the conversion you can revert the changes by running the script with the old settings
03:31 - IMPORTANT - Here is the command to revert the changes:
03:31 - INFO      -    .\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM
03:31 - INFO      - Script ended at 06/27/2025 15:45:11
03:31 - INFO      - Exiting
PS /home/philipp>

Если после этого вы не сможете получить доступ к операционной системе, проверьте следующее:

  • Последовательная консоль для операционных систем Linux.
  • Снимок экрана: операционная система на портале Azure.

При необходимости вы всегда можете вернуться к SCSI с помощью команды, показанной в конце скрипта:

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM

2.4 Проверка результата

Проверьте результат на портале Azure

Снимок экрана с информацией о виртуальной машине на портале Azure.

Проверка результата в PowerShell
PS C:\Users> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>

3. Проверка операционной системы

3.1 Проверка устройств

Вы можете проверить устройства с помощью nvme команды. nvme Если команда отсутствует, установите nvme-cli пакет с помощью nvme list.

Выходные данные должны отображать диск ОС и диски данных.

Снимок экрана: диски ОС и диски данных.

3.2 Получение udev-файла для NVMe (необязательно)

На виртуальных машинах SCSI правила udev, интегрированные в агент waagent Azure, создали ссылки в /dev/disk/azure/scsi1/lunX для идентификации дисков данных. Так как SCSI больше не используется, правила не применяются.

При использовании одного из двух доступных вариантов развертывания правил с поддержкой NVMe udev в каталоге /dev/disk/azure/data/by-lun вы увидите новые символические ссылки. Этот каталог является заменой /dev/disk/azure/scsi1.

nvme-conversion-vm:/usr/lib/udev/rules.d # ls -l /dev/disk/azure/data/by-lun/
total 0
lrwxrwxrwx 1 root root 19 Jun 7 13:52 0 -> ../../../../nvme0n2
lrwxrwxrwx 1 root root 19 Jun 7 13:52 1 -> ../../../../nvme0n3
nvme-conversion-vm:/usr/lib/udev/rules.d #
Скачивание udev-файла вручную

Чтобы скачать новый udev файл правил, выполните следующую команду:

sudo curl -o /etc/udev/rules.d/88-azure-nvme-data-disk.rules \
https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/88-azure-nvme-data-disk.rules

sudo udevadm control --reload-rules && sudo udevadm trigger
Готовые к установке пакеты из GitHub

Предварительно скомпилированные пакеты из коллекции GitHub с утилитами и правилами udev для виртуальных машин Azure доступны на Index of /results/cjp256/azure-vm-utils/ для нескольких дистрибутивов.

Несколько дистрибутивов уже начали интегрировать пакет. Его можно установить непосредственно из репозиториев.

Распределение Минимальная версия
SUSE SLES 15 SP5 или новее
Red Hat RHEL 9.6 или более поздней версии
Убунту Ubuntu 25.04 или более поздней версии

Подготовка пользовательского образа Linux для NVMe

Important

Если вы создаете пользовательский образ Linux на виртуальной машине на базе SCSI и развертываете его на виртуальной машине с размером NVMe по умолчанию (v5/v6/v7), виртуальная машина не загружается, если initramfs не содержит модули ядра nvme и nvme-core.

Проверка доступности модулей NVMe

modinfo nvme && echo "nvme module OK" || echo "ERROR: nvme module not found"
modinfo nvme-core && echo "nvme-core module OK" || echo "ERROR: nvme-core module not found"

Проверка наличия модулей NVMe в initramfs

# RHEL / CentOS / Oracle Linux:
lsinitrd /boot/initramfs-$(uname -r).img | grep -i nvme

# Ubuntu / Debian:
lsinitramfs /boot/initrd.img-$(uname -r) | grep -i nvme

# SLES:
lsinitrd /boot/initrd-$(uname -r) | grep -i nvme

Пересоберите initramfs, если модули NVMe отсутствуют

# RHEL / CentOS / Oracle Linux:
sudo dracut --force --add-drivers "nvme nvme-core" /boot/initramfs-$(uname -r).img $(uname -r)

# Ubuntu / Debian:
echo "nvme" | sudo tee -a /etc/initramfs-tools/modules
echo "nvme-core" | sudo tee -a /etc/initramfs-tools/modules
sudo update-initramfs -u

# SLES:
echo 'add_drivers+=" nvme nvme-core "' | sudo tee -a /etc/dracut.conf.d/nvme.conf
sudo dracut --force

Минимальные версии ядра для NVMe

Распределение Минимальная версия Примечания
Убунту 18.04 (ядро 4.15+) NVMe в initramfs по умолчанию
RHEL / CentOS 7.4 (ядро 3.10.0-693+) Возможно, потребуется перестроение initramfs
SLES 12 SP3+ Возможно, потребуется перестроение initramfs
Debian 9+ (ядро 4.9+) Возможно, потребуется перестроение initramfs
Oracle Linux 7.4+ (UEK 4+) UEK включает NVMe
CentOS 6 / RHEL 6 Не поддерживается Не удается загрузиться с NVMe

Доверенный запуск и тип контроллера диска

Предупреждение

Доверенные виртуальные машины запуска не могут изменить тип контроллера диска после развертывания. DiskControllerType на диске ОС навсегда заблокирован.

  • Невозможно изменить размер виртуальной машины доверенного запуска, созданной на SCSI (версии 3/v4) до размеров NVMe (v6/v7).
  • Невозможно изменить размер виртуальной машины доверенного запуска, созданной на NVMe, до размеров только SCSI.
  • Чтобы изменить тип контроллера, создайте снимок диска ОС, создайте новый диск нужного типа и создайте новую виртуальную машину.

Планирования: Перед созданием доверенной виртуальной машины запуска определите целевое поколение виртуальных машин. Если позже вам может потребоваться изменение размера при смене контроллера, развертывайте систему без Trusted Launch или используйте двухрежимный типоразмер (EBSv5).

Настройка времени ожидания ввода-вывода NVMe

Important

Виртуальные машины Azure Boost (v5/v6/v7) требуют nvme_core.io_timeout=240, чтобы предотвратить панику ядра и ошибки ввода-вывода при кратковременном увеличении задержки хранилища на узле. Значение по умолчанию (30 секунд) слишком короткое.

# Check current timeout
cat /sys/module/nvme_core/parameters/io_timeout

# Set immediately (non-persistent)
echo 240 | sudo tee /sys/module/nvme_core/parameters/io_timeout

# Make persistent — RHEL/CentOS/Oracle:
sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=240"

# Make persistent — Ubuntu/Debian:
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="nvme_core.io_timeout=240 /' /etc/default/grub
sudo update-grub

# Make persistent — SLES:
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="nvme_core.io_timeout=240 /' /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

# Verify after reboot
cat /sys/module/nvme_core/parameters/io_timeout
# Should show: 240

Различия именования устройств NVMe

Виртуальные машины NVMe используют разные пути устройства, отличные от виртуальных машин SCSI. Не прописывайте жёстко /dev/sd* пути к устройствам — они не существуют в виртуальных машинах NVMe.

SCSI NVMe Стабильный путь (рекомендуется)
/dev/sda (ОС) /dev/nvme0n1 /dev/disk/azure/root
/dev/sdb (temp) /dev/nvme0n2 (зависит) /dev/disk/azure/resource
/dev/sdc (LUN 0) /dev/nvme0n3 (зависит) /dev/disk/azure/scsi1/lun0

Предупреждение

Нумерирование устройств NVMe (/dev/nvme0n1, /dev/nvme0n2) не является стабильным во время перезагрузки. Всегда используйте:

  • /dev/disk/azure/* символьные ссылки
  • UUID дисков в /etc/fstab
# Get UUIDs
blkid

# Use in fstab:
# UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /data  ext4  defaults  0  2

# Map NVMe devices to Azure LUNs
ls -la /dev/disk/azure/
nvme list  # (install nvme-cli if needed)

Переключение и временный диск на виртуальных машинах NVMe

Временные диски NVMe отображаются неформатированные , в отличие от временных дисков SCSI. Их необходимо явно отформатировать и настроить.

# Identify temp disk
ls -la /dev/disk/azure/resource

# Format and mount
sudo mkfs.ext4 /dev/disk/azure/resource-part1
sudo mkdir -p /mnt/resource
sudo mount /dev/disk/azure/resource-part1 /mnt/resource

# Configure swap
sudo fallocate -l 4G /mnt/resource/swapfile
sudo chmod 600 /mnt/resource/swapfile
sudo mkswap /mnt/resource/swapfile
sudo swapon /mnt/resource/swapfile

Предупреждение

Временные диски являются эфемерными. Данные теряются при остановке/деаллокации. Настройте waagent для автоматического управления переключениями:

# /etc/waagent.conf
ResourceDisk.Format=y
ResourceDisk.EnableSwap=y
ResourceDisk.SwapSizeMB=4096

Перенос виртуальной машины Windows из SCSI в NVMe

В этом разделе описывается преобразование виртуальной машины Windows из SCSI в NVMe с помощью скрипта преобразования Azure NVMe. Скрипт автоматически выполняет подготовку ОС, освобождение виртуальной машины, обновление контроллера диска, необязательное изменение размера и перезапуск виртуальной машины.

Prerequisites

Перед началом работы убедитесь в следующем:

  • Виртуальная машина использует поколение 2 (2-го поколения). Вы не можете преобразовать виртуальные машины 1-го поколения в NVMe.

  • Виртуальная машина работает под управлением Windows Server 2019 или более поздней версии. Windows Server 2016 не поддерживается, если вы не используете -IgnoreWindowsVersionCheck параметр и не проверяете совместимость драйверов вручную. Windows Server 2012 R2 и более ранних версий не поддерживаются.

  • SKU целевой виртуальной машины поддерживает NVMe. Чтобы убедиться в этом, см. таблицу доступности Azure Boost.

  • Вы не использовали доверенный запуск для настройки виртуальной машины. Вы не можете преобразовать виртуальные машины, настроенные с доверенным запуском из SCSI в NVMe.

  • Преобразование виртуальной машины с временным диском (например, Standard_D4ds_v5) на номер SKU версии 6 (например, Standard_D4ds_v6) не поддерживается с помощью этого скрипта. Используйте моментальные снимки дисков для этого пути миграции.

    Поддерживается преобразование виртуальных машин без временного диска (например, Standard_D4s_v5) на номера SKU версии 6.

  • Антивирусное или защитное ПО, отличное от Microsoft, может помешать внесению изменений в драйверы в процессе преобразования. Временно отключите его перед запуском скрипта.

    Если виртуальная машина отображает синий экран после преобразования, вернитесь к SCSI и повторите попытку после отключения решения для обеспечения безопасности.

  • PowerShell со следующими версиями модулей Az устанавливается:

    • Az.Compute 9.0 или более поздней версии
    • Az.Accounts 4.0 или более поздней версии
    • Az.Resources 7.0 или более поздней версии

Скачивание скрипта

Invoke-WebRequest `
  -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/Azure-NVMe-Utils/Azure-NVMe-Conversion.ps1" `
  -OutFile ".\Azure-NVMe-Conversion.ps1"

Скрипт является частью репозитория SAP-on-Azure-Scripts-and-Utilities и лицензирован в соответствии с лицензией MIT.

Запуск преобразования

Используйте параметр -FixOperatingSystemSettings, чтобы скрипт автоматически настроил драйвер stornvme при запуске. Эта конфигурация необходима для Windows для распознавания контроллера NVMe после перезапуска виртуальной машины. Если его опустить, перед преобразованием потребуется вручную задать драйвер.

.\Azure-NVMe-Conversion.ps1 `
  -ResourceGroupName "<resource-group-name>" `
  -VMName "<vm-name>" `
  -NewControllerType NVMe `
  -VMSize "<target-sku>" `
  -FixOperatingSystemSettings `
  -StartVM `
  -WriteLogfile

Скрипт выполняет следующие действия автоматически:

  1. Проверяет версии модулей, существование виртуальной машины, тип ОС, Windows версию, 2-го поколения, текущий тип контроллера и возможности NVMe с помощью SKU виртуальной машины.
  2. При необходимости исправляет stornvme службу драйверов (sc.exe config stornvme start=boot) и проверяет другие параметры ОС для готовности NVMe (с -FixOperatingSystemSettings).
  3. Останавливает виртуальную машину и освобождает её ресурсы.
  4. Обновляет supportedCapabilities.diskControllerTypes до SCSI, NVMe на диске ОС с помощью метода REST PATCH.
  5. Изменяет размер виртуальной машины до целевого SKU.
  6. Запускает виртуальную машину (с -StartVM).

Подсказка

Скрипт предоставляет команду возврата в выходных данных в конце успешного выполнения. Сохраните эту команду перед закрытием сеанса, чтобы при необходимости выполнить откат к SCSI.

Что изменится для вашей виртуальной машины Windows

В отличие от Linux, Windows использует буквы дисков, а не пути к устройству, поэтому диск ОС остается C:\ после преобразования. Однако базовый интерфейс диска изменяется. Назначения дисков данных могут измениться, если вы не используете идентификаторы постоянного диска.

Диск Виртуальная машина с поддержкой SCSI Виртуальная машина с поддержкой NVMe
Диск операционной системы C:\ (без изменений) C:\ (без изменений)
Временный диск D:\ (обычно) D:\ (как правило, RAW для артикулов v6)
Диски данных Назначено порядком LUN Назначается по порядку пространств имен NVMe

Important

В SKU v6 временные диски имеют формат RAW и не отформатированы заранее в NTFS. Используйте скрипт запуска или расширение пользовательского скрипта для форматирования и подключения их при каждом запуске.

Проверка преобразования

После перезапуска виртуальной машины убедитесь, что тип контроллера диска был успешно изменен.

Подтверждение с помощью PowerShell

$vm = Get-AzVM -ResourceGroupName "<resource-group-name>" -VMName "<vm-name>"
$vm.StorageProfile.DiskControllerType

Выходные данные должны быть NVMe.

Подтверждение с помощью диспетчер устройств на виртуальной машине

  1. Откройте диспетчер устройств.
  2. Разверните контроллеры хранилища.
  3. Убедитесь, что указан стандартный контроллер NVM Express .

Возврат к SCSI

Предупреждение

Доверенные виртуальные машины запуска: Шаг восстановления для восстановления DiskControllerType не работает на виртуальных машинах доверенного запуска. Необходимо повторно создать виртуальную машину. См. раздел "Доверенный запуск" и "Тип контроллера диска".

Если необходимо выполнить откат, повторно запустите скрипт, указав -NewControllerType SCSI и исходный SKU виртуальной машины:

.\Azure-NVMe-Conversion.ps1 `
  -ResourceGroupName "<resource-group-name>" `
  -VMName "<vm-name>" `
  -NewControllerType SCSI `
  -VMSize "<original-SKU>" `
  -StartVM `
  -WriteLogfile