יצירת נפח 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 גרסת טרום-השקה: ב-C4 אפשר להשתמש בדיסק בגודל מקסימלי של 128TiB. כדי לקבל גישה לתכונה הזו, צריך לפנות לכתובת 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. בקטע אחסון, מתחת לדיסקים נוספים, לוחצים על הוספת דיסק חדש.

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

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

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

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

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

    • בוחרים את מצב צירוף הדיסק בשדה Mode.
    • בוחרים אם לשמור או למחוק את הדיסק כשמוחקים את המכונה על ידי בחירת האפשרות בשדה Deletion rule (כלל מחיקה).
    • כדי שיהיה קל יותר לזהות את הדיסק מתוך מערכת ההפעלה של האורח, מציינים שם מכשיר בהתאמה אישית. בקטע שם המכשיר, בוחרים באפשרות שימוש בשם מכשיר בהתאמה אישית. בשדה 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.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    {
       "name": "DISK_NAME",
       "sizeGb": "DISK_SIZE",
       "type": "https://compute.s3nsapis.fr/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, זהו מספר פעולות הקלט/פלט (I/O) בשנייה שהדיסק יכול לטפל בהן.
    • ‫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. אופציונלי: משתמשים ב-‎compute.disks.get method כדי לראות תיאור של הדיסק.

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

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

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

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

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