Crear un volumen de Hyperdisk


Puedes usar un volumen Hyperdisk Balanced, Hyperdisk Extreme o Hyperdisk Throughput con tu instancia de Compute Engine completando las siguientes tareas:

  • Crea un volumen de Hyperdisk zonal en blanco y no de arranque, y conéctalo a tu instancia durante la creación de la instancia o después.
  • Formatea y monta el volumen para proporcionar acceso a un sistema de datos o de archivos.

En el caso de los volúmenes de Hyperdisk Balanced, también puedes crear discos de arranque y discos de datos.

Para obtener información general sobre Hyperdisk, consulta el artículo Acerca de Hyperdisk.

Para añadir un disco Hyperdisk Balanced High Availability a tu instancia, sigue estos procedimientos:

Antes de empezar

  • Consulta las limitaciones de HyperDisk antes de añadir un volumen de HyperDisk a tu instancia de computación.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    Go

    Para usar las Go muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Set up authentication for a local development environment.

    Java

    Para usar las Java muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Set up authentication for a local development environment.

    Node.js

    Para usar las Node.js muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Para obtener más información, consulta Set up authentication for a local development environment.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI.

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Roles y permisos necesarios

Para obtener los permisos que necesitas para añadir un volumen de Hyperdisk a tu instancia, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para añadir un volumen de Hyperdisk a tu instancia. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para añadir un volumen de Hyperdisk a tu instancia, se necesitan los siguientes permisos:

  • Para crear y adjuntar un volumen de Hyperdisk, sigue estos pasos:
    • compute.disks.create en el proyecto
    • compute.instances.attachDisk en la instancia
    • compute.disks.use en el volumen que quieras adjuntar a la instancia
  • Para formatear y montar el volumen adjunto, haz lo siguiente: compute.instances.setMetadata en la instancia

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Valores admitidos para los volúmenes de Hyperdisk

Límites de tamaño

El tamaño que especifiques para un volumen de Hyperdisk debe estar dentro de los intervalos que se indican en la siguiente tabla.

Tipo de Hyperdisk Tamaño mínimo Tamaño máximo Tamaño predeterminado
Hyperdisk Balanced 4 GiB 64 TiB 100 GiB
Hyperdisk Balanced High Availability 4 GiB 64 TiB 100 GiB
Hyperdisk Extreme 64 GiB 64 TiB 1 TiB
Hyperdisk ML 4 GiB 64 TiB 100 GiB
Hyperdisk Throughput 2 TiB 32 TiB 2 TiB

Sin embargo, el tamaño de un volumen de Hyperdisk conectado a una VM no puede superar los límites de Hyperdisk de la VM.

Límites de rendimiento

En la siguiente tabla se indican los límites de rendimiento que puede especificar para cada tipo de hiperdisco. Sin embargo, los niveles de IOPS y de rendimiento que puedes especificar también dependen del tamaño del volumen. Para ver un resumen detallado de cada límite, consulta la sección Límites de tamaño y rendimiento de Hyperdisk Balanced, Hyperdisk Balanced High Availability, Hyperdisk Extreme, Hyperdisk ML y Hyperdisk Throughput.

Tipo de Hyperdisk Límite de IOPS Límite de rendimiento (MiB/s)
Hyperdisk Balanced 160.000 2400
Hyperdisk Balanced High Availability 100.000 1200
Hyperdisk Extreme 350.000 No puedes aprovisionar un nivel de capacidad de procesamiento para volúmenes de Hyperdisk Extreme. Cada volumen obtiene 250 MiB/s de rendimiento por cada 1000 IOPS, hasta un máximo de 5000 MiB/s.
Hyperdisk ML No puedes aprovisionar un nivel de IOPS, pero cada MiB/s de rendimiento aprovisionado incluye 16 IOPS, hasta un máximo de 19.200.000 IOPS. 1.200.000
Hyperdisk Throughput No puedes aprovisionar un nivel de IOPS, pero cada MiB/s de rendimiento aprovisionado incluye 4 IOPS, hasta un máximo de 9600 IOPS. 2400

Variables de tipo Hyperdisk

En la siguiente tabla se muestran los valores de referencia de cada tipo de Hyperdisk. Cuando crees un volumen de Hyperdisk con la CLI de Google Cloud, REST o las bibliotecas de cliente de Cloud para Compute Engine, indica el tipo de Hyperdisk que quieres crear proporcionando el valor correspondiente de la tabla.

