Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, discutimos o processo de conversão de máquinas virtuais (VM) executando Linux de armazenamento SCSI para NVMe. Ao migrar para NVMe, você pode aproveitar seu desempenho e escalabilidade aprimorados.
SCSI vs NVMe
As VMs do Azure dão suporte a dois tipos de interfaces de armazenamento: Small Computer System Interface (SCSI) e NVMe. A interface SCSI é um padrão herdado que fornece conectividade física e transferência de dados entre computadores e dispositivos periféricos. O NVMe é semelhante ao SCSI na medida em que fornece conectividade e transferência de dados, mas o NVMe é uma interface mais rápida e eficiente para transferência de dados entre servidores e sistemas de armazenamento.
Suporte para VMs de interface SCSI
O Azure continua a dar suporte à interface SCSI nas versões das ofertas de VM que fornecem armazenamento SCSI. No entanto, nem todas as novas séries de VM têm armazenamento SCSI como uma opção no futuro.
O que está mudando para sua VM?
Alterar a interface do host de SCSI para NVMe não altera o armazenamento remoto (disco do sistema operacional ou discos de dados), mas altera a maneira como os sistemas operacionais veem os discos.
| Disk | VM habilitada para SCSI | VM NVMe com tempdisk SCSI (por exemplo, Ebds_v5) | VM NVMe com disco temporário NVMe |
|---|---|---|---|
| de disco do SO | /dev/sda | /dev/nvme0n1 | /dev/nvme0n1 |
| Disco temporário | /dev/sdb | /dev/sda | /dev/nvme1n1 |
| Primeiro disco de dados | /dev/sdc | /dev/nvme0n2 | /dev/nvme0n2 |
Sugestão
Alguns tipos de VM têm mais de um disco temporário (por exemplo, E64ds_v6)
Nas seções a seguir, fornecemos um guia para converter sua VM do Azure de SCSI para NVMe usando o Azure Boost, garantindo que você possa aproveitar ao máximo essas melhorias de desempenho e manter uma vantagem competitiva no cenário de computação em nuvem.
Migrar sua máquina virtual (VM) de SCSI para NVMe
Para migrar de SCSI para NVMe, algumas etapas precisam ser seguidas:
- Verifique se a série de máquinas virtuais suporta NVMe
- Verifique a prontidão do seu sistema operacional para NVMe
- Converta sua máquina virtual em NVMe
- Verifique o seu sistema operativo
1. Verifique se a sua série de máquinas virtuais suporta NVMe
As máquinas virtuais com suporte para dar suporte a discos conectados NVMe são descritas no site de visão geral do Azure Boost na tabela de disponibilidade.
2. Verifique se o seu sistema operacional está pronto para NVMe
O sistema operacional precisa suportar dispositivos NVMe, incluindo, por exemplo, drivers de dispositivo e initrdm, o sistema de arquivos temporário usado durante a inicialização, precisa ser preparado. Além disso, você precisa validar os pontos de montagem dos sistemas de arquivos enquanto eles verificam se você usa o nome do dispositivo SCSI (/dev/sdX).
O script de migração automaticamente pode cuidar dessas verificações de preparação para você ao usar o -FixOperatingSystemSettings.
2.1 Verificar o tipo de controlador de VM
2.1.1 Verificar o tipo de controlador usando o PowerShell
PS C:\Users\user1> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users\user1> $vm.StorageProfile.DiskControllerType
SCSI
PS C:\Users\user1>
2.1.2 Verificar o tipo de controlador usando a CLI do Azure
$ az vm show --name [your-vm-name] --resource-group [your-resource-group-name]
{
"additionalCapabilities": {
...
"storageProfile": {
...
"diskControllerType": "SCSI",
...
2.1.3 Verificar o tipo de controlador usando o portal do Azure
2.2 Preparar a migração
O script de migração pode cuidar automaticamente dos pré-requisitos ao usar o -FixOperatingSystemSettings parâmetro.
Se você quiser cuidar manualmente das alterações necessárias, valide
- Módulos NVMe instalados e integrados no initrd/initramfs
- A configuração do GRUB inclui o parâmetro nvme_core.io_timeout=240
- /etc/fstab verifica dispositivos
Verifique novamente com o fornecedor do seu sistema operacional para cobrir todos os comandos necessários para atualizar o initrd/initramfs.
2.2.1 Preparar o PowerShell
Sugestão
Esta etapa não é necessária ao executar o script no Azure CloudShell
Instalar o PowerShell usando https://aka.ms/powershell
Conecte-se ao Azure usando
Connect-AzAccounte selecione a assinatura correta usandoSelect-AzSubscription -Subscription [your-subscription-id]Definir a Política de Execução usando
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
2.2.2 Faça o download do script
Você pode baixar o script usando um comando do 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 Executar a migração
O script tem vários parâmetros disponíveis:
| Parâmetro | Descrição | Obrigatório |
|---|---|---|
-ResourceGroupName |
O nome do grupo de recursos da sua VM | Yes |
-VMName |
O nome da sua Máquina Virtual no Azure | Yes |
-NewControllerType |
O tipo de controlador de armazenamento para o qual a VM deve ser convertida (NVMe ou SCSI) | Yes |
-VMSize |
SKU da VM do Azure para a qual você deseja converter a VM | Yes |
-StartVM |
Inicie a VM após a conversão | Não |
-IgnoreSKUCheck |
Ignorar a verificação do SKU da VM | Não |
-IgnoreWindowsVersionCheck |
Ignorar a verificação de versão do Windows | Não |
-FixOperatingSystemSettings |
Corrigir automaticamente as configurações do sistema operacional usando o Azure RunCommands | Não |
-WriteLogfile |
Criar um arquivo de log | Não |
-IgnoreAzureModuleCheck |
Não execute a verificação de módulos do Azure instalados | Não |
-IgnoreOSCheck |
Não verifique a prontidão do sistema operacional, a expectativa é que o sistema operacional esteja pronto | Não |
-SleepSeconds |
Tempo para o Azure liquidar as alterações antes de iniciar a VM | Não |
Comando de exemplo:
# Example usage
.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType <NVMe/SCSI> -VMSize <new-VM-SKU> -StartVM -FixOperatingSystemSettings
Sugestão
Você sempre pode reverter para SCSI, o script compartilhará um comando com você para reverter diretamente para sua configuração original.
2.3.1 Produção da amostra
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>
Se você tiver dificuldades para acessar o sistema operacional depois, tente verificar
Console serial para sistemas operacionais Linux
Captura de ecrã do sistema operativo no portal do Azure
Quando algo acontece, você sempre pode reverter para SCSI usando o comando mostrado no final do script:
.\Azure-NVMe-Conversion.ps1 -ResourceGroupName testrg -VMName testvm -NewControllerType SCSI -VMSize Standard_E4s_v3 -StartVM
2.4 Verifique o resultado
2.4.1 Verificar o resultado no portal do Azure
2.4.2 Verificar o resultado no PowerShell
PS C:\Users> $vm = Get-AzVM -name [your-vm-name]
PS C:\Users> $vm.StorageProfile.DiskControllerType
NVMe
PS C:\Users>
3. Verifique o seu sistema operativo
3.1 Verificar dispositivos
Você pode verificar os dispositivos usando o comando nvme, se o comando nvme estiver faltando, instale o pacote "nvme-cli".
nvme list
A saída deve mostrar o disco do sistema operacional e os discos de dados.
3.2 Obter arquivo udev para NVMe (Opcional)
As regras de udev integradas no waagent (agente do Azure) em máquinas virtuais SCSI criaram links em /dev/disk/azure/scsi1/lunX para identificar os discos de dados. Como o SCSI não é mais usado, as regras não se aplicam.
Com uma das duas opções disponíveis para implantar regras de udev habilitadas para NVMe, você verá novos links simbólicos no diretório /dev/disk/azure/data/by-lun. Este diretório é o substituto do /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 #
3.2.1 Download manual do arquivo udev
Para baixar o novo arquivo de regras do udev, use este comando:
curl https://raw.githubusercontent.com/Azure/SAP-on-Azure-Scripts-and-Utilities/refs/heads/main/NVMe-Preflight-Check/88-azure-nvme-data-disk.rules e, em seguida, execute udevadm control --reload-rules && udevadm trigger para recarregar as regras do udev.
3.2.2 Pronto para instalar pacotes usando utils de VM do Azure
Há pacotes pré-compilados disponíveis no Index of /results/cjp256/azure-vm-utils/ para várias distribuições.
Várias distribuições já começaram a integrar o pacote. Você pode instalá-lo diretamente a partir de seu repositório.
| Distribuição | Versão mínima |
|---|---|
| SUSE | SLES 15 SP5 ou superior |
| RedHat | RHEL 9.6 ou superior |
| Ubuntu | Ubuntu 25.04 ou superior |