שינוי הגודל של דיסק אחסון מתמיד

אם המכונה הווירטואלית (VM) שלכם ב-Compute Engine צריכה עוד נפח אחסון או הגדלה של מגבלות הביצועים, אתם יכולים להגדיל את Persistent Disk. אפשר להגדיל את נפח הדיסק בכל שלב, גם אם הדיסק מחובר ל-VM פועל וגם אם לא.

בדף הזה מוסבר איך לשנות את הגודל של Persistent Disk. כדי להגדיל את הנפח של Google Cloud Hyperdisk, קראו את המאמר שינוי הגודל והביצועים שהוקצו של נפח Hyperdisk.

כשיוצרים אימג' מותאם אישית של Linux, אימג' מותאם אישית של Windows או אימג' של Fedora CoreOS, צריך להגדיל באופן ידני את הגודל של דיסק האתחול ושל הדיסק שלא משמש לאתחול. אם אתם משתמשים בתמונה ציבורית (חוץ מתמונות של Fedora CoreOS), המערכת של Compute Engine משנה באופן אוטומטי את הגודל של דיסקי האתחול.

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

‫Compute Engine מנהל את החומרה שמאחורי Persistent Disks, כך שאתם יכולים להוסיף דיסקים ולשנות את הגודל שלהם בלי לטפל בפיצול או ביתירות.

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

  • אם עדיין לא עשיתם את זה, תצטרכו להגדיר אימות. אימות הוא התהליך שבו מאמתים את הזהות שלכם כדי לקבל גישה לממשקי API ולשירותים של Google Cloud . כדי להריץ קוד או דוגמאות מסביבת פיתוח מקומית, אפשר לבצע אימות ל-Compute Engine באחת מהדרכים האלה:

    צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:

    המסוף

    כשמשתמשים במסוף Google Cloud כדי לגשת לשירותים ולממשקי ה-API של Google Cloud , לא צריך להגדיר אימות.

    gcloud

    1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

      gcloud init

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • הגדרת אזור ותחום כברירת מחדל.
  • Terraform

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Terraform שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.

    1. התקינו את ה-CLI של Google Cloud.

    2. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

      gcloud auth application-default login

      אם אתם משתמשים ב-Cloud Shell, אתם לא צריכים לעשות את זה.

      אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.

    REST

    כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.

      התקינו את ה-CLI של Google Cloud.

      אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

    מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .

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

כדי לקבל את ההרשאה שדרושה לשינוי הגודל של Persistent Disk, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

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

התפקיד המוגדר מראש מכיל את ההרשאה compute.disks.update, שנדרשת כדי לשנות את הגודל של Persistent Disk.

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

העברת נתונים לדיסק קטן יותר

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

כדי להחליף דיסק בדיסק קטן יותר, פועלים לפי השלבים הבאים:

  1. יוצרים Persistent Disk ריק ומציינים את הגודל הרצוי. חשוב לוודא שהדיסק החדש גדול מספיק כדי להכיל את הנתונים מדיסק המקור.
  2. מחברים את שני הדיסקים לאותו מכונה. הוראות מפורטות זמינות במאמר חיבור דיסק שאינו דיסק אתחול למכונה וירטואלית.
  3. מפרמטים ומתקינים את הדיסק החדש. אפשר לקרוא את ההוראות למכונות של Linux ו-Windows.
  4. מעתיקים את הנתונים מהדיסק המקורי לדיסק החדש באמצעות הכלים שזמינים במערכת ההפעלה (OS). לדוגמה, ב-Linux אפשר להשתמש ב-rsync או ב-dd. במכונות של Windows, אפשר להשתמש ב-robocopy.
  5. מוודאים שבדיסק החדש יש את כל הנתונים ושהוא פועל כמו שצריך.
  6. מעדכנים את האפליקציה או את מערכת ההפעלה כדי להשתמש בדיסק החדש.
  7. אחרי שמוודאים שההעברה בוצעה בהצלחה, אפשר לנתק ולמחוק את הדיסק המקורי הגדול יותר.
החיוב על הדיסק המקורי יימשך עד שתמחקו אותו.

מגבלות גודל של אמצעי אחסון מסוג Persistent Disk

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

סוג הדיסק גודל מינימלי גודל מקסימלי ברירת מחדל של גודל
דיסק אחסון מתמיד מאוזן אזורי: 10 GiB
בכמה אזורים: 10 GiB
64 TiB 100 GiB
דיסק מתמיד שמבוסס על ביצועים (SSD) אזורי: 10 GiB
בכמה אזורים: 10 GiB
64 TiB 100 GiB
דיסק מתמיד סטנדרטי אזורי: ‎10 GiB
מרחבי: ‎200 GiB
64 TiB 500 GiB
Extreme Persistent Disk 500 GiB 64 TiB ‫1 TiB

