Crear un nuevo volumen de Hyperdisk


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

  • Cree un volumen Hyperdisk zonal, en blanco y sin inicio y asócielo a su instancia durante o después de la creación de la instancia.
  • Formatee y monte el volumen para proporcionar acceso a un sistema de archivos o datos.

Para volúmenes Hyperdisk Balanced, también puede crear discos de arranque y discos de datos.

Para obtener información general sobre Hyperdisk, consulte Acerca de Hyperdisk .

Para agregar un disco de alta disponibilidad equilibrada de Hyperdisk a su instancia, utilice los siguientes procedimientos:

Antes de comenzar

Roles y permisos necesarios

Para obtener los permisos que necesita para agregar un volumen de Hyperdisk a su instancia, solicite a su administrador que le otorgue las siguientes funciones de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Estos roles predefinidos contienen los permisos necesarios para agregar un volumen de Hyperdisk a su instancia. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para agregar un volumen Hyperdisk a su instancia:

  • Para crear y adjuntar un volumen Hyperdisk:
    • compute.disks.create en el proyecto.
    • compute.instances.attachDisk en la instancia
    • compute.disks.use en el volumen que desea adjuntar a la instancia.
  • Para formatear y montar el volumen adjunto: compute.instances.setMetadata en la instancia

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Valores admitidos para volúmenes de Hyperdisk

Los valores que utilice al crear o modificar un volumen de Hyperdisk deben estar dentro del rango de valores máximos y mínimos descritos en Límites de Hyperdisk por disco .

Si está modificando el tamaño de un volumen de Hyperdisk que está conectado a una máquina virtual, los nuevos valores no pueden exceder los límites de Hyperdisk por máquina virtual .

Las IOPS y el rendimiento aprovisionados para un volumen de Hyperdisk deben seguir las reglas descritas en Acerca del aprovisionamiento de IOPS y el rendimiento para Hyperdisk .

Agregue un volumen Hyperdisk a su instancia

Puede crear y adjuntar un volumen Hyperdisk mediante la consola de Google Cloud, la CLI de Google Cloud o REST.

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

Cuando crea un volumen Hyperdisk Balanced, opcionalmente puede permitir que varias instancias accedan al disco simultáneamente creando el disco en modo de escritura múltiple.

Consola

  1. Vaya a la página de instancias de VM .

    Ir a instancias de VM

  2. Haga clic en el nombre de la instancia donde desea agregar un disco.

  3. En la página de detalles de la instancia de VM , haga clic en Editar .

  4. Bajo el título Discos adicionales , haga clic en Agregar nuevo disco .

  5. Especifique un nombre para el disco y, opcionalmente, agregue una descripción. Seleccione Disco en blanco como tipo de fuente de disco .

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

    1. Hiperdisco equilibrado . También puede cambiar las configuraciones predeterminadas de Tamaño del disco, IOPS aprovisionadas y Rendimiento aprovisionado .
    2. Hiperdisco extremo . También puede cambiar la configuración predeterminada de Tamaño del disco y IOPS aprovisionadas .
    3. Hiperdisco ML . También puede cambiar la configuración predeterminada de Tamaño del disco y Rendimiento aprovisionado .
    4. Rendimiento del hiperdisco . También puede cambiar la configuración predeterminada de Tamaño del disco y Rendimiento aprovisionado .
  7. Opcional: para volúmenes Hyperdisk Balanced, puede habilitar la conexión del disco a varias instancias creando el disco en modo de escritura múltiple. En Modo de acceso , seleccione Lectura y escritura de varias máquinas virtuales .

  8. Haga clic en Guardar .

  9. Para aplicar sus cambios a la instancia, haga clic en Guardar .

nube de gcloud

  1. Usa el comando gcloud compute disks create para crear el volumen 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
    

    Reemplace lo siguiente:

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

      • READ_WRITE_SINGLE , para 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 acceso simultáneo de lectura y escritura desde múltiples instancias.
      • READ_ONLY_MANY , (solo Hyperdisk ML) para acceso simultáneo de solo lectura desde múltiples instancias.

      Para configurar el modo de acceso para discos de alta disponibilidad equilibrada de Hyperdisk, consulte Crear un disco regional .

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

  3. Después de crear el disco, puede adjuntarlo a una instancia .

DESCANSAR

  1. Construya una solicitud POST para crear un hiperdisco zonal utilizando el método disks.insert . Incluya las propiedades name , sizeGb , type , provisionedIops y provisionedThroughput . Para crear este disco como un disco sin arranque vacío y sin formato, no especifique una imagen de origen ni una instantánea 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"
    }
    

    Reemplace lo siguiente:

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

      • READ_WRITE_SINGLE , para 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 acceso simultáneo de lectura y escritura desde múltiples instancias.
      • READ_ONLY_MANY , (solo Hyperdisk ML) para acceso simultáneo de solo lectura desde múltiples instancias.

      Para configurar el modo de acceso para discos de alta disponibilidad equilibrada de Hyperdisk, consulte Crear un disco regional .

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

  3. Después de crear el disco, puede adjuntarlo a cualquier instancia en ejecución o detenida.

Ir

// 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;
    }
  }
}

Nodo.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();

Después de crear el disco, puede adjuntarlo a cualquier instancia en ejecución o detenida.

Formatear y montar el disco.

Después de crear y adjuntar el nuevo disco a una instancia , debe formatear y montar el disco para que el sistema operativo pueda utilizar el espacio de almacenamiento disponible.

¿Qué sigue?