יצירת נפח Hyperdisk חדש

כדי להשתמש בנפח של Hyperdisk Balanced,‏ Hyperdisk Extreme או Hyperdisk Throughput במכונה של Compute Engine, צריך לבצע את הפעולות הבאות:

  • יוצרים נפח Hyperdisk ריק, לא לאתחול, לפי אזור, ומצרפים אותו למכונה במהלך יצירת המכונה או אחרי שהיא נוצרה.
  • מפרמטים ומחברים את אמצעי האחסון כדי לספק גישה לנתונים או למערכת קבצים.

בנפחי Hyperdisk Balanced, אפשר גם ליצור דיסקים של נתונים וגם דיסקי אתחול.

כדי להוסיף למכונה דיסק חדש מסוג Hyperdisk Balanced High Availability, פועלים לפי ההוראות הבאות:

כדי להוסיף למכונה דיסק קיים שמכיל נתונים, קראו את המאמר צירוף דיסק שאינו דיסק אתחול למכונה וירטואלית.

מידע כללי על Hyperdisk מופיע במאמר מידע על Hyperdisk.

לפני שמתחילים

תפקידים והרשאות נדרשים

כדי לקבל את ההרשאות שדרושות להוספת נפח Hyperdisk למכונה, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקידים המוגדרים מראש האלו מכילים את ההרשאות שנדרשות כדי להוסיף נפח Hyperdisk למכונה. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי להוסיף נפח Hyperdisk למכונה, צריך את ההרשאות הבאות:

  • כדי ליצור ולצרף אמצעי אחסון ב-Hyperdisk:
    • compute.disks.create בפרויקט
    • ‫compute.instances.attachDisk במכונה
    • compute.disks.use בנפח שרוצים לצרף למכונה
  • כדי לפרמט ולטעון את אמצעי האחסון המצורף: compute.instances.setMetadata במכונה

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

ערכים נתמכים לנפחי Hyperdisk

מגבלות גודל ושמות של קובצי עזר ל-Hyperdisk

כדי ליצור נפח Hyperdisk באמצעות Google Cloud CLI,‏ REST או ספריות הלקוח של Cloud ל-Compute Engine, צריך לציין את סוג ה-Hyperdisk שרוצים ליצור. לשם כך, מזינים את הערך בעמודה Reference name בטבלה הבאה.

הגודל שמציינים לנפח Hyperdisk צריך להיות בטווחים שמפורטים בטבלה הבאה.

סוג הדיסק שם קובץ העזר גודל מינימלי גודל מקסימלי ברירת מחדל של גודל
Hyperdisk Balanced hyperdisk-balanced ‫4 GiB 64 TiB1 ‫100 GiB
Hyperdisk Balanced High Availability hyperdisk-balanced-high-availability ‫4 GiB 64 TiB ‫100 GiB
Hyperdisk Extreme hyperdisk-extreme 64 GiB 64 TiB ‫1 TiB
Hyperdisk Throughput hyperdisk-throughput ‫2 TiB ‫32 TiB ‫2 TiB
Hyperdisk ML hyperdisk-ml ‫4 GiB 64 TiB ‫100 GiB
1 גרסת טרום-השקה (Preview): ב-C4 אפשר להשתמש בדיסק בגודל מקסימלי של 128 TiB. כדי לקבל גישה לתכונה הזו, צריך לפנות לכתובת hyperdisk-questions@google.com.

עם זאת, הגודל הכולל של כל אמצעי האחסון מסוג Hyperdisk שמצורפים למכונה לא יכול לחרוג ממגבלות הגודל והצירוף של Hyperdisk במכונה.

מגבלות על הביצועים

בטבלה הבאה מפורטות מגבלות הביצועים שאפשר לציין לכל סוג של Hyperdisk. עם זאת, רמות ה-IOPS וקצב הנתונים שאפשר לציין תלויות גם בגודל של אמצעי האחסון. לסיכום מפורט של כל מגבלה, עיינו בקטע מגבלות גודל וביצועים של Hyperdisk Balanced,‏ Hyperdisk Balanced High Availability,‏ Hyperdisk Extreme,‏ Hyperdisk ML ו-Hyperdisk Throughput.