Tipo de disco Nombre de referencia
Hyperdisk Balanced hyperdisk-balanced
Hyperdisk Balanced High Availability hyperdisk-balanced-high-availability
Hyperdisk Extreme hyperdisk-extreme
Hyperdisk Throughput hyperdisk-throughput
Hyperdisk ML hyperdisk-ml

Añadir un volumen de Hyperdisk a una instancia

Puedes crear y adjuntar un volumen de Hyperdisk mediante laGoogle Cloud consola, la interfaz de línea de comandos de Google Cloud o REST.

El tamaño, el rendimiento y las IOPS que especifiques al crear un volumen de Hyperdisk deben estar dentro del intervalo de valores admitidos.

Cuando creas un volumen de Hyperdisk Balanced, puedes permitir que varias instancias accedan al disco simultáneamente creando el disco en modo multiescritura.

Consola

  1. Ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haga clic en el nombre de la instancia a la que quiera añadir un disco.

  3. En la página Detalles de la instancia de VM, haz clic en Editar.

  4. En el encabezado Discos adicionales, haz clic en Añadir disco.

  5. Especifica un nombre para el disco y, si quieres, añade una descripción. Selecciona Disco en blanco como Tipo de fuente del disco.

  6. En Configuración del disco, elija un tipo de disco de la siguiente lista. Los valores que especifiques deben estar dentro del intervalo de valores admitidos.

    1. Hyperdisk Balanced. También puedes cambiar los ajustes predeterminados de Tamaño, IOPS aprovisionadas y Rendimiento aprovisionado del disco.
    2. Hyperdisk Extreme. También puedes cambiar el tamaño y los ajustes de IOPS aprovisionados del disco predeterminado.
    3. Hyperdisk ML. También puedes cambiar los ajustes predeterminados de Tamaño y Rendimiento aprovisionado del disco.
    4. Capacidad de procesamiento de Hyperdisk.También puedes cambiar los ajustes predeterminados de Tamaño y Capacidad de procesamiento aprovisionada del disco.
  7. Opcional: En el caso de los volúmenes Hyperdisk Balanced, puedes habilitar la vinculación del disco a varias instancias creando el disco en modo de multiescritura. En Modo de acceso, selecciona Lectura y escritura de varias VMs.

  8. Haz clic en Guardar.

  9. Para aplicar los cambios a la instancia, haz clic en Guardar.

gcloud

  1. Usa el comando gcloud compute disks create para crear el volumen de Hyperdisk.

    gcloud compute disks create DISK_NAME \
       --zone=ZONE \
       --size=DISK_SIZE \
       --type=DISK_TYPE \
       --provisioned-iops=IOPS_LIMIT
       --provisioned-throughput=THROUGHPUT_LIMIT
       --access-mode=DISK_ACCESS_MODE
    

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del nuevo disco.
    • ZONE: nombre de la zona en la que se está creando el nuevo disco.
    • DISK_SIZE: opcional. Tamaño del nuevo disco. El valor debe ser un número entero seguido de una unidad de tamaño: GB para gibibyte o TB para tebibyte. Si no se especifica ninguna unidad de tamaño, se usa el valor predeterminado de 100 GB. Los valores aceptados para el tamaño del disco son:
      • Hyperdisk Balanced: de 4 GiB a 64 TiB (ambos incluidos), en incrementos de 1 GiB.
      • Hyperdisk Extreme: de 64 GiB a 64 TiB (ambos incluidos), en incrementos de 1 GiB.
      • Hyperdisk ML: de 4 GiB a 64 TiB, ambos inclusive, en incrementos de 1 GiB.
      • Hyperdisk Throughput: de 2 a 32 TiB, ambos inclusive, en incrementos de 1 GiB.
    • DISK_TYPE: el tipo de disco. Usa uno de los siguientes valores: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml o hyperdisk-throughput.
    • IOPS_LIMIT: Opcional: en el caso de los discos Hyperdisk Balanced o Hyperdisk Extreme, es el número de operaciones de E/S por segundo (IOPS) que puede gestionar el disco.
    • THROUGHPUT_LIMIT: Opcional: en el caso de los volúmenes de Hyperdisk Balanced, Hyperdisk ML o Hyperdisk Throughput, se trata de un número entero que representa el rendimiento máximo, medido en MiB por segundo, que puede proporcionar el disco.
    • DISK_ACCESS_MODE: Opcional: cómo pueden acceder las instancias de proceso a los datos del disco. Los valores admitidos son:

      • READ_WRITE_SINGLE para obtener acceso de lectura y escritura desde una instancia. Este es el valor predeterminado.
      • READ_WRITE_MANY (solo Hyperdisk Balanced y Hyperdisk Balanced High Availability) para el acceso simultáneo de lectura y escritura desde varias instancias.
      • READ_ONLY_MANY (solo Hyperdisk ML) para el acceso simultáneo de solo lectura desde varias instancias.

      Para definir el modo de acceso de los discos Hyperdisk Balanced High Availability, consulta Crear un disco regional.

  2. Opcional: Usa el comando gcloud compute disks describe DISK_NAME para ver una descripción de tu disco.

  3. Una vez creado el disco, puedes vincularlo a una instancia.

