Añadir un disco persistente a tu máquina virtual

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

Antes de empezar

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

Obtener la ruta del archivo kubeconfig

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

  1. Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.

  2. Usa la ruta al archivo kubeconfig del servidor de la API Management para sustituir MANAGEMENT_API_SERVER en estas instrucciones.

Solicitar permisos y acceso

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

Para realizar operaciones con VMs mediante la consola de GDC o la CLI de gdcloud, pide al administrador de gestión de identidades y accesos de tu proyecto que te asigne el rol Administrador de VirtualMachine de proyecto y el rol Lector de proyectos (project-viewer).

Acoplar un disco a una VM

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

Consola

  1. En el menú de navegación, haz clic en Máquinas virtuales > Instancias.

  2. En la lista de máquinas virtuales, haga clic en el nombre de una máquina virtual para ver sus detalles.

  3. Haz clic en Añadir disco.

  4. En el cuadro de 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 Renovar.

  7. Cuando la VM esté detenida, vuelve a hacer clic en Añadir nuevo disco.

  8. En el cuadro de diálogo Añadir disco, elija un disco nuevo o uno que ya tenga.

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

      1. En el campo Nombre del disco, introduce un nombre de disco único para el proyecto.
      2. En el campo Tamaño, introduce 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 Eliminar disco.
    • Para elegir un disco ya creado, haz clic en la pestaña Disco ya creado.

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

  10. Reinicia la VM.

API

  1. Crea un 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. Añade VirtualMachineDisk al spec.disks de VirtualMachine:

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

    Sustituye las variables con las siguientes definiciones.

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

Formatear y montar un disco que no sea de arranque

Después de conectar un disco a la VM, sigue los pasos necesarios para que se pueda acceder a él desde la VM.

Conéctate a la VM.

Accede a la VM a través de SSH.

Formatear el disco

  1. Lista los discos conectados a tu instancia por número de serie y localiza el disco que quieras formatear y montar.

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

    En este ejemplo de resultado 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 de tu disco en esta lista.

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

    • Si el valor virtualMachineDiskRef.name tiene más de 20 caracteres, solo se usarán los 20 primeros como número de serie.
    • Si hay dos discos con los mismos 20 primeros 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
  • Sustituye DISK_ID por el número de serie del disco que vas a formatear.
  • En este ejemplo, especifica scsi-SQEMU_QEMU_HARDDISK_vm-disk-data para formatear todo el disco sin una tabla de particiones.

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

Montar el disco

  1. Crea un directorio que sirva como punto de montaje del nuevo disco. Puedes usar cualquier directorio. En el siguiente ejemplo se crea un directorio en /mnt/disks/:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Sustituye MOUNT_DIR por el directorio en el que quieras montar el disco.

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

    Haz los cambios siguientes:

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

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. Opcional: Configurar el montaje automático al reiniciar la VM. Para ello, usa el identificador único universal (UUID) o el script de inicio.

Configurar el montaje automático al reiniciar la VM: UUID del disco

Añade el disco al archivo /etc/fstab para que se monte automáticamente de nuevo 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 se mueven discos entre sistemas. Por lo tanto, utiliza siempre el UUID del dispositivo para configurar el montaje automático al reiniciar la VM.

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

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

      sudo blkid /dev/DEVICE_NAME
    

    En el ejemplo de salida se muestra el UUID de accc19c5-d0d6-4157-9672-37d4e1d48eb5 del disco

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

    DEVICE_NAME es el nombre del dispositivo del disco que quieres montar automáticamente. Si has creado una tabla de particiones en el disco, especifica la partición que quieras montar como sufijo del nombre del dispositivo. Por ejemplo, si sdb es el nombre del dispositivo de disco y quieres montar 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
    

    Haz los cambios siguientes:

    • UUID_VALUE con el disco UUID, que aparece como resultado del comando List the UUID (Lista el UUID).
    • MOUNT_DIR con el directorio en el que has montado el disco.
    • MOUNT_OPTION con el valor MOUNT_OPTION de tu SO, que especifica lo que hace el SO si no puede montar el disco durante el inicio.
  4. Comprueba que las entradas de /etc/fstab sean correctas:

      cat /etc/fstab
    

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

Si desvinculas este disco o creas una captura a partir del disco de arranque de esta VM, edita el archivo /etc/fstab y elimina la entrada de este disco. Aunque hayas configurado MOUNT_OPTION como nofail o nobootwait, mantén el archivo /etc/fstab sincronizado con los dispositivos que se conecten a tu máquina virtual. Elimina estas entradas antes de crear la captura del disco de arranque o de separar el disco.

Configurar el montaje automático al reiniciar la VM: secuencia de comandos de inicio de la VM

También puedes usar una secuencia de comandos de inicio para montar el disco en cada reinicio. Para ello, añade los comandos de Montar el disco a una secuencia de comandos de inicio. Antes de añadir la secuencia de comandos para montar el disco, formatéalo con los comandos de Formatear 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. Añade la secuencia de comandos de inicio a la VM.

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

    Edita el 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
    

Para obtener más información sobre cómo configurar secuencias de comandos de inicio, consulta este artículo.