Crie e anexe um disco que não seja de arranque à sua máquina virtual (VM) através das instruções nesta página.
Antes de começar
Para usar os comandos da gdcloud
interface de linhas de comando (CLI), certifique-se de que transferiu, instalou e configurou a CLI gdcloud
.
Todos os comandos para a nuvem distribuída usam a CLI gdcloud
ou kubectl
e requerem um ambiente de sistema operativo (SO).
Obtenha o caminho do ficheiro kubeconfig
Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:
Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.
Use o caminho para o ficheiro kubeconfig do servidor da API de gestão para substituir
MANAGEMENT_API_SERVER
nestas instruções.
Peça autorizações e acesso
Para realizar as tarefas indicadas nesta página, tem de ter a função de administrador da máquina virtual do projeto. Siga os passos para
validar
que tem a função de administrador de máquinas virtuais do projeto (project-vm-admin
) no espaço de nomes
do projeto onde a VM reside.
Para operações de VM que usam a consola do GDC ou a CLI gdcloud,
peça ao administrador de IAM do projeto para lhe atribuir a função de administrador de máquinas virtuais do projeto e a função de visualizador do projeto (project-viewer
).
Anexe um disco a uma VM
Crie e anexe discos que não sejam de arranque à sua VM. Cada disco adicional pode especificar uma imagem personalizada ou um disco em branco. Pode adicionar vários discos em simultâneo a uma VM.
Consola
No menu de navegação, clique em Máquinas virtuais > Instâncias.
Na lista de VMs, clique no nome de uma VM para ver os respetivos detalhes.
Clique em Adicionar novo disco.
Na caixa de diálogo de confirmação, clique em Parar para parar a VM.
Aguarde alguns minutos até que a VM seja parada.
Clique em Atualizar.
Quando a VM estiver num estado parado, clique novamente em Adicionar novo disco.
Na caixa de diálogo Adicionar disco, escolha um disco novo ou um disco existente.
Para aprovisionar um novo disco, clique no separador Novo disco.
- No campo Nome do disco, introduza um novo nome de disco exclusivo para o projeto.
- No campo Tamanho, introduza um tamanho do disco entre 10 e 65 536 GiB. Por exemplo, 10 GiB.
- Na secção Regra de eliminação, clique em Manter disco ou Eliminar disco.
Para escolher um disco existente, clique no separador Disco existente.
- Na lista Disco, selecione um disco.
- Na secção Regra de eliminação, clique em Manter disco ou Eliminar disco.
Clique em Guardar. O disco aparece na lista de discos da VM.
API
Crie um
VirtualMachineDisk
:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ apply -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: NON_BOOT_BLANK_DISK spec: size: NON_BOOT_BLANK_DISK_SIZE EOF
Adicione o
VirtualMachineDisk
aoVirtualMachine
spec.disks
existente:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME
Edite o seguinte no editor de texto:
# … disks: - virtualMachineDiskRef: name: VM_BOOT_DISK_NAME boot: true - virtualMachineDiskRef: name: NON_BOOT_BLANK_DISK autoDelete: false # …
Substitua as variáveis com as seguintes definições.
Variável Definição MANAGEMENT_API_SERVER
O ficheiro kubeconfig do servidor da API Management. PROJECT
O projeto do Google Distributed Cloud air-gapped (GDC) no qual criar a VM. VM_NAME
O nome da nova VM. VM_BOOT_DISK_NAME
O nome do disco de arranque da VM NON_BOOT_BLANK_DISK
O nome do seu disco adicional. NON_BOOT_BLANK_DISK_SIZE
O tamanho dos seus discos adicionais, como 20G
.
Formate e monte um disco não inicializável
Depois de anexar um disco à VM, execute os passos necessários seguintes para o tornar acessível na VM.
Estabeleça ligação à VM
Formate o disco
Liste os discos associados à sua instância por número de série e localize o disco que quer formatar e montar.
ls -l /dev/disk/by-id/
Este exemplo de resultado mostra os nomes dos discos como números de série:
total 0 lrwxrwxrwx 1 root root 9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14 lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15 lrwxrwxrwx 1 root root 9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
As informações que seguem a seta,
->
, em cada linha indicam o nome do dispositivo de disco. Por exemplo, emscsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
, o número de série éscsi-SQEMU_QEMU_HARDDISK_vm-disk-data
e o nome do dispositivo ésdb
.Identifique o número de série do disco nesta lista.
Comportamento importante das funcionalidades situacionais que pode afetar a lista de números de série:
- Se o valor
virtualMachineDiskRef.name
tiver mais de 20 carateres, apenas os primeiros 20 carateres são usados como o número de série. - Se existirem dois discos com os mesmos primeiros 20 carateres, apenas o primeiro disco tem um número de série.
- Se o valor
Formate o disco:
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
- Substitua
DISK_ID
pelo número de série do disco que está a formatar. - Para este exemplo, especifique
scsi-SQEMU_QEMU_HARDDISK_vm-disk-data
para formatar todo o disco sem uma tabela de partições.
Para maximizar o desempenho do disco, use as opções de formatação recomendadas na flag -E
. Como não precisa de reservar espaço para o volume raiz no disco secundário, especifique -m 0
para usar todo o espaço disponível no disco.
Monte o disco
Crie um diretório que sirva como ponto de montagem para o novo disco. Pode usar qualquer diretório. O exemplo seguinte cria um diretório em
/mnt/disks/
:sudo mkdir -p /mnt/disks/MOUNT_DIR
Substitua
MOUNT_DIR
pelo diretório onde quer montar o disco.Monte o disco na instância e ative a opção de rejeição:
sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
Substitua o seguinte:
DISK_ID
com o número de série do disco a montar.MOUNT_DIR
com o diretório onde quer montar o disco.
Opcional: configure as autorizações de leitura e escrita no disco. O comando seguinte concede acesso de escrita,
a+w
, ao disco a todos os utilizadores.sudo chmod a+w /mnt/disks/MOUNT_DIR
Opcional: configure a montagem automática no reinício da VM: use o identificador único universal (UUID) ou o script de arranque.
Configure a montagem automática no reinício da VM: UUID do disco
Adicione o disco ao ficheiro /etc/fstab
para que o disco seja montado automaticamente novamente quando a VM for reiniciada. Num sistema operativo (SO), o nome do dispositivo
muda com cada reinício, mas o UUID do dispositivo aponta sempre para o mesmo volume,
mesmo quando move discos entre sistemas. Por conseguinte, use sempre o UUID do dispositivo para configurar a montagem automática no reinício da VM.
Crie uma cópia de segurança do seu ficheiro
/etc/fstab
atual:sudo cp /etc/fstab /etc/fstab.backup
Indique o UUID do disco:
sudo blkid /dev/DEVICE_NAME
O resultado de exemplo mostra o UUID de
accc19c5-d0d6-4157-9672-37d4e1d48eb5
para o disco/dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
DEVICE_NAME
é o nome do dispositivo do disco que quer montar automaticamente. Se criou uma tabela de partições no disco, especifique a partição que quer montar como um sufixo do nome do dispositivo. Por exemplo, sesdb
for o nome do dispositivo de disco e quiser montar a partição 1,DEVICE_NAME
torna-sesdb1
.Abra o ficheiro
/etc/fstab
num editor de texto e crie uma entrada que inclua o UUID:UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
Substitua o seguinte:
UUID_VALUE
com o discoUUID
, indicado como resultado do comando List the UUID.MOUNT_DIR
com o diretório onde montou o disco.MOUNT_OPTION
com o valorMOUNT_OPTION
para o seu SO, que especifica o que o SO faz se não conseguir montar o disco no momento do arranque.
Verifique se as entradas
/etc/fstab
estão corretas:cat /etc/fstab
Segue-se um exemplo de resultado:
LABEL=cloudimg-rootfs / ext4 defaults 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
Se desanexar este disco ou criar um instantâneo a partir do disco de arranque desta VM,
edite o ficheiro /etc/fstab
e remova a entrada para este disco. Mesmo que tenha
MOUNT_OPTION
definido como nofail
ou nobootwait
, mantenha o ficheiro /etc/fstab
sincronizado com os dispositivos associados à sua MV. Remova estas entradas
antes de criar o instantâneo do disco de arranque ou desassociar o disco.
Configure a montagem automática no reinício da VM: script de arranque da VM
Também pode usar um script de arranque para montar o disco em cada reinício adicionando os comandos de Montar o disco a um script de arranque. Antes de adicionar o script para montar o disco, formate-o com os comandos de Formatar o disco.
Crie o Secret do script de arranque.
cat <<EOF >>mount-disk-script #!/bin/bash mkdir -p /mnt/disks/MOUNT_DIR mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR EOF
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ create secret generic VM_NAME-mount-script \ --from-file=script=mount-disk-script
rm mount-disk-script
Adicione o script de arranque à VM.
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAME
Edite o
spec.startupScripts
para incluir o nome secreto.apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME namespace: PROJECT spec: # … startupScripts: - name: mount-script scriptSecretRef: name: VM_NAME-mount-script
Para mais informações sobre a configuração de scripts de arranque, consulte.