REST

  1. Crea una solicitud POST para crear un Hyperdisk zonal con el método disks.insert. Incluye las propiedades name, sizeGb, type, provisionedIops y provisionedThroughput. Para crear este disco como un disco de no arranque vacío y sin formato, no especifiques una imagen de origen ni una captura de origen.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    {
       "name": "DISK_NAME",
       "sizeGb": "DISK_SIZE",
       "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
       "provisionedIops": "IOPS_LIMIT",
       "provisionedThroughput": "THROUGHPUT_LIMIT",
       "accessMode": "DISK_ACCESS_MODE"
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: tu ID de proyecto
    • ZONE: la zona en la que se encuentran tu instancia y el nuevo disco
    • DISK_NAME: el nombre del nuevo disco
    • DISK_SIZE: opcional. Tamaño del nuevo disco. El valor debe ser un número entero seguido de una unidad de tamaño (GB para gibibytes o TB para tebibytes).
    • DISK_TYPE: el tipo de disco. Para crear un volumen de Hyperdisk, usa uno de los siguientes valores: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml o hyperdisk-throughput.
    • IOPS_LIMIT: Opcional: en el caso de Hyperdisk Balanced y Hyperdisk Extreme, es el número de operaciones de E/S por segundo que puede gestionar el disco.
    • THROUGHPUT_LIMIT: Opcional: en el caso de los volúmenes de Hyperdisk Balanced, Hyperdisk ML o Hyperdisk Throughput, se trata de un número entero que representa el rendimiento máximo, medido en MiB por segundo, que puede proporcionar el disco.
    • DISK_ACCESS_MODE: Opcional: cómo pueden acceder las instancias de proceso a los datos del disco. Los valores admitidos son:

      • READ_WRITE_SINGLE para obtener acceso de lectura y escritura desde una instancia. Este es el valor predeterminado.
      • READ_WRITE_MANY (solo en Hyperdisk Balanced y Hyperdisk Balanced High Availability) para el acceso de lectura y escritura simultáneo desde varias instancias.
      • READ_ONLY_MANY (solo Hyperdisk ML) para el acceso simultáneo de solo lectura desde varias instancias.

      Para definir el modo de acceso de los discos Hyperdisk Balanced High Availability, consulta Crear un disco regional.

  2. Opcional: Usa el método compute.disks.get para ver una descripción de tu disco.

  3. Una vez que hayas creado el disco, podrás adjuntarlo a cualquier instancia en ejecución o detenida.

Go

// createHyperdisk creates a new Hyperdisk in the specified project and zone.
func createHyperdisk(w io.Writer, projectId, zone, diskName string) error {
	//   projectID := "your_project_id"
	//   zone := "europe-central2-b"
	//   diskName := "your_disk_name"

	ctx := context.Background()
	client, err := compute.NewDisksRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewDisksRESTClient: %v", err)
	}
	defer client.Close()

	// use format "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-throughput)".
	diskType := fmt.Sprintf("zones/%s/diskTypes/hyperdisk-balanced", zone)

	// Create the disk
	disk := &computepb.Disk{
		Name:   proto.String(diskName),
		Type:   proto.String(diskType),
		SizeGb: proto.Int64(10),
		Zone:   proto.String(zone),
	}

	req := &computepb.InsertDiskRequest{
		Project:      projectId,
		Zone:         zone,
		DiskResource: disk,
	}

	op, err := client.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("Insert disk request failed: %v", err)
	}

	// Wait for the insert disk operation to complete
	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Hyperdisk created: %v\n", diskName)
	return nil
}

Java


