עובסות והקצאה דקה: מה ההבדל?

הקצאת עובי

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

קיימים שני תת-סוגים של דיסקים ווירטואליים מסוג עבה:

  • A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but this space may contain some old data on the physical media. This old data is not erased or written over, so it needs to be “zeroed out” before new data can be written to the blocks. This type of disk can be created more quickly, but its performance will be lower for the first writes due to the increased IOPS (input/output operations per second) for new blocks;
  • דיסק ברזולוציה אפזרית יותר הוא דיסק שמקבל את כל המקום הנדרש עדיין בזמן יצירתו, והמרחב מומחק מכל הנתונים הקודמים על המדיה הפיזית. יצירת דיסקים ברזולוציה אפזרית יותר מועכבת יותר, מכיוון שאפסים נכתבים לכל הדיסק, אך הביצועים שלהם מהירים יותר במהלך הכתיבה הראשונית. תת-סוג זה של דיסק ווירטואלי מסוג עבה תומך בתכונות אשכולות, כגון אמינות תקליטורים.

למטרות אבטחת מידע, יישום האפסה המהירה יותר נפוץ מאשר האפסה העצלה עם דיסקים וירטואליים שהוקצו באופן עבה. למה? כאשר אתה מוחק VMDK, המידע באחסון הנתונים לא נמחק לחלוטין; הבלוקים סימנו פשוט כזמינים, עד שמערכת ההפעלה תדרוס אותם. אם תיצור דיסק וירטואלי שאופסן באופן עקרוני באחסון הנתונים הזה, אז אזור הדיסק יימחק לחלוטין (כלומר, ייאפס), מונע מאף אחד עם כוונות רעות לשחזר את המידע הקודם – גם אם הם משתמשים בתוכנה מתקדמת של צד שלישי.

קיצור דק

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

לדוגמה, אם תיצור דיסק וירטואלי חדש בגודל של 30GB שהוקצה באופן דק ותעתיק 10 GB של קבצים אליו, גודל קובץ ה-VMDK המתוצאה יהיה 10 GB, בעוד שהיית מקבל קובץ VMDK בגודל של 30GB אם היית בוחר להשתמש בדיסק שהוקצה באופן עבה.

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

בעיות שעשויות להתרחש בעת השימוש בדיסקים וירטואליים בקיצור שטח

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

בואו נשקול דוגמה שמרנדרת את המכונות הווירטואליות בלתי שימושיות. לדוגמה, יש לנו מאגר נתונים בגודל של 20 ג'יגה־בייט עם שלוש מכונות וירטואליות פועלות עליו. לכל מכונה וירטואלית יש דיסק וירטואלי שנקרא "thin-provisioned" והוגדר בגודל מרבי של 10 ג'יגה־בייט. (הפעולה הזו נקראת "על־פרות", שכן אנו מעניקים לדיסקים הווירטואליים יותר מקום מה שהם יכולים לתפוס משמעותית. נעשה זאת לעתים קרובות, שכן זה מאפשר לך להתאים את המערכת על־ידי הוספת אחסון פיזי נוסף ככל שצריך.) גודל קובץ כל דיסק וירטואלי יתרחב כאשר מתווספים נתונים, עד שאין יותר מקום פנוי במאגר הנתונים. המצב מתבצע כאשר יש רק 1 ג'יגה־בייט פנויים במאגר הנתונים, כמו שקורה, לדוגמה, כאשר המכונה הווירטואלית 1 תופסת 8 ג'יגה־בייט, המכונה הווירטואלית 2 תופסת 7 ג'יגה־בייט, והמכונה הווירטואלית 3 – 4 ג'יגה־בייט.

שיטות רגילות של מחיקת קבצים בתוך מכונות וירטואליות לא יעזרו להקטין את הדיסקים הווירטואליים שנקראים "thin-provisioned". אם נכתוב יותר מ־1 ג'יגה־בייט של נתונים חדשים לאחת מהמכונות הווירטואליות הללו, כל שלושתן ייכשלו, ויהיה עליך להעביר אחת או יותר מהמכונות הווירטואליות למאגר נתונים אחר כדי לשחזר את מצבן הרץ.

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

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

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

