Compartilhar via


Formatar e montar discos gerenciados

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Este artigo aborda como formatar, montar e persistir discos gerenciados em VMs (máquinas virtuais) linux do Azure. Os discos gerenciados são armazenamento persistente anexado à VM que pode usar interfaces SCSI ou NVMe, dependendo do tamanho da VM.

Pré-requisitos

Antes de formatar e montar um disco de dados, verifique se você tem:

Aviso

Sempre verifique se você está trabalhando com o disco correto antes da formatação. A formatação do disco errado pode resultar em perda de dados.

Formatar o disco

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

Depois de identificar o disco correto (por exemplo, /dev/nvme0n2 para um disco de dados), você pode formatá-lo:

O exemplo a seguir usa parted em /dev/sdc, que é onde o primeiro disco de dados normalmente está na maioria das VMs. Substitua sdc pela opção correta para o disco. Ele também formata o disco 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 sistema de arquivos. Se você não usarpartprobe, os blkid comandos e os lsblk comandos não retornarão imediatamente a UUID para o novo sistema de arquivos.

Montar o disco

Agora, crie um diretório para montar o sistema de arquivos usando mkdir. 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 partição /dev/sdc1 (para SCSI) ou /dev/nvme0n2p1 (para NVMe) no ponto de montagem /datadrive.

# Mount the disk identified earlier (replace sdc1 with your identified disk's partition)
sudo mount /dev/sdc1 /datadrive

Você também pode usar o caminho de acesso ao dispositivo no Azure:

sudo mount /dev/disk/azure/scsi1/lun0-part1 /datadrive

Persista a montagem

Para garantir que a unidade seja remontada automaticamente após uma reinicialização, adicione-a ao /etc/fstab arquivo.

É altamente recomendável que a UUID (Identificador Universalmente Exclusivo) seja usada no /etc/fstab, para referenciar à unidade em vez do caminho do dispositivo (como /dev/sdc1). Os caminhos do dispositivo não são persistentes e são alterados na reinicialização. Para localizar a UUID da nova unidade, use o blkid utilitário:

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"

Aviso

A edição incorreta do arquivo /etc/fstab pode resultar em um sistema não inicializável. Se você não tiver certeza, consulte a documentação da distribuição para obter informações sobre como editar corretamente esse arquivo. Você também deve criar um backup do /etc/fstab arquivo antes da 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 disco que foi criado nas etapas anteriores e o ponto de montagem de /datadrive. Usando o exemplo deste artigo, a nova linha se pareceria com o seguinte:

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:

# For SCSI disks
UUID=$(sudo blkid -s UUID -o value /dev/sdc1)
echo "UUID=$UUID   /datadrive   xfs   defaults,nofail   1   2" | sudo tee -a /etc/fstab

# For NVMe disks
UID=$(sudo blkid -s UUID -o value /dev/nvme1n1p1)
echo "UUID=$UUID   /datadrive   xfs   defaults,nofail   1   2" | sudo tee -a /etc/fstab

Observação

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

A nofail opção 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 um comportamento descrito em não é possível conectar-se via SSH a uma VM Linux devido a erros FSTAB

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

Suporte a TRIM/UNMAP para Linux no Azure

Alguns kernels do Linux dão suporte a operações TRIM/UNMAP para descartar blocos não utilizados no disco. Esse recurso é útil principalmente para informar ao Azure 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 do Linux. Como de costume, consulte sua distribuição para obter a abordagem recomendada:

• Use 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. Como alternativa, você pode executar o fstrim comando manualmente na linha de comando ou adicioná-lo ao 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ê poderá 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, tome cuidado para que um disco já exista/exista no LUN 0.

Considere o exemplo a seguir mostrando um snippet 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 da saída de lsscsi[host:channel:target:lun]). Ambos os discos devem estar acessíveis de dentro da VM. Se você tiver especificado manualmente o primeiro disco a ser adicionado ao LUN 1 e ao segundo disco no LUN 2, talvez não veja os discos corretamente de dentro da VM.

Observação

O valor do Azure host é 5 nestes 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 do Linux segue as especificações do SCSI. Quando o kernel do Linux verifica o barramento SCSI em busca de dispositivos anexados, um dispositivo deve ser encontrado no LUN 0 para que o sistema continue verificando dispositivos adicionais. Como tal:

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