Agregar un disco persistente a tu VM

Crea y conecta un disco que no sea de arranque a tu máquina virtual (VM) siguiendo las instrucciones de esta página.

Antes de comenzar

Para usar los comandos de la interfaz de línea de comandos (CLI) de gdcloud, asegúrate de haber descargado, instalado y configurado la CLI de gdcloud. Todos los comandos de Distributed Cloud usan la CLI de gdcloud o kubectl y requieren un entorno de sistema operativo (SO).

Obtén la ruta de acceso del archivo kubeconfig

Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:

  1. Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.

  2. Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar MANAGEMENT_API_SERVER en estas instrucciones.

Solicita permisos y acceso

Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de la VM del proyecto. Sigue los pasos para verificar que tienes el rol de administrador de máquinas virtuales del proyecto (project-vm-admin) en el espacio de nombres del proyecto en el que reside la VM.

Para las operaciones de VM con la consola de GDC o la CLI de gdcloud, solicita a tu administrador de IAM del proyecto que te asigne el rol de administrador de máquinas virtuales del proyecto y el rol de visualizador del proyecto (project-viewer).

Conecta un disco a una VM

Crea y conecta discos que no sean de arranque a tu VM. Cada disco adicional puede especificar una imagen personalizada o un disco en blanco. Puedes agregar varios discos a la vez a una VM.

Console

  1. En el menú de navegación, haz clic en Virtual Machines > Instances.

  2. En la lista de VMs, haz clic en el nombre de una VM para ver sus detalles.

  3. Haz clic en Agregar disco nuevo.

  4. En el diálogo de confirmación, haz clic en Detener para detener la VM.

  5. Espera unos minutos a que se detenga la VM.

  6. Haz clic en Actualizar.

  7. Cuando la VM esté en estado detenido, vuelve a hacer clic en Agregar disco nuevo.

  8. En el diálogo Agregar disco, elige un disco nuevo o uno existente.

    • Para aprovisionar un disco nuevo, haz clic en la pestaña Disco nuevo.

      1. En el campo Nombre del disco, ingresa un nombre de disco nuevo que sea único para el proyecto.
      2. En el campo Tamaño, ingresa un tamaño de disco entre 10 y 65,536 GiB. Por ejemplo, 10 GiB.
      3. En la sección Regla de eliminación, haz clic en Conservar disco o Borrar disco.
    • Para elegir un disco existente, haz clic en la pestaña Disco existente.

      1. En la lista Disco, selecciona un disco.
      2. En la sección Regla de eliminación, haz clic en Mantener disco o Borrar disco.
  9. Haz clic en Guardar. El disco aparece en la lista de discos de la VM.

  10. Reinicia la VM.

API

  1. Crea una 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. Detén la VM.

  3. Agrega VirtualMachineDisk al VirtualMachine spec.disks existente:

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

    Edita lo siguiente en tu editor de texto:

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

    Reemplaza las variables con las siguientes definiciones.

    VariableDefinición
    MANAGEMENT_API_SERVER Es el archivo kubeconfig del servidor de la API de Management.
    PROJECT Es el proyecto de Google Distributed Cloud (GDC) aislado del aire en el que se creará la VM.
    VM_NAMENombre de la VM nueva
    VM_BOOT_DISK_NAMENombre del nuevo disco de arranque de la VM.
    NON_BOOT_BLANK_DISKEs el nombre de tu disco adicional.
    NON_BOOT_BLANK_DISK_SIZEEl tamaño de tus discos adicionales, como 20G.
  4. Inicia la VM.

Formatea y activa un disco que no sea de arranque

Después de conectar un disco a la VM, realiza los siguientes pasos necesarios para que sea accesible dentro de la VM.

Conéctate a la VM

Conéctate a la VM a través de SSH.

Formatea el disco

  1. Enumera los discos conectados a tu instancia por número de serie y busca el disco que deseas formatear y activar.

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

    En este ejemplo de salida, se muestran los nombres de los discos como números de serie:

       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
    

    La información que sigue a la flecha, ->, en cada línea indica el nombre del dispositivo de disco. Por ejemplo, en scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb, el número de serie es scsi-SQEMU_QEMU_HARDDISK_vm-disk-data y el nombre del dispositivo es sdb.

  2. Identifica el número de serie del disco en esta lista.

    Comportamiento importante de las funciones situacionales que puede afectar la lista de números de serie:

    • Si el valor de virtualMachineDiskRef.name tiene más de 20 caracteres, solo se usarán los primeros 20 como número de serie.
    • Si hay dos discos con los mismos primeros 20 caracteres, solo el primer disco tiene un número de serie.
  3. Formatea el disco:

   sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
  • Reemplaza DISK_ID por el número de serie del disco que estás formateando.
  • Para este ejemplo, especifica scsi-SQEMU_QEMU_HARDDISK_vm-disk-data para formatear todo el disco sin una tabla de particiones.