הגדלת הנפח של Persistent Disk

כדי להגדיל את הנפח של דיסק אתחול או דיסק שאינו דיסק אתחול, משתמשים בתהליכים הבאים:

המסוף

  1. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

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

  3. בדף הפרטים של הדיסק, לוחצים על Edit. יכול להיות שתצטרכו ללחוץ על התפריט ‏More actions ואז על Edit.

  4. בשדה Size, מזינים את הגודל החדש של הדיסק. בדיסקים עם טבלאות מחיצות MBR, אפשר לשנות את הגודל רק עד 2TB.

  5. לוחצים על Save כדי להחיל את השינויים בדיסק.

גודל הדיסק החדש מוצג ברשימת הדיסקים.

gcloud

משתמשים בפקודה gcloud compute disks resize ומציינים את הדגל --size עם גודל הדיסק החדש, בגיביבייטים (GiB).

gcloud compute disks resize DISK_NAME \
    --size DISK_SIZE \
    --zone=ZONE

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

  • ‫DISK_NAME: שם הדיסק שאתם משנים את הגודל שלו.
  • ‫DISK_SIZE: הגודל החדש של הדיסק, ב-gibibytes‏ (GiB). אפשר לשנות את הגודל של דיסקים עם טבלאות מחיצות MBR רק עד 2TB.
  • ‫ZONE: לדיסק אחסון מתמיד (persistent disk) של תחום, מציינים את התחום שבו נמצא הדיסק.

    ב-Regional Persistent Disk, משתמשים בדגל --region=REGION ומציינים את האזור שבו נמצא הדיסק האזורי.

Terraform

כדי לשנות את הגודל של דיסקים אזוריים או של Regional Persistent Disk, בוחרים באחת מהאפשרויות הבאות:

דיסק של אזור

כדי לשנות את הגודל של Persistent Disk, אפשר להשתמש במשאב google_compute_disk ובפרמטר size.

# Using pd-standard because it's the default for Compute Engine

resource "google_compute_disk" "default" {
  name = "disk-data"
  type = "pd-standard"
  zone = "us-west1-a"
  size = "5"
}

אם כוללים את הפרמטר size יחד עם הפרמטר image או snapshot, הערך של size חייב להיות שווה לגודל של התמונה או של תמונת המצב, או גדול ממנו.

אם משמיטים את הפרמטרים image ו-snapshot, אפשר להגדיר את הפרמטר size לערך קטן יותר מגודל הדיסק הקיים. אם תעשו זאת, Terraform ישמיד את הדיסק וייצור דיסק חדש וריק של Persistent Disk.

דיסק אחסון מתמיד אזורי (Regional Persistent Disk)

כדי לשנות את הגודל של Persistent Disk אזורי, אפשר להשתמש במשאב google_compute_region_disk ובפרמטר size.

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

אם כוללים את הפרמטר size יחד עם הפרמטר image או snapshot, הערך של size חייב להיות שווה לגודל של התמונה או של תמונת המצב, או גדול ממנו.

אם משמיטים את הפרמטרים image ו-snapshot, אפשר להגדיר את הפרמטר size לערך קטן יותר מגודל הדיסק הקיים. אם תעשו את זה, Terraform ישמיד את הדיסק וייצור דיסק אזורי חדש וריק.

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

REST

כדי לשנות את הגודל של Persistent Disk, צריך לשלוח בקשת POST ל-method‏ compute.disks.resize.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize
{
  "sizeGb": "DISK_SIZE"
}

