Adicione suporte ao driver NVMe em uma imagem personalizada para permitir a inicialização em tipos de instância ECS baseados em NVMe com desempenho de armazenamento aprimorado.
O NVMe é um protocolo de alta velocidade projetado para armazenamento em estado sólido, como SSDs baseados em flash. Em comparação com SCSI e virtio-blk, o NVMe oferece maior velocidade e largura de banda superior.
Casos de uso
Siga este procedimento se:
Você importar uma imagem personalizada para o Alibaba Cloud e a Verificação de Imagem indicar que o driver NVMe está ausente.
-
Não for possível selecionar uma imagem personalizada ao criar uma instância ECS compatível com NVMe porque o atributo NVMe da imagem não atende ao requisito do tipo de instância.
NotaPara famílias de instâncias compatíveis com NVMe, consulte Visão geral das famílias de instâncias. Verifique também o parâmetro
NvmeSupportna operação da API DescribeInstanceTypes.Para verificar se uma imagem personalizada suporta NVMe, consulte o parâmetro
NvmeSupportna operação da API DescribeImages.Caso algumas imagens não apareçam durante a criação de instâncias ECS, consulte Imagens específicas não encontradas.
Procedimento
-
Inicie uma instância ECS a partir da sua imagem personalizada existente. Essa instância servirá como ambiente intermediário para atualizar a imagem. Em seguida, conecte-se à instância.
ImportanteA instância intermediária gera custos. Libere a instância após criar a nova imagem personalizada para evitar cobranças contínuas.
-
De acordo com o sistema operacional da sua instância, selecione um método para verificar e instalar o driver NVMe.
Configuração pelo console
No Console ECS - Instâncias, localize a instância desejada e acesse sua página de detalhes. No canto superior direito, clique em All actions e selecione Configure NVMe Driver Status.
Clique em Install para instalar o driver NVMe. O sistema define automaticamente o status do driver NVMe como Installed.

