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
- 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 mkdir
o . 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 ofstrim
comando manualmente a partir da linha de comando ou adicioná-lo ao seu crontab para ser executado regularmente:
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.