Converter VMs Linux e Windows de SCSI para NVMe

Azure VMs (máquinas virtuais) dão suporte a duas interfaces de controlador de armazenamento: SCSI (Small Computer System Interface) e NVM Express (NVMe). O SCSI é um padrão herdado que fornece conectividade física e transferência de dados entre computadores e dispositivos periféricos. O NVMe fornece conectividade semelhante, mas é uma interface mais rápida e eficiente para transferência de dados entre servidores e sistemas de armazenamento.

Este artigo mostra como converter uma VM Azure de um controlador de disco SCSI em NVMe usando Azure Boost e o script de Conversão de NVMe Azure. O mesmo script e procedimento se aplicam a:

  • VMs de Linux e Windows.
  • VMs com ou sem discos de dados e um disco temporário.

Azure continua a dar suporte à interface SCSI nas ofertas de VM que fornecem armazenamento SCSI. No entanto, nem todas as novas séries de VM incluem SCSI como uma opção daqui para frente.

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). Ele altera a maneira como o sistema operacional usa os discos.

Disk SCSI VM VM NVMe (v5 com disco temporário) NVMe VM (v6)
Disco do sistema operacional /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

Converter sua VM Azure do SCSI em NVMe usando Azure Boost pode ajudá-lo a aproveitar ao máximo essas melhorias de desempenho e manter uma vantagem competitiva no cenário de computação em nuvem.

Migrar uma VM do SCSI para o NVMe

Para migrar do SCSI para o NVMe, siga estas etapas de alto nível:

  1. Verifique se sua série de VMs dá suporte ao NVMe.
  2. Verifique os pré-requisitos do sistema operacional.
  3. Converta sua VM em NVMe.
  4. Verifique a conversão.

Note

VMs personalizadas que executam softwares de terceiros capazes de modificar o comportamento de tempo de inicialização, drivers de armazenamento, drivers de filtro ou enumeração de disco não são atualmente um cenário de migração com suporte. Exemplos incluem alguns produtos de backup, segurança, proteção de endpoints e gerenciamento de armazenamento. Para essas configurações, Azure Suporte pode ter capacidade limitada de diagnosticar ou corrigir falhas de migração. Teste a conversão em uma VM de não produção representativa antes de continuar com cargas de trabalho de produção.

1. Verifique se sua série de máquinas virtuais dá suporte ao NVMe

A tabela de disponibilidade do Azure Boost lista os tamanhos de VM que dão suporte a discos anexados NVMe.

2. Verifique os pré-requisitos

Antes de começar, verifique se você tem os seguintes pré-requisitos:

  • Uma assinatura Azure e uma máquina virtual que você precisa converter de SCSI para NVMe ou de NVMe para SCSI
  • PowerShell e o módulo Az instalado e configurado
  • Permissões apropriadas para executar scripts em recursos de Azure

3. Uso

Para executar o script, abra o PowerShell como administrador e siga estas etapas:

  1. Instale o PowerShell ou execute o script no Azure Cloud Shell.

Dica

Instale o PowerShell usando a documentação do PowerShell.

  1. Permitir arquivos de script do PowerShell não assinados.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  1. Conecte-se à sua conta Azure usando Connect-AzAccount.
Connect-AzAccount
  1. Verifique se você está conectado à sua assinatura. Para alterar a assinatura, use Set-AzContext.
Select-AzSubscription -Subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  1. Baixe o script.
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"
  1. Execute o script de conversão.
.\Azure-NVMe-Conversion.ps1

Note

Se você estiver convertendo entre tamanhos de VM com suporte diferente a disco de recurso (temporário), sua assinatura do Azure deverá ser registrada para a funcionalidade VMTempDiskResizePreview. Se o recurso não estiver registrado, o script sairá com um erro. Registre o recurso usando o comando a seguir, aguarde 10 minutos para que a aprovação automática entre em vigor e execute novamente o script.

Register-AzProviderFeature -FeatureName VMTempDiskResizePreview -ProviderNamespace Microsoft.Compute

Exemplo

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

O script tem os seguintes parâmetros.

Parâmetro Descrição Obrigatório
-ResourceGroupName O nome do grupo de recursos para sua VM. Yes
-VMName O nome da sua VM no Azure. Yes
-NewControllerType O tipo de controlador de armazenamento para o qual converter a VM (NVMe ou SCSI). Yes
-VMSize A SKU da VM do Azure para a qual a VM será convertida. Yes
-StartVM Inicie a VM após a conversão. Não
-FixOperatingSystemSettings Corrija automaticamente as configurações do sistema operacional usando Azure Executar Comandos. Não
-WriteLogfile Crie um arquivo de log. Não
-IgnoreSKUCheck Ignore a verificação da SKU da VM. Não
-IgnoreWindowsVersionCheck Ignore a verificação de versão do Windows. Não
-IgnoreAzureModuleCheck Não execute a verificação de módulos Azure instalados. Não
-IgnoreOSCheck Não verifique se o sistema operacional está pronto. A expectativa é que o sistema operacional esteja pronto. Não
-SleepSeconds O tempo para Azure para resolver as alterações antes de iniciar a VM. Não

O script executa as seguintes etapas:

  1. Valida as versões do módulo Az, a existência da VM, o tipo de sistema operacional, a geração, o tipo de controlador atual e a funcionalidade NVMe da SKU de VM de destino.
  2. Com -FixOperatingSystemSettings, valida e configura o sistema operacional convidado para o NVMe usando o Azure Run Command:
    • No Linux, verifica se o driver NVMe está em initrd/initramfs, define nvme_core.io_timeout=240e verifica /etc/fstab se há nomes de dispositivo preteridos.
    • No Windows, configura o driver stornvme para ser iniciado na inicialização (sc.exe config stornvme start=boot).
  3. Interrompe e desaloca a VM.
  4. Atualiza supportedCapabilities.diskControllerTypes para SCSI, NVMe no disco do sistema operacional.
  5. Redimensiona a VM para o SKU de destino e define o tipo de controlador de disco como NVMe.
  6. Inicia a VM (com -StartVM).

4. Verificar a conversão

Confirmar usando o PowerShell

Depois que a VM for reiniciada, confirme se o tipo de controlador de disco foi alterado com êxito.

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

Verifique o resultado dentro do convidado

Verifique os dispositivos usando o nvme comando. Se o nvme comando estiver ausente, instale o nvme-cli pacote.

nvme list

A saída mostra o disco do sistema operacional e os discos de dados.

Dica

Você sempre pode reverter para SCSI. O script fornece um comando no final de uma execução bem-sucedida para reverter para sua configuração original. Salve esse comando antes de fechar a sessão.

Se você precisar reverter, execute novamente o script com -NewControllerType SCSI e a SKU original da VM:

.\Azure-NVMe-Conversion.ps1 -ResourceGroupName <your-RG> -VMName <your-VMname> -NewControllerType SCSI -VMSize <original-SKU> -StartVM