Adicionar um disco permanente à VM

Crie e anexe um disco que não é de inicialização à sua máquina virtual (VM) usando as instruções nesta página.

Antes de começar

Para usar os comandos da interface de linha de comando (CLI) gdcloud, verifique se você baixou, instalou e configurou a CLI gdcloud. Todos os comandos do Distributed Cloud usam a CLI gdcloud ou kubectl e exigem um ambiente de sistema operacional (SO).

Extrair o caminho do arquivo kubeconfig

Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management se você não tiver um.

  2. Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir MANAGEMENT_API_SERVER nestas instruções.

Solicitar permissões e acesso

Para executar as tarefas listadas nesta página, você precisa ter o papel de administrador de máquina virtual do projeto. Siga as etapas para verificar se você tem o papel de administrador de máquina virtual do projeto (project-vm-admin) no namespace do projeto em que a VM reside.

Para operações de VM usando o console do GDC ou a CLI gdcloud, peça ao administrador do IAM do projeto para atribuir a você os papéis de administrador de máquina virtual do projeto e leitor do projeto (project-viewer).

Anexar um disco a uma VM

Crie e anexe discos que não são de inicialização à VM. Cada disco adicional pode especificar uma imagem personalizada ou um disco em branco. É possível adicionar vários discos de uma só vez a uma VM.

Console

  1. No menu de navegação, clique em Virtual Machines > Instâncias.

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

  3. Clique em Adicionar disco novo.

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

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

  6. Clique em Atualizar.

  7. Quando a VM estiver parada, clique em Adicionar novo disco novamente.

  8. Na caixa de diálogo "Adicionar disco", escolha um disco novo ou um disco atual.

    • Para provisionar um novo disco, clique na guia Novo disco.

      1. No campo Nome do disco, insira um nome exclusivo para o projeto.
      2. No campo Tamanho, insira um tamanho de disco entre 10 e 65.536 GiB. Por exemplo, 10 GiB.
      3. Na seção Regra de exclusão, clique em Manter disco ou Excluir disco.
    • Para escolher um disco existente, clique na guia Disco existente.

      1. Na lista Disco, selecione um disco.
      2. Na seção "Regra de exclusão", clique em Manter disco ou Excluir disco.
  9. Clique em Salvar. 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. Pare a VM.

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

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Edite o seguinte no seu editor de texto:

    ...
    disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
        boot: true
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
        autoDelete: false
    ...
    

    Substitua as variáveis usando as seguintes definições.

    VariávelDefinição
    MANAGEMENT_API_SERVER O arquivo kubeconfig do servidor da API Management.
    PROJECT O projeto do Google Distributed Cloud isolado (GDC) em que a VM será criada.
    VM_NAMEO nome da nova VM.
    VM_BOOT_DISK_NAMEO nome do novo disco de inicialização da VM.
    NON_BOOT_BLANK_DISKO nome do seu disco adicional.
    NON_BOOT_BLANK_DISK_SIZEO tamanho dos seus discos adicionais, como 20G.
  4. Iniciar a VM.

Formatar e ativar um disco que não é de inicialização

Depois de anexar um disco à VM, execute as etapas necessárias a seguir para torná-lo acessível na VM.

Conectar-se à VM

Conecte-se por SSH à VM.

Formatar o disco

  1. Liste os discos anexados à instância por número de série e localize o disco que você quer formatar e ativar.

    ls -l /dev/disk/by-id/
    

    Este exemplo de saída 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 nessa lista.

    Comportamento importante de recursos contextuais que pode afetar a lista de números de série:

    • Se o valor virtualMachineDiskRef.name tiver mais de 20 caracteres, apenas os primeiros 20 caracteres serão usados como o número de série.
    • Se houver dois discos com os mesmos primeiros 20 caracteres, somente o primeiro terá 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 você está formatando.
  • Neste exemplo, especifique scsi-SQEMU_QEMU_HARDDISK_vm-disk-data para formatar todo o disco sem uma tabela de partição.

Para aumentar o desempenho do disco, use as opções de formatação recomendadas na sinalização -E. Como não é necessário reservar espaço para o volume raiz no disco secundário, especifique -m 0 para usar todo o espaço disponível.

Montar o disco

  1. Crie um diretório que sirva como ponto de ativação para o novo disco. É possível usar qualquer diretório. O exemplo a seguir cria um diretório em /mnt/disks/:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Substitua MOUNT_DIR pelo diretório em que você quer ativar o disco.

  2. Ative o disco na instância e habilite a opção de descarte:

    sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    

    Substitua:

    • DISK_ID com o número de série do disco a ser ativado.
    • MOUNT_DIR com o diretório em que você quer ativar o disco.
  3. Opcional: configure as permissões de leitura e gravação no disco. O comando a seguir concede acesso de gravação, a+w, ao disco para todos os usuários.

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. Opcional: configure a montagem automática na reinicialização da VM usando o identificador exclusivo universal (UUID) ou o script de inicialização.

Configurar a montagem automática na reinicialização da VM: UUID do disco

Adicione o disco ao arquivo /etc/fstab para que ele seja montado de novo automaticamente quando a VM for reiniciada. Em um sistema operacional (SO), o nome do dispositivo muda a cada reinicialização, mas o UUID do dispositivo sempre aponta para o mesmo volume, mesmo quando você move discos entre sistemas. Portanto, sempre use o UUID do dispositivo para configurar a montagem automática na reinicialização da VM.

  1. Crie um backup do seu arquivo /etc/fstab atual:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. Liste o UUID do disco:

      sudo blkid /dev/DEVICE_NAME
    

    O exemplo de saída 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 você quer ativar automaticamente. Se você criou uma tabela de partição no disco, especifique a partição que quer ativar como um sufixo do nome do dispositivo. Por exemplo, se sdb for o nome do dispositivo de disco e você quiser ativar a partição 1, DEVICE_NAME se tornará sdb1.

  3. Abra o arquivo /etc/fstab em um 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:

    • UUID_VALUE com o disco UUID, listado como a saída do comando Listar o UUID.
    • MOUNT_DIR com o diretório em que você ativou o disco.
    • MOUNT_OPTION com o valor MOUNT_OPTION para seu SO, que especifica o que o SO faz se não for possível ativar o disco durante a inicialização.
  4. Verifique se as entradas /etc/fstab estão corretas:

      cat /etc/fstab
    

    Confira um exemplo de saída:

      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 você desanexar esse disco ou criar um snapshot pelo disco de inicialização para essa VM, edite o arquivo /etc/fstab e exclua a entrada desse disco. Mesmo que você tenha MOUNT_OPTION definido como nofail ou nobootwait, mantenha o arquivo /etc/fstab sincronizado com os dispositivos anexados à VM. Remova essas entradas antes de criar o snapshot do disco de inicialização ou desanexar o disco.

Configurar a montagem automática na reinicialização da VM: script de inicialização da VM

Também é possível usar um script de inicialização para montar o disco em cada reinicialização adicionando os comandos de Montar o disco a um script de inicialização. Antes de adicionar o script para ativar o disco, formate-o usando os comandos em Formatar o disco.

  1. Crie o secret do script de inicialização.

    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 inicialização à VM.

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Edite o spec.startupScripts para incluir o nome do secret.

    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 como configurar scripts de inicialização, consulte.