Adicionar um disco a uma VM do Linux
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Este artigo mostra a você como anexar um disco persistente à sua VM para que você possa preservar dados, mesmo que sua VM seja provisionada novamente devido à manutenção ou ao redimensionamento.
Anexar um novo disco a uma VM
Se você quiser adicionar um disco de dados novo vazio em sua VM, use o comando az vm disk attach com o parâmetro --new
. 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 de zonas de disponibilidade. O exemplo a seguir cria um disco chamado myDataDisk que tem tamanho de 50 Gb:
az vm disk attach \
-g myResourceGroup \
--vm-name myVM \
--name myDataDisk \
--new \
--size-gb 50
Menor latência
Nas regiões selecionadas, a latência de anexação do disco foi reduzida, ou seja, você verá um aprimoramento de até 15%. Isso será útil se você tiver failovers planejados/não planejados entre VMs, estiver escalando sua carga de trabalho ou estiver executando uma carga de trabalho com estado de alta escala, como o Serviço de Kubernetes do Azure. No entanto, esse aprimoramento é limitado ao comando de anexação de disco explícito, az vm disk attach
. Você não verá o aprimoramento de desempenho se chamar um comando que possa executar implicitamente uma anexação, como az vm update
. Você não precisa realizar nenhuma ação além de chamar o comando de anexação explícito para ver esse aprimoramento.
Atualmente, a latência mais baixa está disponível em todas as regiões públicas, exceto:
- Canadá Central
- Centro dos EUA
- Leste dos EUA
- Leste dos EUA 2
- Centro-Sul dos Estados Unidos
- Oeste dos EUA 2
- Norte da Alemanha
- Oeste da Índia JIO
- Norte da Europa
- Europa Ocidental
Anexar um disco existente
Para anexar um disco existente, localize a ID do disco e passe-a para o comando az vm disk attach. A exemplo a seguir consulta em busca de um disco chamado myDataDisk em myResourceGroup, em seguida, anexa-o à VM denominada 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 participar, formatar e montar o novo disco para que sua VM do Linux possa usá-lo, Secure Shell em sua VM. Para saber mais, confira Como usar o SSH com o Linux no Azure. O seguinte exemplo se conecta a uma VM com o endereço IP público 10.123.123.25 e o nome de usuário azureuser:
ssh azureuser@10.123.123.25
Localize o disco
Após 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"
A saída deverá ser 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 desejamos, pois ele tem 50G. Se você adicionar vários discos e não tiver certeza quanto ao disco baseando-se apenas no tamanho, acesse a página da VM no portal, selecione Discos e verifique o número LUN do disco em Discos de dados. Compare o número de LUN do portal com o último número da parte HTCL da saída, que é o LUN. Outra opção é listar o conteúdo do diretório /dev/disk/azure/scsi1
:
ls -l /dev/disk/azure/scsi1
A saída deve ser semelhante ao seguinte exemplo:
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, você deverá usar o particionamento GPT e, se for menor que 2 TiB, você poderá usar o particionamento MBR ou GPT.
Observação
É recomendável que você use a versão mais recente de parted
disponível para sua distribuição.
Se o tamanho do disco for de 2 tebibytes (TiB) ou mais, use o particionamento GPT. Se o tamanho do disco for menor que 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 seu disco. Também o 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 utilitário partprobe
para garantir que o kernel esteja ciente da nova partição e do novo sistema de arquivos. Deixar de usar partprobe
pode fazer com que os comandos blkid ou lsblk não retornem o UUID do novo sistema de arquivos imediatamente.
Monte o disco
Agora, crie um diretório para montar o novo sistema de arquivos usando o mkdir
. O exemplo a seguir cria um diretório em /datadrive
:
sudo mkdir /datadrive
Use mount
para montar então o sistema de arquivos. O exemplo a seguir monta a partição /dev/sdc1
para o ponto de montagem /datadrive
:
sudo mount /dev/sdc1 /datadrive
Persista a montagem
Para garantir que a unidade seja remontada automaticamente após uma reinicialização, ela deve ser adicionada ao arquivo /etc/fstab
. Além disso, é altamente recomendável que o UUID (identificador universal exclusivo) seja usado em /etc/fstab
para fazer referência à unidade, e não apenas ao nome do dispositivo (como, /dev/sdc1). Se o sistema operacional detectar um erro de disco durante a inicialização, usar o UUID evita que o disco incorreto seja montado em um determinado local. Os discos de dados restantes seriam então atribuídos a essas mesmas IDs de dispositivo. Para localizar o UUID da nova unidade, use o utilitário blkid
:
sudo blkid
A saída deve ser semelhante ao seguinte exemplo:
/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"
Observação
A edição inadequada do arquivo /etc/fstab
pode resultar em um sistema não inicializável. Se não tiver certeza, consulte a documentação de distribuição para obter informações sobre como editá-lo corretamente. Também é recomendável que um backup do arquivo /etc/fstab
seja criado antes da edição.
Em seguida, abra o arquivo /etc/fstab
em um editor de texto. Adicione uma linha ao final do arquivo, usando o valor UUID para o dispositivo /dev/sdc1
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 arquivo /etc/fstab
:
echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2" >> /etc/fstab
Observação
Remover um disco de dados posteriormente sem editar fstab pode fazer com que a VM falhe ao ser inicializada. A maioria das distribuições fornecem as opções de fstab nofail e/ou nobootwait. Essas opções permitem que um sistema inicialize mesmo se o disco não for montado no momento da inicialização. Consulte a documentação da distribuição para obter mais informações sobre esses parâmetros.
A opção nofail garante que a VM inicie mesmo que o sistema de arquivos esteja corrompido ou que o disco não exista no momento da inicialização. Sem essa opção, você poderá encontrar um comportamento conforme descrito em Não é possível conectar-se a uma VM Linux via SSH devido a erros no FSTAB
O Console Serial da VM do Azure pode ser usado para acesso ao console para sua VM se a modificação de fstab resultou em uma falha de inicialização. Mais detalhes estão disponíveis na Documentação do Console Serial.
Suporte a TRIM/UNMAP para Linux no Azure
Alguns kernels Linux permitem operações TRIM/UNMAP para descartar os blocos não utilizados no disco. Esse recurso é útil principalmente 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 investimentos 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 do Linux. Como de costume, consulte sua distribuição para obter a abordagem recomendada:
Use a opção de montagem
discard
em/etc/fstab
, por exemplo:UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2
Em alguns casos, a opção
discard
pode afetar o desempenho. Como alternativa, você pode executar o comandofstrim
manualmente na linha de comando ou adicioná-lo a crontab para ser executado normalmente:
Solução de problemas
Ao adicionar discos de dados a uma VM Linux, você poderá encontrar erros se não existir um disco no LUN 0. Se você estiver adicionando um disco manualmente usando o comando az vm disk attach -new
e especificar um LUN (--lun
) em vez de deixar que a plataforma Azure determine o LUN apropriado, verifique com atenção se já existe (ou existirá) um disco no LUN 0.
Considere o exemplo a seguir que mostra um snippet da saída do 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 da saída de lsscsi
[host:channel:target:lun]
). Ambos os discos devem estar acessíveis na VM. Se você tivesse especificado manualmente o primeiro disco para ser adicionado ao LUN 1 e o segundo disco ao LUN 2, os discos não apareceriam corretamente para a VM.
Observação
O valor de host
do Azure é 5 nestes exemplos, mas ele poderá variar dependendo do tipo de armazenamento selecionado.
Esse comportamento de disco não é um problema do Azure, mas da maneira em que o kernel do Linux segue as especificações do SCSI. Quando o kernel do Linux verifica os dispositivos conectados no barramento do SCSI, um dispositivo deve estar presente no LUN 0 para que o sistema continue a verificar outros dispositivos. Assim:
- Examine a saída do
lsscsi
depois de adicionar um disco de dados para verificar se há um disco no LUN 0. - Se o disco não aparecer corretamente para a VM, verifique se existe um disco no LUN 0.
Próximas etapas
- Para garantir que a VM Linux seja configurada corretamente, leia as recomendações em Otimizar sua VM do Linux no Azure .
- Expanda a capacidade de armazenamento adicionando mais discos e configure o RAID para obter desempenho extra.