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_SERVERnestas 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 EOFAdicione o
VirtualMachineDiskaoVirtualMachinespec.disksexistente:kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMEEdite 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_SERVERO ficheiro kubeconfig do servidor da API Management. PROJECTO projeto do Google Distributed Cloud air-gapped (GDC) no qual criar a VM. VM_NAMEO nome da nova VM. VM_BOOT_DISK_NAMEO nome do disco de arranque da VM NON_BOOT_BLANK_DISKO nome do seu disco adicional. NON_BOOT_BLANK_DISK_SIZEO 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 -> ../../sdbAs 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-datae 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.nametiver 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_IDpelo número de série do disco que está a formatar. - Para este exemplo, especifique
scsi-SQEMU_QEMU_HARDDISK_vm-disk-datapara 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_DIRSubstitua
MOUNT_DIRpelo 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_DIRSubstitua o seguinte:
DISK_IDcom o número de série do disco a montar.MOUNT_DIRcom 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_DIROpcional: 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/fstabatual:sudo cp /etc/fstab /etc/fstab.backupIndique o UUID do disco:
sudo blkid /dev/DEVICE_NAMEO resultado de exemplo mostra o UUID de
accc19c5-d0d6-4157-9672-37d4e1d48eb5para 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, sesdbfor o nome do dispositivo de disco e quiser montar a partição 1,DEVICE_NAMEtorna-sesdb1.Abra o ficheiro
/etc/fstabnum editor de texto e crie uma entrada que inclua o UUID:UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2Substitua o seguinte:
UUID_VALUEcom o discoUUID, indicado como resultado do comando List the UUID.MOUNT_DIRcom o diretório onde montou o disco.MOUNT_OPTIONcom o valorMOUNT_OPTIONpara 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/fstabestão corretas:cat /etc/fstabSegue-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 EOFkubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ create secret generic VM_NAME-mount-script \ --from-file=script=mount-disk-scriptrm mount-disk-scriptAdicione o script de arranque à VM.
kubectl --kubeconfig MANAGEMENT_API_SERVER \ -n PROJECT \ edit virtualmachines.virtualmachine.gdc.goog VM_NAMEEdite o
spec.startupScriptspara 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.