סוג Hyperdisk מגבלת IOPS מגבלת קצב העברת הנתונים (MiB לשנייה)
Hyperdisk Balanced 160,000 2,400
Hyperdisk Balanced High Availability 100,000 2,400
Hyperdisk Extreme 350,000 אי אפשר להקצות רמת תפוקה לנפחי Hyperdisk Extreme. כל נפח מקבל קצב העברת נתונים של 250 MiB/s לכל 1,000 IOPS, עד 5,000 MiB/s.
Hyperdisk ML אי אפשר להקצות רמת IOPS, אבל כל MiB/s של הקצאת משאבים לפי התפוקה שנקבעה מגיע עם 16‎ IOPS, עד 33,554,432‎ IOPS. 2,097,152
Hyperdisk Throughput אי אפשר להקצות רמת IOPS, אבל כל MiB/s של הקצאת משאבים לפי התפוקה שנקבעה מגיע עם 4 IOPS, עד 9,600 IOPS. 2,400

הוספת נפח Hyperdisk למכונה

אפשר ליצור ולצרף נפח Hyperdisk בכל אחת מהשיטות שמפורטות בקטע הזה.

הגודל, קצב הנתונים וה-IOPS שאתם מציינים כשאתם יוצרים נפח Hyperdisk חייבים להיות בטווח של הערכים הנתמכים.

כשיוצרים נפח Hyperdisk Balanced, אפשר לאפשר לכמה מכונות לגשת לדיסק בו-זמנית על ידי יצירת הדיסק במצב multi-writer.

המסוף

  1. נכנסים לדף VM instances.

    כניסה לדף VM instances

  2. לוחצים על השם של המכונה שרוצים להוסיף לה דיסק.

  3. בדף VM instance details, לוחצים על editEdit.

  4. בקטע Storage, בקטע Additional disks, לוחצים על Add new disk.

  5. מציינים שם לדיסק, ואם רוצים מוסיפים תיאור.

  6. בקטע Disk source type, בוחרים את מקור הנתונים של הדיסק:

    • כדי ליצור דיסק ריק, בוחרים באפשרות Blank disk.
    • כדי ליצור את הדיסק מתמונה:
      1. לוחצים על תמונה.
      2. בקטע Source image, בוחרים את תמונת המקור של הדיסק.
    • כדי ליצור את הדיסק מ-snapshot קיים:
      1. בוחרים באפשרות Snapshot,‏ Instant snapshot או Archive snapshot, בהתאם לסוג של קובץ ה-snapshot של המקור (קובץ snapshot רגיל, קובץ snapshot מואץ או קובץ snapshot של ארכיון, בהתאמה).
      2. בקטע Source snapshot, בוחרים מהרשימה את קובץ ה-snapshot של המקור או את קובץ ה-snapshot המואץ. רק קובצי snapshot שנמצאים במיקום שבחרתם מופיעים ברשימה.
    • כדי ליצור את הדיסק מדיסק ספציפי שנמצא בתמונת מכונה (גרסת טרום-השקה):
      1. בוחרים באפשרות Machine Image.
      2. בתפריט הנפתח Source machine image, בוחרים את תמונת המכונה שבה רוצים להשתמש.
      3. בתפריט הנפתח Source disk, בוחרים את שם המכשיר של הדיסק הספציפי בתמונת המכונה שנבחרה, שבו רוצים להשתמש כמקור לדיסק החדש.
      4. אם תמונת המכונה שנבחרה מוגנת באמצעות מפתח הצפנה באספקת הלקוח (CSEK) (הוצא משימוש), יופיע הקטע Encryption. מזינים את מפתח הפענוח הנדרש בשדה שמופיע.
      5. מגדירים מאפיינים אחרים של הדיסק לפי הצורך, כמו Name,‏ Type, ‏ Size ו-Deletion rule.

  7. בקטע Disk settings, בוחרים סוג דיסק מהרשימה הבאה. הערכים שאתם מציינים חייבים להיות בטווח של הערכים הנתמכים.

    1. Hyperdisk Balanced. אפשר גם לשנות את הגדרות ברירת המחדל של Size,‏ Provisioned IOPS ו-הקצאת משאבים לפי התפוקה שנקבעה של הדיסק.
    2. Hyperdisk Extreme. אפשר גם לשנות את הגדרות ברירת המחדל של Size ו-Provisioned IOPS של הדיסק.
    3. Hyperdisk ML. אפשר גם לשנות את הגדרות ברירת המחדל של Size ו-Provisioned Throughput של הדיסק.
    4. Hyperdisk Throughput. אפשר גם לשנות את הגדרות ברירת המחדל של Size ו-Provisioned Throughput של הדיסק.
  8. אופציונלי: כדי לראות אפשרויות הגדרה מתקדמות, מרחיבים את הקטע Show advanced configurations.

    • בשדה Mode, בוחרים את מצב צירוף הדיסק.
    • בשדה כלל מחיקה, בוחרים אם לשמור או למחוק את הדיסק כשמוחקים את המכונה.
    • כדי שיהיה קל יותר לזהות את הדיסק מתוך מערכת ההפעלה של האורח, מציינים שם מכשיר בהתאמה אישית. בכותרת שם המכשיר, בוחרים באפשרות שימוש בשם מכשיר בהתאמה אישית. בשדה Device name, מזינים מחרוזת שתשמש כקישור סימבולי לדיסק.

  9. לוחצים על סיום.

  10. כדי להחיל את השינויים על המכונה, לוחצים על Save.