הקטנת דיסקים משורשיים דקים ב-VMware ב-Linux

נשקול דוגמה: יש לנו קובץ VMDK בגודל של 10,266,496 קילובייט (10GB) (למדנו על גודלו על ידי התנייד לתיקייה באחסון הנתונים שבה ממוקמת המכונה הווירטואלית שלנו) ורוצים להקטין את הדיסק הווירטואלי בו מותקן מערכת ההפעלה הלינוקס של האורח. ניתן לנסות למחוק קבצים לא נחוצים על הדיסק הווירטואלי הזה. אולם, לינוקס לא מאפשר את איפוס הבלוקים אוטומטית לאחר מחיקת קבצים; תצטרך לעשות זאת בעצמך. אפשר לעשות זאת באמצעות הכלי dd (משכפל נתונים) להעתקה והמרת נתונים. כלי זה זמין בכל מערכות הלינוקס.

הערה: לפני הפעלת כלי ה-dd, חשוב לוודא שיש באחסון הנתונים קיבולת מספיקה לשימוש בו (לדוגמה, עבור שרת ESXi, ניתן לבדוק את קיבולת האחסון בחלק האחסון של לקוח vSphere – עבור ל-תצורה > אחסון).

נשתמש בכלי ה-dd.

  1. ראשית, אנו בודקים את המקום הפנוי במכונה וירטואלית של Linux על ידי שימוש בפקודת df -h:

    root@test-virtual-machine:/# df -h

    אנו מקבלים את הפלט הבא בקונסולה:

    Filesystem   Size   Used   Avail   Use%   Mounted on
    udev         469M   0      469M    0%     /dev
    tmpfs        99M    6,3M   92M     7%     /run
    /dev/sda7    17G    8,8G   6,4G    58%    /
    tmpfs        491M   116K   491M    1%     /dev/shm
    tmpfs        5,0M   4,0K   5,0M    1%     /run/lock
    tmpfs        491M   0      491M    0%     /sys/fs/cgroup
    /dev/sda1    945M   121M   760M    14%    /boot
    /dev/sda6    3,7G   13M    3,5G    1%     /var/log
    tmpfs        99M    36K    99M     1%     /run/user/1000
    

    ניתן לראות מהפלט הזה כי המחיצה / (שורש) מכילה 8.8 GB של קבצים.

  2. בואו נמחק מספר גיגה-בייט של קבצים לא נחוצים במחיצת השורש. זה מה שאנו רואים בקונסולה, אם נריץ את הפקודה df -h /:

    Filesystem   Size   Used   Avail   Use%   Mounted on
    /dev/sda7    17G    4,7G   11G     31%    /

    לכן, מחיצת השורש שלנו מכילה כעת 4.7 GB של קבצים. אך, בעת התניידות לתיקייה שבה נמצא הקובץ VMDK שלנו, ניתן לראות כי גודלו עדיין הוא 10,266,496 KB (10 GB).

  3. עכשיו אנחנו הולכים למלא את השטח החופשי באפסים (במקרה שלנו, נמלא 10 ג'יגה-בייט מתוך 11 ג'יגה-בייטים שזמינים). תחילה, אנחנו מקלידים cd ואז את שם התיקייה שבה ממונטת המחיצה שצריך למחוק (במקרה שלנו זה cd /, משום שאנו רוצים לנווט אל המחיצת שורש). לאחר מכן, אנו מריצים את הפקודה הבאה, שבה נשנה את המשתנים כדי להתאים לצרכים שלנו:

    dd bs=1M count=10240 if=/dev/zero of=zero

    בפקודה זו:

    • dd יכול להיות מופעל רק על ידי משתמש עם הרשאות מנהל מערכת (super user).
    •  bs מגדיר את גודל הבלוק (לדוגמה, bs=1M יקבע לך בלוק בגודל 1 מגה-בייט).
    •  count מציין את מספר הבלוקים שיש להעתיק (ברירת המחדל היא ש־dd ימשיך לרוץ תמיד או עד שהקלט ייגמר). במקרה שלנו, 10,240 מגה-בייט הוא הכמות של השטח החופשי שאנו רוצים למלא באפסים, כך שמספר הבלוקים בגודל של 1 מגה-בייט הוא 10240.
    •  if מציין "קובץ קלט". כאן עליך לציין את המקור ממנו אתה רוצה להעתיק נתונים. במקרה שלנו, זהו /dev/zero – קובץ מיוחד (מכשיר פסאודו) שמספק כמות רבה של תווים אפסים כפי שתרצה לקרוא ממנו.
    •  of מציין "קובץ פלט". כאן אתה מגדיר את היעד שבו אתה רוצה לכתוב/להדביק את הנתונים שלך (במקרה שלנו, שם הקובץ הוא zero).

    לאחר ביצוע הפקודה הנ"ל, גודל קובץ ה־VMDK שלנו גדל. זוהי הפלט שאנו רואים לאחר הצלחת ביצוע הפקודה:

    10240+0 רשומות נקלטו
    10240+0 רשומות הוצאו
    10737418240 בתים (10 ג'יגה-בייט) הועתקו, 59.4348 שניות, 181 מגה-בייט/שניה
    הפקודה הושלמה בהצלחה.

    לכן, כעת גודל קובץ ה־VMDK שלנו הוא 11,321,856 קילו-בייטים (10.8 ג'יגה-בייט), שזה אומר שהוא הרחיב. בנוסף, אם נריץ שוב את הפקודה df -h /, נראה את התוצאה הבאה:

    Filesystem   Size   Used   Avail   Use%   Mounted on
    /dev/sda7    17G    15G    569M    97%    /

    זה אומר שכמעט כל המחיצה השורשית (כלומר 97%) מ

הערה: כדי לבצע התקטרות, נדרש להתקין את VMware Tools.

  1. עבור מכונות וירטואליות שרצות על VMware ESXi או VMware Workstation, אנו מבצעים את שתי הפקודות הבאות במערכת הפעלה האורח של Linux.a) כדי לוודא שהמחיצה של הדיסק זמינה, אנו מפעילים את הפקודה הבאה:

    root@test-virtual-machine:/# vmware-toolbox-cmd disk list

    זהו הפלט שאנו רואים במקרה שלנו (כלומר, אנו רואים את רשימת המחיצות הזמינות):

    /
    /boot
    /var/log

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

    root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /

    זהו הפלט שאנו רואים במקרה שלנו:

    אנא התעלם מכל האזהרות בנושא נפח הדיסק למשך תהליך ההתקטרות.
    התקדמות: 100 [===========>]
    ההתקטרות של הדיסק הושלמה.
    

    עכשיו, גודל הקובץ VMDK שלנו שהותקטר הוא 5,323,456 ק"ב (כלומר, 5.08 ג'יגה-בייט – הרבה פחות מה-10.8 ג'יגה-בייט שהיה קודם).

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

  1. כבה את המכונה הווירטואלית, או התנתק מהדיסק הווירטואלי שברצונך לצמצם.
  2. התחבר לשרת ה-ESXi באמצעות לקוח SSH.
  3. נווט אל תיקיית המכונה הווירטואלית.
  4. וודא את שימוש הדיסק באמצעות du -h.
  5. הפעל את vmkfstools -K test-virtual-machine.vmdk.
  6. וודא שוב את שימוש הדיסק באמצעות du -h.

צמצום דיסקים של VMware במצב Thin-Provisioned במערכות הפעלה של Windows

כמו ב-Linux, Windows אינה מאפסת באופן אוטומטי בלוקים לאחר מחיקת קבצים. כדי להיות מסוגל לאפס את השטח החופשי של הדיסקים היעד במכונה וירטואלית שלך ב-Windows, עליך להוריד את SDelete – יישום חינמי מסגרת ה-Sysinternals של Microsoft – ולפרוק את הקבצים מהארכיון שהורדת ל-c:\program files\sdelete

לאחר מכן עקוב אחר השלבים הללו:

  1. הרץ cmd
  2. עבור לתיקייה בה נמצא SDelete. במקרה שלנו, זהו: cd c:\program files\sdelete

  3. עבור כל מחיצה בקונסול, השתמש בפקודת sdelete -z. זה מה שיש לנו במקרה שלנו:

    sdelete -z c:
    sdelete -z d:

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

  4. ודא ש- VMware Tools מותקנות על המכונה הווירטואלית שלך ב- Windows. כברירת מחדל, VMware Tools מותקנות ב- c:\program files\vmware\vmware tools\

    נווט לתיקייה זו על ידי הקלדה:

    cd c:\program files\vmware\vmware tools\

  5. כדי להציג את המחיצות בדיסק הזמינות, הקלד:

    vmwaretoolboxcmd disk list

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

    vmwaretoolboxcmd disk shrink c:\
    vmwaretoolboxcmd disk shrink d:\

    המתן עד שהתוכנה תסיים לצמצם את הדיסק.

ניתן להשתמש בשיטה זו עבור מכונות וירטואליות הרצות על VMware ESXi או VMware Workstation.

מתזמן משאבי אחסון מבוצע באמצעות VMware Storage Distributed Resource Scheduler

למעלה, ציינו פתרון להקטנת דיסקים משוריינים באופן ידני. אך, ישנן עוד דרך אחת לניהול הדיסקים הווירטואליים שלך (הן דיסקים משוריינים והן דיסקים עבים), אם תשתמש באשף datastore cluster ב-vSphere. ומטרה של VMware היא לספק העברת דיסקים וירטואליים אוטומטית בתוך אשף ה-datastore cluster כדי למנוע המערבות של אחסון דיסקים במקום בו ממוקמים דיסקים משוריינים וכדי לאזן את משאבי ה-I/O.

אם יש לך יותר מאשף אחסון משותף מחובר לשרת ESXi, תוכל להגדיר את סבל המשאבים המבוזר (Storage DRS). Storage DRS היא תכונה מתקדמת של vCenter Server המאפשרת לנהל ביעילות את אחסון VMFS ו-NFS ומספקת הזזת דיסקים מכונות וירטואליות אוטומטית. ניתן גם להגדיר את Storage DRS למצב ידני אם אתה מעדיף לאשר המלצות העברת דיסקים באופן ידני.

כדי להפעיל את Storage DRS עקוב אחר השלבים הבאים:

  1. נווט אל אשף ה-datastore cluster ב-vSphere Web Client.
  2. עבור אל vCenter > Datastore Clusters.
  3. בחר את אשף ה-datastore שלך ולחץ על Manage > Settings > Services > Storage DRS.
  4. לחץ על Edit.
  5. הגדר את הגדרות האוטומציה, פונקציות ה-I/O והאפשרויות המתקדמות שאתה צריך.
  6. לחץ על OK כדי לסיים.

אם אין אשפי אחסון בסביבת ה-vSphere שלך, עקוב אחר השלבים הבאים כדי ליצור ולהגדיר אשף אחסון חדש:

  1. נווט אל vCenter > Datacenters ב- vSphere Web Client.
  2. לחץ ימני על Datacenter שלך ובחר New Datastore Cluster.
  3. הזן את שם קבוצת האחסון שלך וסמן את תיבת הסימון ליד "הפעל את שירות DRS לאחסון".
  4. בחר את הגדרות האוטומציה, פונקציות הקשורות ל- I/O, ואפשרויות מתקדמות שאתה צריך.
  5. לחץ על אישור כדי לסיים.

סיכום

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

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

Source:
https://www.nakivo.com/blog/thick-and-thin-provisioning-difference/