Neste documento, descrevemos como usar a nomenclatura de dispositivos persistentes na VM Linux.
Para VMs que usam um sistema operacional Linux, os nomes de dispositivos, como /dev/sda
,
podem mudar depois que você executar procedimentos como os seguintes:
- Como iniciar e interromper uma VM
- Como desconectar e reconectar discos
- Como mudar tipos de máquina
Essa mudança ocorre porque os nomes dos dispositivos são atribuídos de um intervalo disponível depois que uma VM é iniciada ou um dispositivo é anexado. Remover um dispositivo ou interromper a VM libera o nome do dispositivo. Quando o dispositivo é reconectado ou a VM reiniciada, um novo nome de dispositivo é atribuído do intervalo disponível. O kernel do Linux não garante a ordenação do dispositivo após reinicializações.
Uma mudança no nome do dispositivo pode fazer com que todos os aplicativos ou scripts que dependem do nome original do dispositivo não funcionem corretamente ou que a VM não seja inicializada após uma reinicialização.
Para evitar esse problema, é recomendável usar a nomenclatura de dispositivos permanentes ao se referir a discos e partições nas VMs do Linux. Também é possível usar links simbólicos.
Antes de começar
- Revise o gerenciamento de dispositivos do seu sistema operacional Linux:
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
nvme0n1
: Persistent Disknvme0n1p1
nvme0n1p2
nvme0n2
: Hyperdisknvme0n2p1
nvme0n2p2
nvme1n1
: primeiro SSD localnvme2n1
: segundo SSD local- Usando um rótulo. Essa opção precisa que os sistemas de arquivos sejam compatíveis com rótulos e que você adicione um rótulo às partições de disco.
- usando uma partição ou um disco UUID Um UUID é gerado quando um disco é criado com uma tabela de partição, e o UUID é exclusivo por partição.
- Usando um ID de disco permanente (
/dev/disk/by-id
) do Persistent Disk ou Google Cloud Hyperdisk, ou um link simbólico, baseado no nome do recurso de disco. - Conectar-se à VM.
Se você não souber o nome do dispositivo de disco, encontre-o usando o link simbólico.
ls -l /dev/disk/by-id/google-*
O resultado será assim:
lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm -> ../../sda lrwxrwxrwx 1 root root 10 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Oct 23 15:58 /dev/disk/by-id/google-my-vm-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Oct 23 15:58 /dev/disk/by-id/google-my-vm-app-data -> ../../nvme0n1
Recupere o UUID da partição do disco executando um dos seguintes comandos:
blkid
sudo blkid -s UUID
O resultado será assim:
/dev/sda1: UUID="4f570f2d-fffe-4c7d-8d8f-af347af7612a" /dev/sda15: UUID="E0B2-DFAF" /dev/nvme0n1: UUID="9e617251-6a92-45ff-ba40-700a9bdeb03e"
ls -l
sudo ls -l /dev/disk/by-uuid/
O resultado será assim:
lrwxrwxrwx 1 root root 10 Sep 22 18:12 4f570f2d-fffe-4c7d-8d8f-af347af7612a -> ../../sda1 lrwxrwxrwx 1 root root 13 Sep 22 18:15 9e617251-6a92-45ff-ba40-700a9bdeb03e -> ../../nvme0n1 lrwxrwxrwx 1 root root 11 Sep 22 18:12 E0B2-DFAF -> ../../sda15
Adicione uma entrada para o UUID do seu dispositivo no arquivo
/etc/fstab
.UUID=9e617251-6a92-45ff-ba40-700a9bdeb03e /data ext4 defaults 0 0
Nesse exemplo,
/data
é o ponto de montagem eext4
é o tipo de sistemas de arquivos.Execute
mount -av
para confirmar que o dispositivo está ativado corretamente.sudo mount -av
Se o dispositivo for ativado corretamente, a saída será semelhante a esta:
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this filesystem. For more details see restorecon(8) and mount(8). /data : successfully mounted
- Conectar-se à VM.
Execute o comando a seguir para recuperar o ID no disco
sudo ls -lh /dev/disk/by-id/google-*
O resultado será assim:
lrwxrwxrwx. 1 root root 9 May 16 17:34 google-disk-2 -> ../../sdb lrwxrwxrwx. 1 root root 9 May 16 09:09 google-persistent-disk-0 -> ../../sda lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 May 16 09:09 google-persistent-disk-0-part2 -> ../../sda2
Para
NVME
discos, a saída será semelhante a estalrwxrwxrwx 1 root root 13 Jun 1 10:27 google-disk-3 -> ../../nvme0n2 lrwxrwxrwx 1 root root 13 Jun 1 10:25 google-t2a -> ../../nvme0n1 lrwxrwxrwx 1 root root 15 Jun 1 10:25 google-t2a-part1 -> ../../nvme0n1p1 lrwxrwxrwx 1 root root 16 Jun 1 10:25 google-t2a-part15 -> ../../nvme0n1p15
Adicione o link simbólico ao arquivo
/etc/fstab
./dev/disk/by-id/google-disk-2 /data ext4 defaults 0 0
Execute
mount -av
para confirmar que o dispositivo está ativado corretamente.sudo mount -av
Se o dispositivo for ativado corretamente, a saída será semelhante a esta:
/ : ignored /boot/efi : already mounted mount: /data does not contain SELinux labels. You just mounted an file system that supports labels which does not contain labels, onto an SELinux box. It is likely that confine applications will generate AVC messages and not be allowed access to this file system. For more details see restorecon(8) and mount(8). /data : successfully mounted
Nomenclatura de dispositivos em VMs do Linux
Os nomes de dispositivos Linux dos discos anexados à VM dependem da interface escolhida ao criar os discos. Quando você usa o
lsblk
comando do sistema operacional para visualizar os dispositivos de disco, ele exibe o prefixonvme
para discos anexados à interface NVMe e o prefixosd
para discos anexados com a interface SCSI.A ordem dos números de disco ou dos controladores NVMe não é previsível nem consistente entre as reinicializações das VMs. Na primeira inicialização, um disco permanente pode ser
nvme0n1
(ousda
para SCSI). Na segunda inicialização, o nome de dispositivo do mesmo disco permanente pode sernvme2n1
ounvme0n3
(ousdc
para SCSI).Ao acessar os discos anexados, use os links simbólicos criados em
/dev/disk/by-id/
. Esses nomes persistem após as reinicializações. Para mais informações sobre links simbólicos, consulte Links simbólicos para discos anexados a uma VM.Nomes de dispositivos SCSI
O formato de um dispositivo de disco anexado a SCSI é
sda
para o primeiro disco anexado. As partições do disco aparecem comosda1
. Cada disco extra usa uma letra sequencial, comosdb
esdc
. Quandosdz
for alcançado, os próximos discos adicionados terão nomes comosdaa
,sdab
esdac
, atésddx
.Nomes de dispositivos NVMe
O formato de um dispositivo de disco anexado ao NVMe nos sistemas operacionais Linux é
nvmenumbernnamespace
. Onumber
representa o número do controlador de disco NVMe, e namespace é um ID de espaço de nome do NVMe atribuído pelo controlador de disco NVMe. Para partições, pn é anexado ao nome do dispositivo, em que n é um número, começando com 1, que indica o na partição.O número do controlador começa em
0
. Um único disco NVMe anexado à instância de computação tem um nome de dispositivonvme0n1
. A maioria dos tipos de máquina usa um único controlador de disco NVMe. Os nomes dos dispositivos NVMe sãonvme0n1
,nvme0n2
,nvme0n3
e assim por diante.Os discos SSD locais conectados a séries de máquinas de terceira geração ou instâncias mais recentes têm um controlador NVMe separado para cada disco. Nessas VMs, os nomes dos dispositivos anexados a NVMe do SSD local são semelhantes a
nvme0n1
,nvme1n1
envme2n1
. O número de discos SSD locais anexados depende do tipo de máquina da VM.As instâncias de computação baseadas em séries de máquinas de terceira geração ou mais recentes usam NVMe para o Persistent Disk e o Google Cloud Hyperdisk, além de discos SSD locais. Cada VM tem um controlador NVMe para o Persistent Disk e o Hyperdisk e um controlador NVMe para cada disco SSD local. O controlador NVMe do Persistent Disk e do Hyperdisk tem um único namespace NVMe para todos os discos anexados. Portanto, uma instância da série de máquinas de terceira geração com um Persistent Disk e um Hyperdisk (cada um com duas partições) e dois discos SSD locais não formatados usa os seguintes nomes de dispositivos:
Usar nomenclatura de dispositivo permanente
Para configurar um nome de dispositivo permanente, atribua um nome de ponto de montagem ao dispositivo de disco no arquivo
fstab
. Há três maneiras de configurar um nome de dispositivo permanente.Recomendamos usar o UUID da partição ou o link simbólico para VMs do Linux.
UUID da partição
Para encontrar o UUID de um disco, execute as seguintes etapas:
ID do disco permanente
Para encontrar o nome do dispositivo de disco usando o ID do disco permanente, ou o link simbólico, conclua as seguintes etapas:
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-12-22 UTC.
-