gcloud

  1. משתמשים בפקודה gcloud compute disks create כדי ליצור את נפח ה-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
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫DISK_NAME: שם הדיסק החדש.
    • ‫ZONE: שם האזור שבו נוצר הדיסק החדש.
    • ‫DISK_SIZE: אופציונלי: הגודל של הדיסק החדש. הערך חייב להיות מספר שלם ואחריו יחידת מידה: GB לגיביבייט או TB לטביבייט. אם לא מציינים יחידת גודל, ערך ברירת המחדל הוא 100GB. הערכים הקבילים לגודל הדיסק הם:
      • ‫Hyperdisk Balanced: מ-‎4 GiB עד ‎64 TiB, כולל, במרווחים של ‎1 GiB.
      • ‫Hyperdisk Extreme: מ-‎64 GiB עד ‎64 TiB, כולל, במרווחים של ‎1 GiB.
      • ‫Hyperdisk ML: מ-‎4 GiB עד ‎64 TiB, כולל, במרווחים של ‎1 GiB.
      • ‫Hyperdisk Throughput: מ-‎2 TiB עד ‎32 TiB, כולל, במרווחים של ‎1 GiB.
    • ‫DISK_TYPE: סוג הדיסק. משתמשים באחד מהערכים הבאים: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml או hyperdisk-throughput
    • ‫IOPS_LIMIT: אופציונלי: בדיסקים מסוג Hyperdisk Balanced או Hyperdisk Extreme, זהו מספר פעולות הקלט/פלט לשנייה (IOPS) שהדיסק יכול לטפל בהן.
    • ‫THROUGHPUT_LIMIT: אופציונלי: לנפחי Hyperdisk Balanced,‏ Hyperdisk ML או Hyperdisk Throughput, זהו מספר שלם שמייצג את קצב העברת הנתונים המקסימלי שהדיסק יכול לספק, שנמדד ב-MiB לשנייה.
    • ‫DISK_ACCESS_MODE: אופציונלי: איך מכונות יכולות לגשת לנתונים בדיסק. הערכים הנתמכים הם:

      • ‫READ_WRITE_SINGLE, לגישת קריאה וכתיבה ממכונה אחת. (זוהי ברירת המחדל)
      • ‫READ_WRITE_MANY, (רק ב-Hyperdisk Balanced וב-Hyperdisk Balanced High Availability) לגישה בו-זמנית לקריאה ולכתיבה ממספר מכונות.
      • ‫READ_ONLY_MANY, (רק ב-Hyperdisk ML) לגישה בו-זמנית לקריאה בלבד ממספר מכונות.

      כדי להגדיר את מצב הגישה לדיסקים מסוג Hyperdisk Balanced High Availability, קראו את המאמר יצירת דיסק אזורי.

  2. אופציונלי: משתמשים בפקודה gcloud compute disks describe DISK_NAME כדי לראות תיאור של הדיסק.

  3. אחרי שיוצרים את הדיסק, אפשר לצרף אותו למכונה.