Si quieres maximizar el rendimiento del disco, usa las opciones de formato recomendadas en la marca -E. Como no necesitas reservar espacio para el volumen raíz en tu disco secundario, especifica -m 0 para usar todo el espacio disponible en el disco.

Activa el disco

  1. Crea un directorio que sirva como punto de activación para el disco nuevo. Puedes usar cualquier directorio. En el siguiente ejemplo, se crea un directorio en /mnt/disks/:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Reemplaza MOUNT_DIR por el directorio en el que deseas activar el disco.

  2. Activa el disco en la instancia y habilita la opción de descarte:

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

    Reemplaza lo siguiente:

    • DISK_ID con el número de serie del disco que se activará.
    • MOUNT_DIR con el directorio en el que deseas activar el disco.
  3. Opcional: Configura los permisos de lectura y escritura en el disco. El siguiente comando otorga acceso de escritura, a+w, al disco para todos los usuarios.

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. Opcional: Configura la activación automática cuando se reinicia la VM con el identificador único universal (UUID) o la secuencia de comandos de inicio.

Configura la activación automática cuando se reinicia la VM: UUID del disco

Agrega el disco a tu archivo /etc/fstab para que el disco se vuelva a activar automáticamente cuando se reinicie la VM. En un sistema operativo (SO), el nombre del dispositivo cambia con cada reinicio, pero el UUID del dispositivo siempre apunta al mismo volumen, incluso cuando mueves los discos entre sistemas. Por lo tanto, siempre usa el UUID del dispositivo para configurar la activación automática cuando se reinicia la VM.

  1. Crea una copia de seguridad del archivo /etc/fstab actual:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. Enumera el UUID del disco:

      sudo blkid /dev/DEVICE_NAME
    

    En el resultado de ejemplo, se muestra el UUID de accc19c5-d0d6-4157-9672-37d4e1d48eb5 para el disco.

      /dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
    

    DEVICE_NAME es el nombre del dispositivo del disco que quieres activar de manera automática. Si creaste una tabla particionada en el disco, especifica la partición que quieras activar como sufijo del nombre del dispositivo. Por ejemplo, si sdb es el nombre del dispositivo de disco y deseas activar la partición 1, DEVICE_NAME se convierte en sdb1.

  3. Abre el archivo /etc/fstab en un editor de texto y crea una entrada que incluya el UUID:

      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

    Reemplaza lo siguiente:

    • UUID_VALUE con el disco UUID, que se muestra como resultado del comando List the UUID
    • MOUNT_DIR por el directorio en el que activaste tu disco.
    • MOUNT_OPTION con el valor MOUNT_OPTION para tu SO, que especifica lo que hace el SO si no puede activar el disco en el momento del inicio.
  4. Verifica que tus entradas /etc/fstab sean correctas:

      cat /etc/fstab
    

    A continuación, se muestra un ejemplo del 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
    

Si desconectas este disco o creas una instantánea desde el disco de arranque para esta VM, edita el archivo /etc/fstab y quita la entrada de este disco. Incluso si tienes MOUNT_OPTION configurado en nofail o nobootwait, mantén el archivo /etc/fstab sincronizado con los dispositivos que se conectan a tu VM. Quita estas entradas antes de crear la instantánea del disco de arranque o desconectar el disco.

Configura la activación automática cuando se reinicia la VM: secuencia de comandos de inicio de la VM

También puedes usar una secuencia de comandos de inicio para activar el disco en cada reinicio. Para ello, agrega los comandos de Cómo activar el disco a una secuencia de comandos de inicio. Antes de agregar la secuencia de comandos para activar el disco, formatea el disco con los comandos de Formatea el disco.

  1. Crea el secreto de la secuencia de comandos de inicio.

    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. Agrega la secuencia de comandos de inicio a la VM.

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

    Edita spec.startupScripts para incluir el nombre del 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
    

Consulta más información para configurar secuencias de comandos de inicio.