interhost

הבלוג
הכל על שרתים, תקשורת ולינוקס

ארכיון פוסטים מהחודש "נובמבר, 2011"

ESXi: הגדלת מחיצה ב-CentOS LVM

יום רביעי, 16 בנובמבר, 2011

שלום רב חברים,
היום אני רוצה לדבר על מקרה די שכיח לאחרונה של שינוי גודל דיסק במכונות וירטואליות, המאמר הבא טוב גם לסתם הגדלת מחיצה במערכות מבוססות LVM בלי קשר ל-Vmware או CentOS אבל אני רוצה לדון בפתרון כולו מההתחלה על הסוף.

לא אחת קורה שלקוח מעוניין להגדיל את שטח הדיסק של השרת הוירטואלי שלו. את השלב הראשון של הגדלת גודל הדיסק ב-ESXi – ודאי רובכם מכירים:

ESXi הגדלת שטח דיסק

ESXi הגדלת שטח דיסק

1) לחיצה ימנית על המכונה הוירטואלית. 2) לבחור ב-"Edit Settings" (אגב המכונה יכולה להיות דלוקה, לא חייבים לכבות אותה). 3) לשונית "Hardware" (נפתחת בדיפולט). 4). בוחרים את הדיסק מהרשימה. בד"כ שמו "Hard Disk 1". ולאחר מכן מסתכלים בצד ימין כמו שמופיע בתמונה. 5) רושמים את גדול החדש של הדיסק (מוסיפים את כמות הגיגות שרוצים). 6) לוחצים על "OK".

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

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

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

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00002b0f

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

אם כן, מתוך מערכת ההפעלה, בזמן הריצה (ואחרי שעשיתם גיבוי!) נכנסים כמשתמש root ומוסיפים מחיצה חדשה:

fdisk /dev/sda
n
p
3
t
8e
w

כעת הסבר על מה שעשינו. נכנסו באמצעות fdisk לעריכת של הדיסק שלנו שהוא בעצם גדול יותר מקודם אך המחיצות שלו לא השתנו. בהנחה שיש לנו מחיצה ראשית sda1 ומחיצת swap בשם sda2, הוספנו מחיצה נוספת בשם sda3 (ולכן רשמנו 3 לאחר פקודת p) והגדרנו אותה מסוג LVM (פקודת t מגדירה את סוג המחיצה, כאשר 8e מסמל LVM). (אם נשאלתם לגודל צילינדרים וכאלו פשוט תלחצו enter וזה יקח את כל השטח הפנוי). לאחר מכן שמרנו (פקודת w).

לאחר פקודת w המערכת מוציאה אותנו מ-fdisk. כעת ניתן שוב לתת פקודת סריקת מחיצות ודיסקים partprobe. אם לאחר partprobe אתם מריצים fdisk /dev/sda ולא רואים את המחיצה החדשה שהוספנו (שהיא sda3) אזי צריך לעשות אתחול לשרת (reboot).

שלב שלישי: איחוד מחיצות באמצעות כלי LVM. הרעיון כאן מעניין ומבריק, למעשה LVM מאפשרת לנו להוסיף מחיצות חדשות למחיצה הקיימת בכדי לפרוס את שטחה על מחיצה חדשה ובכך להגדיל אותה. (בדומה ל-VMWARE שניתן להוסיף לו דיקים נוספים וכך להגדיל את ה-datastore, הוא פשוט פורס את עצמו עליהם ובונה דיסק אחד גדול ומתמשך).

מה שצריך לעשות כדי ליישם את הרעיון הוא:

pvcreate /dev/sda3

vgextend VolGroup00 /dev/sda3

lvextend /dev/VolGroup00/LogVol00 /dev/sda3

תיאור למה שעשינו: ראשית יצרנו מחיצת LVM וירטואלית (מדומה) על גבי מחיצה פיזית sda3. שנית באמצעות vgextend פרסנו את קבוצת VolGroup00 על גבי sda3. ובסוף הגדלנו את הדיסק LVM שלנו (בשם LogVol00) על ידי פקודת lvextend כך שהוא ישתמש בשטח הדיסק החדש של sda3 ויוסיף אותו לעצמו כאילו זה היה דיסק אחד גדול.

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

resize2fs /dev/VolGroup00/LogVol00

פה סיימנו. שימו לב שכאן הגדלנו את המחיצה הראשית (ה-ROOT) בלי לפרמט אותה, תוך כדי ריצה וכמובן בלי לאבד מידע. אפשר לבדוק ולאמת שאכן שטח הדיסק גדל ע"י פקודת df -h.

אני ניסיתי את זה על מערכת CentOS עם LVM. כמו שאמרתי אם אין LVM יש דרך אחרת לעשות את ההגדלה בעזרת gparted, באתר של gparted יש להם ממש iso gparted live cd שאפשר לעלות איתו את השרת הוירטואלי ואז בממשק גרפי נחמד אפשר להגדיל את מחיצת ה-ext3 שלנו (כמובן לאחר שהגדלתם את הדיסק ב-ESXi כמו שמופיע בשלב הראשון).

שימו לב: gparted לא תומך (בשלב זה) בהגדלת מחיצות LVM ולכן יש לפעול לפי השלבים שהסברתי פה במדריך הזה.

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