REST

  1. יוצרים בקשת POST כדי ליצור Hyperdisk אזורי באמצעות ה-method‏ disks.insert. כוללים את המאפיינים name,‏ sizeGb,‏ type,‏ provisionedIops ו-provisionedThroughput. כדי ליצור את הדיסק הזה כדיסק ריק ולא מעוצב שאינו דיסק אתחול, אל תציינו תמונת מקור או קובץ snapshot של מקור.

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

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫PROJECT_ID: מזהה הפרויקט
    • ‫ZONE: האזור שבו נמצאים המכונה והדיסק החדש
    • ‫DISK_NAME: השם של הדיסק החדש
    • ‫DISK_SIZE: אופציונלי: הגודל של הדיסק החדש. הערך חייב להיות מספר שלם ואחריו יחידת מידה: GB לגיביבייט או TB לטביבייט.
    • ‫DISK_TYPE: סוג הדיסק. כדי ליצור נפח Hyperdisk, משתמשים באחד מהערכים הבאים: hyperdisk-balanced,‏ hyperdisk-extreme,‏ hyperdisk-ml או hyperdisk-throughput.
    • ‫IOPS_LIMIT: אופציונלי: ב-Hyperdisk Balanced וב-Hyperdisk Extreme, זה מספר פעולות הקלט/פלט לשנייה שהדיסק יכול לטפל בהן.
    • ‫THROUGHPUT_LIMIT: אופציונלי: לנפחי Hyperdisk Balanced,‏ Hyperdisk ML או Hyperdisk Throughput, זהו מספר שלם שמייצג את קצב העברת הנתונים המקסימלי שהדיסק יכול לספק, שנמדד ב-MiB לשנייה.
    • ‫DISK_ACCESS_MODE: אופציונלי: איך מכונות יכולות לגשת לנתונים בדיסק. הערכים הנתמכים הם:

      • ‫READ_WRITE_SINGLE, לגישת קריאה וכתיבה ממכונה אחת. (זוהי ברירת המחדל)
      • ‫READ_WRITE_MANY, (רק ב-Hyperdisk Balanced וב-Hyperdisk Balanced High Availability) לגישה בו-זמנית לקריאה ולכתיבה ממספר מכונות.
      • ‫READ_ONLY_MANY, (רק ב-Hyperdisk ML) לגישה בו-זמנית לקריאה בלבד ממספר מכונות.

      כדי להגדיר את מצב הגישה לדיסקים מסוג Hyperdisk Balanced High Availability, קראו את המאמר יצירת דיסק אזורי.

  2. אופציונלי: משתמשים ב-method‏ compute.disks.get כדי לראות את תיאור הדיסק.

  3. אחרי שיוצרים את הדיסק, אפשר לצרף אותו לכל מכונה פועלת או עצורה.

המשך

// 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/{disktype}".
    // disktype is one of hyperdisk-balanced, hyperdisk-extreme, hyperdisk-throughput
    // hyperdisk-ml, hyperdisk-balanced-high-availability
    // 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();

אחרי שיוצרים את הדיסק, אפשר לצרף אותו לכל מכונה פועלת או עצורה.

פרמוט וטעינה של הדיסק

אחרי שיוצרים את הדיסק החדש ומצרפים אותו למכונה, צריך לפרמט ולטעון את הדיסק כדי שמערכת ההפעלה תוכל להשתמש בנפח האחסון הזמין.

המאמרים הבאים