Configuração automática usando o Cloud Assistant
O Cloud Assistant fornece o plug-in
ecs_nvme_configpara configurar rapidamente o driver NVMe. Este recurso suporta apenas sistemas operacionais específicos.-
Verifique se o Cloud Assistant Agent está instalado e se o plug-in
ecs_nvme_configestá disponível:acs-plugin-manager --list
Se nenhuma saída relacionada ao Cloud Assistant aparecer, instale o Cloud Assistant Agent primeiro.
Caso a lista de plug-ins inclua
ecs_nvme_config, prossiga para a próxima etapa.
-
Use o plug-in
ecs_nvme_configpara configurar o driver NVMe.-
Execute o plug-in
ecs_nvme_configpara verificar se o módulo NVMe existe e pode ser configurado:sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --check-
Se a saída contiver a mensagem abaixo, o driver NVMe já está instalado. Pule para a criação da imagem personalizada.
[SUCCESS] Summary: Your image can Runnig on nvme instance -
Caso a saída apresente uma mensagem
[ERROR]semelhante à seguinte, avance para a próxima etapa.[ERROR] 1.initrd/initramfs not has nvme module, Please run acs-plugin-manager --exec --plugin ecs_nvme_config --params -f/--fix to enable nvme;
-
-
Configure o driver NVMe com base no resultado da verificação:
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --fix -
Reinicie a instância após a conclusão da configuração.
sudo reboot -
Após reiniciar a instância, verifique se a configuração foi bem-sucedida:
sudo acs-plugin-manager --exec --plugin ecs_nvme_config --params --checkExemplo de saída de sucesso:
[OK] 1.initrd/initramfs already contain nvme module; [OK] 2.fstab file looks fine and does not contain any device names; [OK] 3.The nvme parameters already included. [SUCCESS] Summary: Your image can Runnig on nvme instance -
Crie uma nova imagem personalizada a partir da instância onde você instalou o driver. Em seguida, modifique os atributos da nova imagem personalizada e defina o atributo NVMe driver como Supported.
ImportanteSe você não definir o atributo do driver NVMe como Supported, o sistema não reconhecerá a imagem como compatível com NVMe. Não será possível selecionar tipos de instância com capacidade NVMe ao criar instâncias a partir dessa imagem.
-
Configuração manual (CentOS/Alibaba Cloud Linux)
-
Verifique se o kernel carregou o driver NVMe:
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
Se a saída contiver
CONFIG_BLK_DEV_NVME=y, o sistema operacional pode inicializar diretamente em famílias de instâncias habilitadas para NVMe. Prossiga para Configuração pelo console.Caso a saída contenha
CONFIG_BLK_DEV_NVME=m, execute as etapas a seguir.
-
Verifique se o initramfs contém o driver NVMe:
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
Se a saída corresponder à figura, o sistema operacional pode inicializar em famílias de instâncias habilitadas para NVMe. Vá para a etapa d.
Se nenhum resultado for retornado, execute a etapa c.
-
Adicione o driver NVMe ao initramfs:
mkdir -p /etc/dracut.conf.d echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null sudo dracut -v -fNotaSe a ferramenta dracut não estiver instalada, execute sudo yum -y install dracut para instalá-la.
-
Adicione o parâmetro
io_timeoutpara NVMe no GRUB.NotaAdicione o parâmetro
io_timeoutpara NVMe no GRUB para evitar falhas de E/S causadas por tempos limite do dispositivo. Definir esse valor como o limite máximo suportado garante que o sistema continue processando solicitações de E/S sem falhas prematuras.Na maioria das distribuições Linux, o parâmetro
io_timeouttem como padrão 30 segundos. Antes de adicionar um valor para o parâmetroio_timeout, executeecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutouecho 4294967295 > /sys/module/nvme/parameters/io_timeoutpara verificar seio_timeoutpode ser definido com o valor máximo de 4.294.967.295 segundos. Se o comando retornar-bash: echo: write error: Invalid argument, a versão do Linux suporta apenas 255 segundos.Método 1: Adicionar parâmetros usando grubby
-
Verifique se o
grubbyestá disponível:which grubbySe a saída incluir o caminho para
grubby(por exemplo,/usr/sbin/grubby), o sistema suportagrubby. Prossiga para a próxima etapa.Caso nenhuma saída apareça, seu sistema não suporta
grubby. Use o Método 2.
-
Adicione parâmetros de kernel com
grubby:sudo grubby --update-kernel=ALL --args="nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
Método 2: Adicionar parâmetros editando o arquivo de configuração do GRUB
-
Abra o arquivo grub:
sudo vi /etc/default/grub -
Pressione i para entrar no modo de inserção. Localize a linha
GRUB_CMDLINE_LINUX=e adicione os parâmetrosnvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Conteúdo do arquivo após adicionar os parâmetros:
NotaSe esses parâmetros já existirem no arquivo de configuração, não os adicione novamente.
Pressione Esc para sair do modo de inserção. Insira
:wqe pressione Enter para salvar e fechar o arquivo.-
Aplique a configuração do GRUB.
Selecione o comando correspondente ao modo de inicialização da instância:
-
Modo de inicialização Legacy BIOS
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Modo de inicialização UEFI
-
Visualize o arquivo de configuração do GRUB:
# For CentOS, run: cat /boot/efi/EFI/centos/grub.cfg # For Alibaba Cloud Linux, run: cat /boot/efi/EFI/alinux/grub.cfg -
Execute o comando apropriado com base na saída:
-
Se o arquivo de configuração apontar para outro arquivo config (por exemplo,
/boot/grub/grub.cfg), execute:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Caso contrário, execute o comando adequado para o seu sistema:
# For CentOS sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg # For Alibaba Cloud Linux sudo grub2-mkconfig -o /boot/efi/EFI/alinux/grub.cfg
-
-
-
-
Crie uma nova imagem personalizada a partir da instância onde você instalou o driver. Em seguida, modifique os atributos da nova imagem personalizada e defina o atributo NVMe driver como Supported.
ImportanteSe você não definir o atributo do driver NVMe como Supported, o sistema não reconhecerá a imagem como compatível com NVMe. Não será possível selecionar tipos de instância com capacidade NVMe ao criar instâncias a partir dessa imagem.
-
-
Verifique a saída relacionada ao NVMe:
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'Se o comando retornar nomes de arquivos de driver (por exemplo, nvme.ko), a configuração está completa. O sistema operacional agora pode inicializar em tipos de instância ECS habilitados para NVMe.

