Преобразование Виртуальные машины с Linux из SCSI в NVMe
В этой статье рассматривается процесс преобразования виртуальных машин под управлением Linux из SCSI в хранилище NVMe. Переходя на NVMe, вы можете воспользоваться преимуществами повышения производительности и масштабируемости.
SCSI и NVMe
Виртуальные машины Azure поддерживают два типа интерфейсов хранилища: небольшой системный интерфейс компьютера (SCSI) и NVMe. Интерфейс SCSI — это устаревший стандарт, обеспечивающий физическое подключение и передачу данных между компьютерами и периферийными устройствами. NVMe аналогичен SCSI, что обеспечивает подключение и передачу данных, но NVMe — это более быстрый и эффективный интерфейс для передачи данных между серверами и системами хранения.
Примечание.
Виртуальные машины, настроенные с помощью доверенного запуска, не могут переходить от SCSI к NVMe.
Поддержка виртуальных машин интерфейса SCSI
Azure продолжает поддерживать интерфейс SCSI в версиях предложений виртуальных машин, предоставляющих хранилище SCSI. Однако не все новые серии виртуальных машин имеют хранилище SCSI в качестве варианта.
Что изменилось для виртуальной машины?
Изменение интерфейса узла с SCSI на NVMe не изменяет удаленное хранилище (диск ОС или диски данных), но изменяет способ просмотра операционных систем дисков.
Виртуальная машина с поддержкой SCSI | Виртуальная машина с поддержкой NVMe | |
---|---|---|
Диск ОС | /dev/sda | /dev/nvme0n1 |
Временный диск | /dev/sdb | /dev/sda |
Первый диск данных | /dev/sdc | /dev/nvme0n2 |
В следующих разделах мы предоставляем руководство по преобразованию виртуальной машины Azure из SCSI в NVMe с помощью Azure Boost, обеспечивая полный доступ к этим улучшениям производительности и поддержанию конкурентного края в ландшафте облачных вычислений.
Перенос виртуальной машины из SCSI в NVMe
Чтобы выполнить миграцию из SCSI в NVMe, необходимо выполнить некоторые действия.
- Проверьте, поддерживает ли серия виртуальных машин NVMe
- Проверка готовности операционной системы для NVMe
- Преобразование виртуальной машины в NVMe
- Проверка операционной системы
1. Проверьте, поддерживает ли серия виртуальных машин NVMe
Поддерживаемые виртуальные машины для поддержки подключенных дисков NVMe описаны на сайте обзора Azure Boost в таблице доступности.
Внимание
Если тип виртуальной машины не указан, измените тип виртуальной машины.
2. Проверьте готовность NVMe к операционной системе
Операционная система должна поддерживать устройства NVMe, например драйверы устройств и initrdm, временную файловую систему, используемую во время загрузки, необходимо подготовить. Кроме того, необходимо проверить точки подключения файловых систем, так как они проверяют, используется ли имя устройства SCSI (/dev/sdX).
Чтобы упростить этот процесс, мы создали скрипт bash, который выполняет предварительное выполнение.
2.1 Проверка типа контроллера виртуальной машины
2.1.1 Проверка типа контроллера с помощью PowerShell
PS C:\Users\user1> $vm = Get-AzVM -name nvme-conversion-vm
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
2.1.2 Проверка типа контроллера с помощью Azure CLI
$ az vm show --name nvme-conversion-vm --resource-group nvme-conversion
{
"additionalCapabilities": {
...
"storageProfile": {
...
"diskControllerType": "SCSI",
...
2.1.3 Проверка типа контроллера с помощью портал Azure
2.2 Запуск скрипта предварительной проверки
Скрипт bash не изменяет ничего в системе автоматически. Он предоставляет рекомендации только для выполнения команд.
Рекомендации включают в себя
- Модули NVMe
- Конфигурация GRUB
- Проверка /etc/fstab для устройств
Чтобы запустить скрипт, используйте следующую команду (curl):
curl -s -S -L https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
As an alternative you can also use wget:
wget --no-verbose -O - https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
Third option is to download the script from the [GitHub repository](https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/NVMe-Preflight-Check) and run it manually.
nvme-conversion-vm:/home/azureuser # curl -s -S -L https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-preflight-check.sh | sh -s -- -v
------------------------------------------------
START of script
------------------------------------------------
------------------------------------------------
OK NVMe Module is installed and available on your VM
------------------------------------------------
------------------------------------------------
ERROR NVMe Module is not loaded in the initramfs image.
mkdir -p /etc/dracut.conf.d
echo 'add_drivers+=" nvme nvme-core nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
dracut -f -v
------------------------------------------------
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 net.ifnames=0 dis_ucode_ldr earlyprintk=ttyS0 multipath=off rootdelay=300 scsi_mod.use_blk_mq=1 USE_BY_UUID_DEVICE_NAMES=1 nvme_core.io_timeout=240"
------------------------------------------------
OK GRUB contains timeouts.
------------------------------------------------
------------------------------------------------
OK fstab file doesn't contain device names
------------------------------------------------
Please crosscheck your /etc/fstab file
------------------------------------------------
END of script
------------------------------------------------
nvme-conversion-vm:/home/azureuser #
В этом примере initrd и ядро не готовы к NVMe, выполнив команды dracut, включите операционную систему.
nvme-conversion-vm:/home/azureuser # mkdir -p /etc/dracut.conf.d
nvme-conversion-vm:/home/azureuser # echo 'add_drivers+=" nvme nvme-core nvme-fabrics nvme-fc nvme-rdma nvme-loop nvmet nvmet-fc nvme-tcp "' >/etc/dracut.conf.d/nvme.conf
nvme-conversion-vm:/home/azureuser # dracut -f -v
dracut: Executing: /usr/bin/dracut -f -v
...
dracut: *** Creating initramfs image file '/boot/initrd-5.14.21-150500.55.65-default' done ***
nvme-conversion-vm:/home/azureuser # reboot
3. Преобразование виртуальной машины в NVMe
Для преобразования операционной системы требуются несколько шагов.
Измените метаданные диска ОС, чтобы включить возможности NVMe изменить контроллер SCSI на NVMe Этот процесс автоматизирован с помощью скрипта PowerShell.
3.1 Скачивание скрипта PowerShell
Чтобы скачать скрипт PowerShell из репозитория GitHub, используйте следующую команду:
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/main/NVMe-Preflight-Check/azure-nvme-VM-update.ps1" -OutFile ".\azure-nvme-VM-update.ps1"
3.2. Преобразование виртуальной машины
Чтобы преобразовать скрипт, подробная документация также доступна в репозитории GitHub.
Вы можете решить, следует ли автоматически запустить виртуальную машину после перенастройки.
.\azure-nvme-VM-update.ps1 -subscription_id XXXXXXXX-a961-4fb7-88c0-757472230e6c -resource_group_name nvme-conversion -vm_name nvme-conversion-vm -disk_controller_change_to NVMe -vm_size_change_to Standard_E64bds_v5
INFO - OS Disk found
INFO - Access token generated
INFO - Getting VM info
INFO - Getting all VM SKUs available in Region swedencentral
INFO - This will take about a minute ...
INFO - Found VM SKU - Checking for Capabilities
INFO - VM supports NVMe
INFO - Checking for TrustedLaunch
INFO - Checking if VM is stopped and deallocated
INFO - Stopping VM
Tenant: 72f988bf-86f1-41af-91ab-2d7cd011db47
SubscriptionName SubscriptionId Account Environment
---------------- -------------- ------- -----------
XX-XX-XX-XX XXXXXXX-a961-4fb7-88c0-757472230e6c xxxxxx@microsoft.com AzureCloud
OperationId : cf02d28c-c711-4fe5-89fc-854fba31b67a
Status : Succeeded
StartTime : 07.06.2024 15:18:35
EndTime : 07.06.2024 15:19:17
Error :
Name :
INFO - Setting OS Disk to SCSI/NVMe
INFO - Getting VM config to prepare new config
INFO - Setting new VM size
INFO - Setting disk controller for VM
INFO - Updating the VM configuration
RequestId :
IsSuccessStatusCode : True
StatusCode : OK
ReasonPhrase :
INFO - Not starting VM
3.3 Проверка результата
3.3.1 Проверка результата портал Azure
3.3.2 Проверка результата в PowerShell
PS C:\Users> $vm = Get-AzVM -name nvme-conversion-vm
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>
4. Проверка операционной системы
4.1 Проверка устройств
Вы можете проверить устройства с помощью команды nvme, если отсутствует команда nvme, установите пакет nvme-cli.
nvme list
Выходные данные должны отображать диск ОС и диски данных.
4.2 Получение udev-файла для NVMe (необязательно)
На виртуальных машинах SCSI правила udev, интегрированные в waagent (агент Azure), создали ссылки для /dev/disk/azure/scsi1/lunX
идентификации дисков данных. Так как SCSI больше не используется, правила не применяются.
С одним из двух доступных вариантов развертывания правил udev с поддержкой NVMe в каталоге /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 #
4.2.1 Вручную скачивание файла udev
Чтобы скачать новый файл правил udev, используйте следующую команду: curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/NVMe-Preflight-Check/88-azure-nvme-data-disk.rules
затем выполните перезагрузку udevadm control --reload-rules && udevadm trigger
правил udev.
4.2.2 Ready to install packages using Azure NVMe utils
В индексе /results/cjp256/azure-nvme-utils/для нескольких дистрибутивов доступны предварительно скомпилированные пакеты. Мы работаем над включением и интеграцией ресурсов NVMe Azure во всех основных дистрибутивах.