Adicionar um disco a uma VM com Linux
Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Linux
Este artigo mostra-lhe como anexar um disco persistente à VM para que possa preservar os seus dados, mesmo que a VM seja novamente aprovisionada devido a manutenção ou redimensionamento.
Anexar um novo disco a uma VM
Se quiser adicionar um disco de dados novo e vazio na VM, utilize o comando az vm disk attach com o --new
parâmetro . Se a VM estiver numa Zona de Disponibilidade, o disco é criado automaticamente na mesma zona que a VM. Para obter mais informações, veja Descrição geral do Zonas de Disponibilidade. O exemplo seguinte cria um disco com o nome myDataDisk com 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 anexação do disco foi reduzida, pelo que verá uma melhoria de até 15%. Isto é útil se tiver ativações pós-falha planeadas/não planeadas entre VMs, estiver a dimensionar a carga de trabalho ou estiver a executar uma carga de trabalho com estado de alta escala, como Azure Kubernetes Service. No entanto, esta melhoria está limitada ao comando explícito de anexação do disco, az vm disk attach
. Não verá a melhoria de desempenho se chamar um comando que possa executar implicitamente uma anexação, como az vm update
. Não precisa de efetuar nenhuma ação que não seja chamar o comando de anexação explícito para ver esta melhoria.
A latência inferior está atualmente disponível em todas as regiões públicas, exceto em:
- 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 transmita o ID para o comando az vm disk attach . O exemplo seguinte consulta um disco com o nome myDataDisk em myResourceGroup e, em seguida, anexa-o à VM com o nome 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 o novo disco para que a VM do Linux possa utilizá-lo, aceda SSH à VM. Para obter mais informações, veja como utilizar SSH com Linux no Azure. O exemplo seguinte liga-se a uma VM com o endereço IP público 10.123.123.25 com o nome de utilizador azureuser:
ssh azureuser@10.123.123.25
Localizar o disco
Depois de ligar à VM, localize o disco. Neste exemplo, estamos a utilizar para listar lsblk
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 adicionar vários discos e não tiver a certeza de que disco se baseia apenas no tamanho, pode aceder à página da VM no portal, selecionar Discos e verificar o número LUN do disco em Discos de dados. Compare o número LUN do portal com o último número da parte HTCL da saída, que é o LUN. Outra opção é listar os conteúdos do /dev/disk/azure/scsi1
diretório:
ls -l /dev/disk/azure/scsi1
O resultado 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, tem de utilizar a criação de partições GPT, se estiver abaixo de 2TiB, pode utilizar a criação de partições MBR ou GPT.
Nota
Recomenda-se que utilize a versão parted
mais recente que está disponível para a distribuição.
Se o tamanho do disco for de 2 tebibytes (TiB) ou superior, tem de utilizar a criação de partições GPT. Se o tamanho do disco for inferior a 2 TiB, pode utilizar a criação de partições MBR ou GPT.
O exemplo seguinte utiliza parted
em /dev/sdc
, que é onde o primeiro disco de dados estará normalmente na maioria das VMs. Substitua sdc
pela opção correta para o disco. Também estamos a formatá-lo com o sistema de ficheiros XFS .
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
sudo partprobe /dev/sdc
sudo mkfs.xfs /dev/sdc1
Utilize o partprobe
utilitário para se certificar de que o kernel tem conhecimento da nova partição e do sistema de ficheiros. A não utilização partprobe
pode fazer com que os comandos blkid ou lsblk não devolvam imediatamente o UUID do novo sistema de ficheiros.
Montar o disco
Agora, crie um diretório para montar o sistema de ficheiros com mkdir
. O exemplo seguinte cria um diretório em /datadrive
:
sudo mkdir /datadrive
Utilize mount
para, em seguida, montar o sistema de ficheiros. O exemplo seguinte monta a /dev/sdc1
partição no /datadrive
ponto de montagem:
sudo mount /dev/sdc1 /datadrive
Manter a montagem
Para garantir que a unidade é montada novamente automaticamente após um reinício, tem de ser adicionada ao /etc/fstab
ficheiro. Também é altamente recomendado que o UUID (Universally Unique Identifier) seja utilizado para /etc/fstab
fazer referência à unidade em vez de apenas ao nome do dispositivo (por exemplo, /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
O resultado é 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"
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 é recomendado que seja criada uma cópia de segurança do /etc/fstab
ficheiro antes de editar.
Em seguida, abra o /etc/fstab
ficheiro num editor de texto. Adicione uma linha ao final do ficheiro, utilizando o valor UUID para o /dev/sdc1
dispositivo que foi criado nos passos anteriores e o ponto de montagem de /datadrive
. Com o exemplo deste artigo, a nova linha terá o seguinte aspeto:
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
Quando terminar de editar o ficheiro, guarde e feche o editor.
Em alternativa, pode executar o seguinte comando para adicionar o disco ao /etc/fstab
ficheiro:
echo "UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2" >> /etc/fstab
Nota
Remover posteriormente um disco de dados sem editar fstab pode fazer com que a VM não arranque. A maioria das distribuições fornece as opções nofail e/ou nobootwait fstab. Estas opções permitem que um sistema arranque mesmo que o disco não seja montado no momento do arranque. Consulte a documentação da sua distribuição para obter mais informações sobre estes parâmetros.
A opção nofail garante que a VM é iniciada mesmo que o sistema de ficheiros esteja danificado ou o disco não exista no momento do arranque. Sem esta opção, poderá encontrar um comportamento conforme descrito em Não é possível fazer SSH para a VM do Linux devido a erros de FSTAB
A Consola de Série da VM do Azure pode ser utilizada para o acesso da consola à VM se a modificação do fstab tiver resultado numa falha de arranque. Estão disponíveis mais detalhes na documentação da Consola de Série.
Suporte TRIM/UNMAP para Linux no Azure
Alguns kernels do Linux suportam operações TRIM/UNMAP para eliminar blocos não utilizados no disco. Esta funcionalidade é essencialmente útil para informar o Azure de que as páginas eliminadas já não são válidas e podem ser eliminadas. Esta funcionalidade pode poupar dinheiro em discos que são faturados com base na quantidade de armazenamento consumido, como discos standard não geridos e instantâneos de disco.
Existem duas formas de ativar o suporte TRIM na VM do Linux. Como habitualmente, consulte a sua distribuição para obter a abordagem recomendada:
Utilize a opção
discard
de montagem 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 ter implicações de desempenho. Em alternativa, pode executar o comando manualmente afstrim
partir da linha de comandos ou adicioná-lo ao crontab para ser executado regularmente:
Resolução de problemas
Ao adicionar discos de dados a uma VM do Linux, poderá encontrar erros se um disco não existir no LUN 0. Se estiver a adicionar um disco manualmente com o az vm disk attach -new
comando e especificar um LUN (--lun
) em vez de permitir que a plataforma do Azure determine o LUN adequado, tenha em atenção que um disco já existe/existirá no LUN 0.
Considere o exemplo seguinte que mostra um fragmento 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 em LUN 0 e LUN 1 (a primeira coluna nos detalhes [host:channel:target:lun]
de lsscsi
saída ). Ambos os discos devem estar acessíveis a partir da VM. Se tiver especificado manualmente o primeiro disco a ser adicionado ao LUN 1 e ao segundo disco no LUN 2, poderá não ver os discos corretamente a partir da VM.
Nota
O valor do Azure host
é 5 nestes exemplos, mas pode variar consoante o tipo de armazenamento que selecionar.
Este comportamento do disco não é um problema do Azure, mas a forma como o kernel do Linux segue as especificações do SCSI. Quando o kernel do Linux analisa o barramento SCSI para dispositivos ligados, é necessário encontrar um dispositivo no LUN 0 para que o sistema continue a procurar dispositivos adicionais. Como tal:
- Reveja a saída de depois de adicionar um disco de
lsscsi
dados para verificar se tem um disco no LUN 0. - Se o disco não aparecer corretamente na VM, verifique se existe um disco no LUN 0.
Passos seguintes
- Para garantir que a VM do Linux está configurada corretamente, reveja as recomendações otimizar o desempenho do seu computador Linux .
- Expanda a capacidade de armazenamento ao adicionar mais discos e configurar o RAID para um desempenho adicional.