Adicionar um disco a uma VM do Linux

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo mostra como anexar um disco persistente à sua VM para que você possa preservar seus dados, mesmo que a VM seja reprovisionada devido a manutenção ou redimensionamento.

Anexar um novo disco a uma VM

Se você quiser adicionar um novo disco de dados vazio em sua VM, use o comando az vm disk attach com o --new parâmetro. Se a VM estiver em uma zona de disponibilidade, o disco será criado automaticamente na mesma zona que a VM. Para obter mais informações, consulte Visão geral das zonas de disponibilidade. O exemplo a seguir cria um disco chamado myDataDisk que tem 50 Gb de tamanho:

az vm disk attach \
   -g myResourceGroup \
   --vm-name myVM \
   --name myDataDisk \
   --new \
   --size-gb 50

Latência mais baixa

Em regiões selecionadas, a latência de conexão de disco foi reduzida, portanto, você verá uma melhoria de até 15%. Isso é útil se você tiver failovers planejados/não planejados entre VMs, estiver dimensionando sua carga de trabalho ou estiver executando uma carga de trabalho com estado de alta escala, como o Serviço Kubernetes do Azure. No entanto, essa melhoria é limitada ao comando explícito disk attach . az vm disk attach Você não verá a melhoria de desempenho se chamar um comando que pode executar implicitamente uma anexação, como az vm update. Você não precisa tomar nenhuma ação além de chamar o comando explícito anexar para ver essa melhoria.

Atualmente, a latência mais baixa está disponível em todas as regiões públicas, exceto para:

  • Canadá Central
  • E.U.A. Central
  • E.U.A. Leste
  • E.U.A. Leste 2
  • E.U.A. Centro-Sul
  • E.U.A. Oeste 2
  • Norte da Alemanha
  • Jio, Oeste da Índia
  • Europa do Norte
  • Europa Ocidental

Anexar um disco existente

Para anexar um disco existente, localize o ID do disco e passe o ID para o comando az vm disk attach . O exemplo a seguir consulta um disco chamado myDataDisk em myResourceGroup e, em seguida, o anexa à VM chamada myVM:

diskId=$(az disk show -g myResourceGroup -n myDataDisk --query 'id' -o tsv)

az vm disk attach -g myResourceGroup --vm-name myVM --name $diskId

Formatar e montar o disco

Para particionar, formatar e montar seu novo disco para que sua VM Linux possa usá-lo, SSH em sua VM. Para obter mais informações, veja como utilizar SSH com Linux no Azure. O exemplo a seguir se conecta a uma VM com o endereço IP público de 10.123.123.25 com o nome de usuário azureuser:

ssh azureuser@10.123.123.25

Localizar o disco

Depois de se conectar à sua VM, localize o disco. Neste exemplo, estamos usando lsblk para listar os discos.

lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

O resultado é semelhante ao seguinte exemplo:

sda     0:0:0:0      30G
├─sda1             29.9G /
├─sda14               4M
└─sda15             106M /boot/efi
sdb     1:0:1:0      14G
└─sdb1               14G /mnt
sdc     3:0:0:0      50G

Aqui, sdc é o disco que queremos, porque é 50G. Se você adicionar vários discos e não tiver certeza de qual disco se baseia apenas no tamanho, poderá acessar a página VM no portal, selecionar Discos e verificar o número do LUN do disco em Discos de dados. Compare o número do LUN do portal com o último número da parte HTCL da saída, que é o LUN. Outra opção é listar o /dev/disk/azure/scsi1 conteúdo do diretório:

ls -l /dev/disk/azure/scsi1

A saída deve ser semelhante ao exemplo a seguir:

lrwxrwxrwx 1 root root 12 Mar 28 19:41 lun0 -> ../../../sdc

Formatar o disco

Formate o disco com parted, se o tamanho do disco for de dois tebibytes (TiB) ou maior, então você deve usar o particionamento GPT, se estiver abaixo de 2TiB, então você pode usar o particionamento MBR ou GPT.

Nota

É recomendável que você use a versão parted mais recente disponível para sua distro. Se o tamanho do disco for 2 tebibytes (TiB) ou maior, você deverá usar o particionamento GPT. Se o tamanho do disco estiver abaixo de 2 TiB, você poderá usar o particionamento MBR ou GPT.

O exemplo a seguir usa parted em /dev/sdc, que é onde o primeiro disco de dados normalmente estará na maioria das VMs. Substitua sdc pela opção correta para o disco. Também estamos formatando usando o sistema de arquivos XFS .

sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1

Use o partprobe utilitário para certificar-se de que o kernel está ciente da nova partição e sistema de arquivos. A falha no uso partprobe pode fazer com que os comandos blkid ou lsblk não retornem o UUID para o novo sistema de arquivos imediatamente.

Monte o disco

Agora, crie um diretório para montar o sistema de arquivos usando mkdiro . O exemplo a seguir cria um diretório em /datadrive:

sudo mkdir /datadrive

Use mount para montar o sistema de arquivos. O exemplo a seguir monta a /dev/sdc1 partição no /datadrive ponto de montagem:

sudo mount /dev/sdc1 /datadrive

Persistir a montagem

