Adicione um disco persistente à sua VM

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 o dispositivo isolado do GDC 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:

  1. Localize o nome do servidor da API Management ou pergunte ao administrador da plataforma (PA) qual é o nome do servidor.

  2. Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.

  3. Use o caminho para substituir MANAGEMENT_API_SERVER{"</var>"}} 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 ou pedir ao administrador de IAM do projeto que lhe atribua 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

  1. No menu de navegação, clique em Máquinas virtuais > Instâncias.

  2. Na lista de VMs, clique no nome de uma VM para ver os respetivos detalhes.

  3. Clique em Adicionar novo disco.

  4. Na caixa de diálogo de confirmação, clique em Parar para parar a VM.

  5. Aguarde alguns minutos até que a VM seja parada.

  6. Clique em Atualizar.

  7. Quando a VM estiver num estado parado, clique novamente em Adicionar novo disco.

  8. 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.

      1. No campo Nome do disco, introduza um novo nome de disco exclusivo para o projeto.
      2. No campo Tamanho, introduza um tamanho do disco entre 10 e 65 536 GiB. Por exemplo, 10 GiB.
      3. Na secção Regra de eliminação, clique em Manter disco ou Eliminar disco.
    • Para escolher um disco existente, clique no separador Disco existente.

      1. Na lista Disco, selecione um disco.
      2. Na secção Regra de eliminação, clique em Manter disco ou Eliminar disco.
  9. Clique em Guardar. O disco aparece na lista de discos da VM.

  10. Reinicie a VM.

API

  1. Crie um VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_BLANK_DISK
    spec:
      size: NON_BOOT_BLANK_DISK_SIZE
    EOF
    
  2. Parar a VM.

  3. Adicione o VirtualMachineDisk ao VirtualMachine spec.disks existente:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT 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ávelDefinição
    MANAGEMENT_API_SERVER O ficheiro kubeconfig do servidor da API Management.
    PROJECT O projeto do dispositivo isolado do Google Distributed Cloud (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.
  4. Inicie a VM.

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

Estabeleça ligação SSH à VM.

Formate o disco

  1. 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, em scsi-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.

  2. 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.
  3. 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

  1. 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.

  2. 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.
  3. 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
    
  4. 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.

  1. Crie uma cópia de segurança do seu ficheiro /etc/fstab atual:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. 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, se sdb for o nome do dispositivo de disco e quiser montar a partição 1, DEVICE_NAME torna-se sdb1.

  3. 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 disco UUID, indicado como resultado do comando List the UUID.
    • MOUNT_DIR com o diretório onde montou o disco.
    • MOUNT_OPTION com o valor MOUNT_OPTION para o seu SO, que especifica o que o SO faz se não conseguir montar o disco no momento do arranque.
  4. 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.

  1. 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 create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
    
    rm mount-disk-script
    
  2. Adicione o script de arranque à VM.

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT 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.