Configuração manual (Ubuntu/Debian)
-
(Opcional) Verifique se o initrd contém o driver NVMe:
lsinitramfs /boot/initrd.img-`uname -r` | grep -i nvmeA saída a seguir indica que o Ubuntu carrega o driver NVMe no initrd por padrão.

-
Adicione o parâmetro
io_timeoutpara NVMe no GRUB.NotaAdicione o parâmetro
io_timeoutpara NVMe no GRUB para evitar falhas de E/S causadas por tempos limite do dispositivo. Definir esse valor como o limite máximo suportado garante que o sistema continue processando solicitações de E/S sem falhas prematuras.Na maioria das distribuições Linux, o parâmetro
io_timeouttem como padrão 30 segundos. Antes de adicionar um valor para o parâmetroio_timeout, executeecho 4294967295 > /sys/module/nvme_core/parameters/io_timeoutouecho 4294967295 > /sys/module/nvme/parameters/io_timeoutpara verificar seio_timeoutpode ser definido com o valor máximo de 4.294.967.295 segundos. Se o comando retornar-bash: echo: write error: Invalid argument, a distribuição Linux suporta apenas 255 segundos.-
Abra o arquivo /etc/default/grub:
sudo vi /etc/default/grub -
Pressione i para entrar no modo de edição. Adicione os seguintes parâmetros à linha
GRUB_CMDLINE_LINUX=:nvme_core.multipath=n nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295.Conteúdo do arquivo após adicionar os parâmetros:
NotaSe esses parâmetros já existirem no arquivo de configuração, não os adicione novamente.
Pressione Esc para sair do modo de inserção. Insira
:wqe pressione Enter para salvar e fechar o arquivo.
-
-
Aplique as configurações do GRUB.
Com base no modo de inicialização da instância ECS, selecione um dos seguintes comandos:
-
Este comando funciona para Ubuntu e Debian independentemente do modo de inicialização:
sudo update-grub2 -
Modo de inicialização Legacy BIOS
sudo grub-mkconfig -o /boot/grub/grub.cfg -
Modo de inicialização UEFI
sudo grub-mkconfig -o /boot/efi/EFI/debian/grub.cfg
-
-
Crie uma nova imagem personalizada a partir da instância onde você instalou o driver. Em seguida, modifique os atributos da nova imagem personalizada e defina o atributo NVMe driver como Supported.
ImportanteSe você não definir o atributo do driver NVMe como Supported, o sistema não reconhecerá a imagem como compatível com NVMe. Não será possível selecionar tipos de instância com capacidade NVMe ao criar instâncias a partir dessa imagem.
(Opcional) Reimplante sua carga de trabalho com a nova imagem personalizada compatível com NVMe. Por exemplo, crie uma instância a partir de uma imagem personalizada ou compartilhada e selecione um tipo de instância compatível com NVMe.
Após verificar a implantação, exclua a imagem personalizada original para evitar custos com recursos ociosos.
Referências
Tipos de instância ECS baseados em NVMe suportam apenas discos ESSD e ESSD AutoPL. Esses discos suportam multi-attach para anexação simultânea a várias instâncias ECS. Consulte Anexar um disco em nuvem a várias instâncias ECS (multi-attach).
Se uma configuração inadequada de
io_timeouttornar um disco NVMe indisponível em uma instância ECS Linux, consulte O que fazer se um disco NVMe em uma instância ECS Linux estiver indisponível devido a um parâmetro de tempo limite de E/S inválido?.