כדי לשנות את הגודל של דיסק אזורי קבוע, יוצרים בקשת POST ל-method‏ compute.regionDisks.resize.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize
{
   "sizeGb": "DISK_SIZE"
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • ‫ZONE: לדיסק Persistent Disk של אזור: האזור שבו נמצא הדיסק.
  • ‫REGION: לדיסק אחסון מתמיד אזורי: האזור שבו נמצא הדיסק.
  • ‫DISK_NAME: שם הדיסק שרוצים לשנות את הגודל שלו.
  • ‫DISK_SIZE: הגודל החדש של הדיסק, ב-gibibytes‏ (GiB). בדיסקים עם טבלאות מחיצות MBR אפשר לשנות את הגודל רק עד 2TB.

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

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

  • דיסקים של אתחול: אם אתם משתמשים באימג' מותאם אישית של Linux, באימג' מותאם אישית של Windows או באימג' של Fedora CoreOS, אתם צריכים לשנות באופן ידני את הגודל של מחיצת הבסיס (root) ושל מערכת הקבצים. במכונות עם תמונות ציבוריות (חוץ מתמונות של Fedora CoreOS), מערכת Compute Engine משנה באופן אוטומטי את הגודל של מחיצת הבסיס ומערכת הקבצים אחרי שמגדילים את דיסק האתחול, ואין צורך להפעיל מחדש את המכונה.

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

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

מכונות Linux

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. מאתרים את המכונה שאליה מחובר הדיסק ששיניתם את הגודל שלו. לוחצים על SSH. הדפדפן פותח חיבור טרמינל למכונה.

  3. משתמשים בפקודות df ו-lsblk כדי להציג את הגודל של מערכת הקבצים ולמצוא את שמות המכשירים של הדיסקים.

    $ sudo df -Th
    
    Filesystem      Type      Size  Used Avail Use% Mounted on
    udev            devtmpfs  3.9G     0  3.9G   0% /dev
    /dev/nvme0n1p1  ext4      9.7G  2.0G  7.2G  22% /
    /dev/nvme0n1p15 vfat      124M   12M  113M  10% /boot/efi
    /dev/nvme0n2    ext4       98G   24K   98G   1% /mnt/disks/data
    
    
    $ sudo lsblk
    
    NAME        MAJ:MIN   RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1      259:0    0   20G  0 disk
    ├─nvme0n1p1  259:5    0  9.9G  0 part /
    ├─nvme0n1p14 259:6    0    3M  0 part
    └─nvme0n1p15 259:7    0  124M  0 part /boot/efi
    nvme0n2      259:4    0  100G  0 disk /mnt/disks/data
    
    

    הדוגמה הזו כוללת את הדיסקים הבאים:

    • דיסק אתחול: המחיצה /dev/nvme0n1p1 נמצאת בדיסק אתחול שגודלו שונה ל-20GB. טבלת המחיצות ומערכת הקבצים מספקות רק 9.9GB למערכת ההפעלה.
    • דיסק נתונים שלא משמש לאתחול: לדיסק הנתונים /dev/nvme0n2 שלא משמש לאתחול אין טבלת מחיצות, אבל מערכת הקבצים בדיסק הזה מספקת 100GB למערכת ההפעלה. ספריית הטעינה של הדיסק הזה היא /mnt/disks/data.

    שימו לב לעמודה Type בפלט של הפקודה df, שמציינת אם הדיסק משתמש במערכת קבצים מסוג ext4 או xfs.

  4. מאמתים את סוג המחיצה:

    sudo parted -l
    

    בפעם הראשונה שמריצים את הפקודה הזו אחרי שינוי הגודל של הדיסק, יכול להיות שתופיע הודעה דומה לזו:

    Warning: Not all of the space available to /dev/nvme0n1 appears to be
    used, you can fix the GPT to use all of the space (an extra 20971520
    blocks) or continue with the current setting?
    Fix/Ignore?
    

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

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

    sudo parted -l /dev/DEVICE_NAME
    

    מחפשים את השדה Partition Table. אם הערך הוא msdos, סוג המחיצה של הדיסק הוא MBR. כלומר, הגודל המקסימלי של דיסק כזה יהיה 2TB.

  6. בדיסק אתחול, משנים את הגודל של מחיצת הבסיס ושל מערכת הקבצים בדיסק. בדוגמה הזו, אנחנו מניחים שתמונת ה-VM לא תומכת בחלוקה אוטומטית למחיצות של תיקיית הבסיס ובשינוי הגודל של מערכת הקבצים.

    1. משנים את הגודל של מחיצת הבסיס באמצעות parted. לדוגמה, הפקודות הבאות מרחיבות את מחיצה 1 של המכשיר לגודל המקסימלי האפשרי:

      1. פותחים את parted במכשיר:

        sudo parted /dev/DEVICE_NAME
        

        מחליפים את DEVICE_NAME בשם המכשיר של דיסק האתחול, לדוגמה, nvme0n1

      2. בשורת הפקודה, מזינים:

        (parted) resizepart
        
      3. בשורת הפקודה של Partition number?, מזינים:

        1
        
      4. בשורת הפקודה של Warning: Partition /dev/DEVICE_NAMEp1 is being used. Are you sure you want to continue?, מזינים:

        Yes
        
      5. בשורת הפקודה End?, מזינים את הפקודה הבאה:

        100%
        
      6. בשורת הפקודה של (parted), מזינים:

        (parted) quit
        
    2. מציגים את טבלת המחיצות החדשה באמצעות parted -l.

      sudo parted -l /dev/DEVICE_NAME
      
      Model: nvme_card-pd (nvme)
      Disk /dev/DEVICE_NAME: 21.5GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End     Size    File system  Name  Flags
      14      1049kB  4194kB  3146kB                     bios_grub
      15      4194kB  134MB   130MB   fat16              boot, esp
      1       134MB   21.5GB  21.3GB  ext4
      
    3. הרחבת מערכת הקבצים:

      • אם משתמשים ב-ext4, צריך להשתמש בפקודה resize2fs:

        sudo resize2fs /dev/PARTITION_NAME
        

        מחליפים את PARTITION_NAME בשם המחיצה של דיסק האתחול, לדוגמה, nvme0n1p1.

      • אם משתמשים ב-xfs, צריך להשתמש בפקודה xfs_growfs:

        sudo xfs_growfs -d /
        
      • אם משתמשים ב-btrfs, צריך להשתמש בפקודה btrfs:

        sudo btrfs filesystem resize max /
        
  7. בדיסק נתונים שלא משמש לאתחול, משנים את הגודל של מערכת הקבצים בדיסק.

    • אם אתם משתמשים ב-ext4, השתמשו בפקודה resize2fs כדי להרחיב את מערכת הקבצים:

      sudo resize2fs /dev/PARTITION_NAME
      

      מחליפים את PARTITION_NAME בשם המחיצה של דיסק הנתונים. בדוגמה הזו, שם המחיצה הוא /dev/nvme0n2p1.

    • אם אתם משתמשים ב-xfs, השתמשו בפקודה xfs_growfs כדי להרחיב את מערכת הקבצים:

      sudo xfs_growfs MOUNT_DIR
      
    • אם אתם משתמשים ב-btrfs, השתמשו בפקודה btrfs כדי להרחיב את מערכת הקבצים:

      sudo btrfs filesystem resize max MOUNT_DIR
      

      מחליפים את MOUNT_DIR בנקודת הטעינה של המכשיר. נקודת הטעינה מופיעה בעמודה MOUNTPOINT בפלט של הפקודה lsblk.

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

    df -h /dev/PARTITION_NAME
    
    Filesystem       Size  Used  Avail    Use%     Mounted on
    /dev/nvme0n2p1   118G  70M   118G     1%     /mnt/disks/data
    

מכונות וירטואליות של Windows

כדי לשנות את הגודל של המחיצות במכונה של Windows, משתמשים בכלי לניהול דיסקים של Windows.

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

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

  3. לוחצים לחיצה ימנית על כפתור ההתחלה של Windows ובוחרים באפשרות Disk Management כדי לפתוח את הכלי Disk Management.

    בוחרים בכלי Windows Disk Manager בתפריט ההקשר של לחצן ההתחלה של Windows.

  4. כדי להציג את סוג המחיצה של הדיסקים, מריצים את הפקודה הבאה ב-PowerShell:

    Get-Disk
    

    בעמודה Partition Style, אם הערך הוא MBR, סוג המחיצה של הדיסק הוא MBR. כלומר, הגודל המקסימלי של דיסק כזה יהיה 2TB.

  5. מרעננים את הכלי Disk Management כדי שיזהה את המקום הנוסף בדיסק. בחלק העליון של החלון Disk Management, לוחצים על Action ובוחרים באפשרות Refresh.

    לוחצים על תפריט הפעולות ובוחרים באפשרות Refresh כדי לעדכן את פרטי הדיסק בכלי Disk Management.

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

    לוחצים לחיצה ימנית על החלק המפורמט של הדיסק ובוחרים באפשרות Extend Volume.

  7. פועלים לפי ההוראות ב-Extend Volume Wizard כדי להרחיב את המחיצה הקיימת כך שתכלול את המקום הנוסף בכונן. אם המחיצה הקיימת בפורמט NTFS, הגודל המקסימלי של המחיצה מוגבל על ידי הגדרות גודל האשכול שלה.

  8. אחרי שמסיימים את Extend Volume Wizard והנפח מסיים את הפורמט, בודקים את העמודה Status ברשימת הדיסקים המצורפים כדי לוודא שהסטטוס של הדיסק החדש הוא Healthy.

    ברשימת הדיסקים שזוהו על ידי Windows, מוודאים שהמכונה במצב Online ובסטטוס Healthy.

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

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