import com.google.cloud.compute.v1.Disk;
import com.google.cloud.compute.v1.DisksClient;
import com.google.cloud.compute.v1.InsertDiskRequest;
import com.google.cloud.compute.v1.Operation;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateHyperdisk {
  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";
    // Name of the zone in which you want to create the disk.
    String zone = "europe-central2-b";
    // Name of the disk you want to create.
    String diskName = "YOUR_DISK_NAME";
    // The type of disk you want to create. This value uses the following format:
    // "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-extreme|hyperdisk-throughput)".
    // For example: "zones/us-west3-b/diskTypes/hyperdisk-balanced"
    String diskType = String.format("zones/%s/diskTypes/hyperdisk-balanced", zone);
    // Size of the new disk in gigabytes.
    long diskSizeGb = 10;
    // Optional: For Hyperdisk Balanced or Hyperdisk Extreme disks,
    // this is the number of I/O operations per second (IOPS) that the disk can handle
    long provisionedIops = 3000;
    // Optional: For Hyperdisk Balanced or Hyperdisk Throughput volumes,
    // this is an integer that represents the throughput,
    // measured in MiB per second, that the disk can handle.
    long provisionedThroughput = 140;

    createHyperdisk(projectId, zone, diskName, diskType, diskSizeGb,
            provisionedIops, provisionedThroughput);
  }

  // Creates a hyperdisk in a project
  public static Disk createHyperdisk(String projectId, String zone, String diskName,
                                     String diskType, long diskSizeGb, long provisionedIops,
                                     long provisionedThroughput)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (DisksClient client = DisksClient.create()) {
      // Create a disk.
      Disk disk = Disk.newBuilder()
              .setZone(zone)
              .setName(diskName)
              .setType(diskType)
              .setSizeGb(diskSizeGb)
              .setProvisionedIops(provisionedIops)
              .setProvisionedThroughput(provisionedThroughput)
              .build();

      InsertDiskRequest request = InsertDiskRequest.newBuilder()
              .setProject(projectId)
              .setZone(zone)
              .setDiskResource(disk)
              .build();

      // Wait for the insert disk operation to complete.
      Operation operation = client.insertAsync(request).get(1, TimeUnit.MINUTES);

      if (operation.hasError()) {
        System.out.println("Disk creation failed!");
        throw new Error(operation.getError().toString());
      }

      // Wait for server update
      TimeUnit.SECONDS.sleep(10);

      Disk hyperdisk = client.get(projectId, zone, diskName);

      System.out.printf("Hyperdisk '%s' has been created successfully", hyperdisk.getName());

      return hyperdisk;
    }
  }
}

Node.js

// Import the Compute library
const computeLib = require('@google-cloud/compute');
const compute = computeLib.protos.google.cloud.compute.v1;

// Instantiate a diskClient
const disksClient = new computeLib.DisksClient();
// Instantiate a zoneOperationsClient
const zoneOperationsClient = new computeLib.ZoneOperationsClient();

/**
 * TODO(developer): Update/uncomment these variables before running the sample.
 */
// Project ID or project number of the Google Cloud project you want to use.
const projectId = await disksClient.getProjectId();

// The zone where your VM and new disk are located.
// zone = 'europe-central2-b';

// The name of the new disk
// diskName = 'disk-name';

// The type of disk. This value uses the following format:
// "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-extreme|hyperdisk-ml|hyperdisk-throughput)".
// For example: "zones/us-west3-b/diskTypes/hyperdisk-balanced"
const diskType = `zones/${zone}/diskTypes/hyperdisk-balanced`;
// Size of the new disk in gigabytes.
const diskSizeGb = 10;
// Optional: For Hyperdisk Balanced or Hyperdisk Extreme disks,
// this is the number of I/O operations per second (IOPS) that the disk can handle.
const provisionedIops = 3000;
// Optional: For Hyperdisk Balanced or Hyperdisk Throughput volumes,
// this is an integer that represents the throughput,
// measured in MiB per second, that the disk can handle.
const provisionedThroughput = 140;

async function callCreateComputeHyperdisk() {
  // Create a disk
  const disk = new compute.Disk({
    sizeGb: diskSizeGb,
    name: diskName,
    zone,
    type: diskType,
    provisionedIops,
    provisionedThroughput,
  });

  const [response] = await disksClient.insert({
    project: projectId,
    zone,
    diskResource: disk,
  });

  let operation = response.latestResponse;

  // Wait for the create disk operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await zoneOperationsClient.wait({
      operation: operation.name,
      project: projectId,
      zone: operation.zone.split('/').pop(),
    });
  }

  console.log(`Disk: ${diskName} created.`);
}

await callCreateComputeHyperdisk();

Una vez que hayas creado el disco, podrás adjuntarlo a cualquier instancia en ejecución o detenida.

Formatear y montar el disco

Después de crear y vincular el nuevo disco a una instancia, debes formatearlo y montarlo para que el sistema operativo pueda usar el espacio de almacenamiento disponible.

Siguientes pasos