Para garantir que a unidade seja remontada automaticamente após uma reinicialização, ela deve ser adicionada /etc/fstab ao arquivo. Também é altamente recomendável que o UUID (Universally Unique Identifier) seja usado para /etc/fstab se referir à unidade em vez de apenas ao nome do dispositivo (como /dev/sdc1). Se o SO detetar um erro do disco durante o arranque, ao utilizar o UUID evitará que o disco incorreto seja montado numa determinada localização. Os restantes discos de dados serão, em seguida, atribuídos aos mesmos IDs de dispositivos. Para localizar o UUID da nova unidade, utilize o utilitário blkid:

sudo blkid

A saída é semelhante ao exemplo a seguir:

/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a"
/dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u"
/dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01"
/dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u"
/dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"

Nota

A edição imprópria do ficheiro /etc/fstab poderá resultar num sistema não inicializável. Se não tiver a certeza, consulte a documentação de distribuição para obter mais informações sobre como editar corretamente este ficheiro. Também é recomendável que um backup do arquivo seja criado antes da /etc/fstab edição.

Em seguida, abra o /etc/fstab arquivo em um editor de texto. Adicione uma linha ao final do arquivo, usando o valor UUID para o /dev/sdc1 dispositivo que foi criado nas etapas anteriores e o ponto de montagem de /datadrive. Usando o exemplo deste artigo, a nova linha teria a seguinte aparência:

UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2

Quando terminar de editar o arquivo, salve e feche o editor.

Como alternativa, você pode executar o seguinte comando para adicionar o disco ao /etc/fstab arquivo:

echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,nofail   1   2" >> /etc/fstab

Nota

Mais tarde, remover um disco de dados sem editar o fstab pode fazer com que a VM falhe ao inicializar. A maioria das distribuições fornece as opções nofail e/ou nobootwait fstab. Essas opções permitem que um sistema inicialize mesmo que o disco não seja montado no momento da inicialização. Consulte a documentação da sua distribuição para obter mais informações sobre esses parâmetros.

A opção nofail garante que a VM seja iniciada mesmo se o sistema de arquivos estiver corrompido ou o disco não existir no momento da inicialização. Sem essa opção, você pode encontrar o comportamento descrito em Não é possível SSH para Linux VM devido a erros FSTAB

O Console Serial da VM do Azure pode ser usado para acesso do console à sua VM se a modificação do fstab resultar em uma falha de inicialização. Mais detalhes estão disponíveis na documentação do Serial Console.

Suporte TRIM/UNMAP para Linux no Azure

Alguns kernels Linux suportam operações TRIM/UNMAP para descartar blocos não utilizados no disco. Esse recurso é principalmente útil para informar o Azure de que as páginas excluídas não são mais válidas e podem ser descartadas. Esse recurso pode economizar dinheiro em discos que são cobrados com base na quantidade de armazenamento consumido, como discos padrão não gerenciados e instantâneos de disco.

Há duas maneiras de habilitar o suporte a TRIM em sua VM Linux. Como de costume, consulte sua distribuição para obter a abordagem recomendada:

  • Use a discard opção de montagem no /etc/fstab, por exemplo:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   xfs   defaults,discard   1   2
    
  • Em alguns casos, a opção pode ter implicações no discard desempenho. Como alternativa, você pode executar o fstrim comando manualmente a partir da linha de comando ou adicioná-lo ao seu crontab para ser executado regularmente:

sudo apt install util-linux
sudo fstrim /datadrive

Resolução de Problemas

Ao adicionar discos de dados a uma VM Linux, você pode encontrar erros se um disco não existir no LUN 0. Se você estiver adicionando um disco manualmente usando o az vm disk attach -new comando e especificar um LUN (--lun) em vez de permitir que a plataforma do Azure determine o LUN apropriado, cuide para que um disco já exista/exista no LUN 0.

Considere o exemplo a seguir mostrando um trecho da saída de lsscsi:

[5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc 
[5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd 

Os dois discos de dados existem no LUN 0 e no LUN 1 (a primeira coluna nos detalhes [host:channel:target:lun]de lsscsi saída). Ambos os discos devem ser acessíveis a partir da VM. Se você tiver especificado manualmente o primeiro disco a ser adicionado no LUN 1 e o segundo disco no LUN 2, talvez não veja os discos corretamente de dentro da VM.

Nota

O valor do Azure host é 5 nesses exemplos, mas isso pode variar dependendo do tipo de armazenamento selecionado.

Esse comportamento de disco não é um problema do Azure, mas a maneira como o kernel Linux segue as especificações SCSI. Quando o kernel Linux verifica o barramento SCSI em busca de dispositivos conectados, um dispositivo deve ser encontrado no LUN 0 para que o sistema continue verificando dispositivos adicionais. Como tal:

  • Revise a saída de depois de adicionar um disco de lsscsi dados para verificar se você tem um disco no LUN 0.
  • Se o disco não aparecer corretamente na VM, verifique se existe um disco no LUN 0.

Próximos passos

  • Para garantir que sua VM Linux esteja configurada corretamente, revise as recomendações de desempenho de Otimizar sua máquina Linux.
  • Expanda sua capacidade de armazenamento adicionando mais discos e configure RAID para desempenho extra.