וירטואליזציית אחסון

**וירטואליזציית אחסון** משמשת במדעי המחשב על מנת לטייב מערכות אחסון ממוחשבות.

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

בעבר הוויטאוליזציה הייתה מיועדת, בעיקר, לרשתות SAN אך עם זמינות והוזלת רשתות LAN היא עברה גם לרשתות אלו ולאינטרנט.

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

## מיקום ההמרה מכתובת דיסקים וירטואלית לאמיתית
על מנת לבצע את הווירטואליזציה יש להמיר את הכתובת הווירטואלית לכתובת האמיתית (קרי הכתובת שאליה יש להפנות את בקשת הקלט/פלט). ישנן שלוש אפשרויות עיקריות למיקום ההמרה:
* ברמת השרת: יתרון השיטה הוא בשימוש בתוכנה בלבד. אין צורך, כמעט, בחומרה נוספת המייקרת את הפתרון. חסרונות השיטה הם בצורך להתקין תוכנה ייעודית על כל אחד מהשרתים, דבר שגוזל זמן התקנה רב במקרה של מספר שרתים רב. ישנו צורך בפיתוח תוכנה לכל מערכת הפעלה ובנוסף ההישענות על משאבי המחשב המארח גוזלת משאבים אלה מהאפליקציות הרצות עליו במילא.
* בעזרת ממירים (Routers) חכמים היושבים באמצע וחוצים את הרשת לשתיים. רשת ("קדמית") המורכבת מהם ומהשרתים ורשת שנייה ("אחורית") המורכבת מהממירים ומאמצעי האחסון. יתרונה של השיטה היא בהישענות על חומרה ייעודית ובכך לשחרר את משאבי השרתים. מספר הממירים קטן משמעותית ממספר השרתים ולכן זמני התקנת הגרסאות ועדכונן קצרים בהרבה מווירטואליזציה ברמת השרתים. חסרון השיטה הוא הצורך ביתירות, שכן אם אחד הממירים קורס או לא יכול לעמוד במעמסה עליו יש ל"עזור" לו בעזרת ממיר (ים) נוסף (ים). חסרון נוסף הוא בצורך ברכישת חומרה ייעודית הדורשת יותר חשמל (בדמות מיזוג וכו'), והתיישנותה במהרה. מודל זה קיים ברשתות SAN.
* באמצעי האחסון עצמם (שיכולים להיות וירטואליים בעצמם - כדוגמת בענן מחשוב). יתרונות השיטה הם עבודה מיטבית עם החומרה עליה רצה שכבת הווירטואליזציה ואי צורך בהתקנת חומרה או תוכנה נוספות. חסרון השיטה הוא "כבילת המשתמש" לספק מסוים או אפילו לדגם מסוים. יש קושי מסוים לבצע העתקה מאמצעי אחסון למשנהו ללא שימוש במתווך חיצוני.

## דוגמאות לאפליקציות הנתמכות בווירטואליזציה
מאחר שהשרתים כותבים / קוראים אל/מ כוננים וירטואליים ניתן להיעזר באפיון זה על מנת להריץ אפליקציות שונות, שכן מנקודת מבטם של השרתים מיקומו הפיזי של המידע נסתר מהם.
* הגדלה וצמצום של נפחי דיסקים בצורה פשוטה.
* ניתן להקפיא דיסק וירטואלי בנקודות זמן שקובע אחראי הרשת כ"תצלום הבזק" (snapshot), מבלי ל"הפריע" לאפליקציות. בעזרת הקפאה זאת ניתן לגבות את הכוננים. הגיבוי יכול להיות לדיסק מקומי אחר או לרשמקול (שיכול להיות בעצמו וירטואלי). ההקפאה, במקרה כזה, כהפסקת חשמל ושיחזור המידע הוא תלוי תמיכת האפליקציה לכישלון כזה. ניתן גם להתחבר לאפליקציות על מנת לבצע הקפאה "אטומית"; באפשרות זאת יש לעשות שימוש בכלים הנמצאים בחלק ממערכות הפעלה או כלים המסופקים על ידי יצרני האפליקציות. ברוב ההתקנים ישנה אפשרות להקפיא מספר דיסקים בצורה עקבית כאשר יש קשר בין המידע הרשום בדיסקים אלו (למשל קובצי יומן (לוג) של מסד נתונים). ישנם מוצרים המאפשרים לחזור לרמת ה-i/o (קלט/פלט) בודד ובכך לשחזר בצורה מדויקת יותר את המצב שלפני הבעיה. לדוגמה ארגון שנפגע מכופרה יכול לחזור למצב בו לא הופעלה הכופרה ובכך לייתר את דרישת המתקיפים. ניתן לקרוא ולכתוב לתוך עותק של תצלום ההבזק מבלי לפגוע במידע המקורי. העותק של המידע החדש יכול להיות מרוחק או מקומי וכמו כן ניתן להחליט שהעותק הוא מעכשיו יהיה המקור. למשל לעשות בדיקות על כל התצלומים, מעט לעבד אותם ואז לקבוע מי מהם מתאים להיות המקור החדש.
* ספריית רשמקולים וירטואלית משמשת כתחליף לרשמקולים פיזיים. היתרון בכך שאין צורך להסתמך על מדיות איטיות, יקרות ואמינות פחות. תוכנת הווירטואליזציה מחקה את פעולת הרשמקולים, והשרתים משתמשים בתוכנות גיבוי לרשמקולים הנפוצות. בשיטה דומה ניתן לשלוח קבצים לאחסון מרוחק וזול, ובכך לחסוך מדיה מקומית.
* אפשרות להתאוששות מאסון על ידי העתקת המידע למרחקים גדולים בעזרת שימוש ב-Tcp/IP בצורה א-סינכרונית או מרחק קצר בצורה סינכרונית. ההבדל בין שתי השיטות הוא בעדכניות ועקביות המידע. בצורה הא-סינכרונית לא מובטח שכל המידע אכן ישוחזר, ואילו בשיטה הסינכרונית ההתאוששות היא אמינה יותר. יתרונה העיקרי של השיטה הא-סינכרונית הוא ביכולת להפיץ את המידע (שמהירותו מוגבלת על ידי מהירות האור) למרחקים רבים יותר. על מנת לקצר את זמן ה"אתחול" של הגיבוי ניתן להעתיק את הכוננים הבסיסיים למדיות שניתן לשלוח "בדואר רגיל" והן יהוו את "ההעברה הראשונית". בעזרת ווירטאליזציה ניתן להשתמש במדיות זולות (כולל שימוש באחסון ענן) לצורך הגיבוי כלומר ליצור אתר גיבוי זול אך פחות יעיל מאשר האתר המקורי. ניתן לגבות כפעולה יחידה ואז לשכפל את הנתונים כהעתקה מלאה תוך כדי אפשרות למשתמש לעבוד על עותק המידע בצורה מיידית גם לפני סיום ההעתקה בפועל. בחלק מהמקרים אפשר לכתוב את המידע על פי סוגי RAID שונים כשהדיסקים השונים מחוברים למשאבים שונים (מחשבים, חיבורי חשמל וכיוצ"ב). בצורה זאת ניתן להוזיל ולהקל את מלאכת השחזור.
* אפשרות להחליף את התשתית הפיזית (את הדיסקים ה"אמיתיים") מבלי לכבות את השרתים והאפליקציות הרצות בהם. פעולה זאת מתבצעת על ידי תוכנת הווירטואליזציה בצורה שקופה לשרתים אשר מבחינתם לא חשים בהבדל, שכן הם תמיד משתמשים בדיסקים וירטואליים.
* ביצוע Tiering, כלומר מידע הדרוש בתכיפות יימצא באמצעי אחסון מהירים וההפך מידע הפחות נדרש (למשל גיבויים) יכול להיות מאוחסן באמצעי אחסון איטיים וזולים יותר. ישנה אפשרות לבצע Tiering דינמי על ידי דגימת תכיפות השימוש או בשימוש בתובנות BI שמגדיר המשתמש. לדוגמה אזורים מסוימים בדיסקים יכולים לשבת בדיסקים פיזיים מהירים (ואף לדיסקים מבוססי זיכרון הבזק או זיכרון רגיל) ואחרים יכולים להיות מופנים לדיסקים איטיים (ואף שימוש בענן מחשוב). האלגוריתמים העוסקים בכך משיקים לעיתים לאלגורתמי זיכרון מטמון של דיסק קשיח. השימוש באפליקציה זאת מאפשר גם SLA. בניגוד לזיכרון מטמון המידע ימצא לאחר ההעתקה באמצעי אחסון אחד בלבד. ניתן להרחיב בשיטה זאת מערכות קבצים לגדלים עצומים, על ידי העברת קבצים שלא בשימוש לאחסון בענן שיכול להיות (כמעט) בלתי מוגבל. במערכת קבצים ניתן להגדיר מדיניות ניהול קבצים על מנת להחליט היכן יאוכסן הקובץ.
* שימוש בכוננים "רזים". ניתן לתת למשתמשים שטח אחסון גדול מאוד מבלי להקצות בפועל את כל שטח האחסון, אלא רק על פי דרישה. גישה דומה קיימת בשרתי דואר אלקטרוני דוגמת ג'ימייל שבהם ניתן למשתמשים שטח אחסון נרחב שאם אינם משתמשים בו, אין צורך בהקצאה "אמיתית" של שטח אחסון. על מנת "להחזיר מקום" יש צורך בידע שנצבר במערכת ההפעלה לגבי שחרורי מקום (בצורה ישירה או על ידי אבחון).
* יצירת דיסק אתחול אחד המתאים למספר שרתים אשר כולם יקראו ממנו. בכך נחסכת מאחראי הרשת הכנת ועדכון גרסאות לכל שרת ושרת.
* בשימוש ב-DeDuplication (ביטול כפילות) ניתן לחסוך בשטח אחסון על ידי בדיקת הכתיבות ואי שכפולם במקרה של דמיון. בעבר הדבר בא, למשל, לידי ביטוי בעת ארכובים של מידע, שכן רוב המידע המאורכב אינו משתנה בין ארכוב לארכוב. חיזוק משאבי המחשוב והרצון לחיסכון בשטח אחסון הביא לכך שהתקנים מודרניים מבטלים כפילויות גם במידע ראשי ובלתי קבוע. מאחר שתוכנת הווירטואליזציה "רואה" את כל הרשת ביכולתה למצוא דמיון גם בין דיסקים שונים המשרתים שרתים שונים. את המידע "המקורי" שומרים לעיתים על ידי שימוש בפונקציית גיבוב. חלק מהתוכנות גם דוחסות את המידע על מנת לחסוך מקום נוסף. התוכנה יכולה גם "לדבר" עם מערכת הקבצים שמותקנת על השרת ואז לדחוס בצורה מיטבית גם מידע שכבר דחוס (לדוגמה לפענח צרור תמונות דחוסות ולדחוס אותן מחדש). שימוש בשיטות אלו של חיסכון במקום, באות על פי רוב בתוספת של שימוש בכוננים רזים. יש ופעולות אלו מתבצעות באופן מקוון וישנם מקרים שהן מתבצעות ברקע. חלק גדול של התקנים מודרניים משלבים בין השיטות; הן כותבות למדיות מהירות קטנות, מבצעות את צמצומי המידע ואז כותבות למדיות הקבועות.
* הצפנת החומרה המיועדת לאחסון מפני גנבה פיזית של החומרה (להבדיל מהצפנה ברמת מערכת הקבצים).

## דוגמאות לתכונות הנתמכות בווירטואליזציה
מאחר שוירטואליזציה דורשת כח מחשוב, הרי שניתן להוסיף שכבות תוכנה נוספות.
* הוספת שטח אחסון והחלפת התוכנה או החומרה המפעילות את הווירטואליזציה ללא הפסקת האפליקציות (24/7). הוספת השטח יכולה להתבצע על ידי הוספת שטח תחת הבקרים הקיימים (scale up) או על ידי הוספת בקר (scale out). הוספת בקר מועילה, לרוב, לביצועים אך יקרה ומסובכת יותר ליישום.
* "ישור" כתיבות כך שגם כתיבות אקראיות יכתבו לדיסקים הפיזיים כאילו נכתבו בצורה רציפה. דבר זה יקל על דיסקים (ביחוד על דיסקים מכניים) את פעולת הכתיבה.
* תמיכה בהוראות מתקדמות של פרוטוקולי האחסון כגון איפוס מהיר, שכפול ברמת אמצעי האחסון ושחרור מקום.
* תמיכה בכמות רבה של משאבים ככונני מערכות וירטואליזציה (vvol).
* קביעת איכות השירות למשתמש או לדיסק וירטואלי. כלומר ניתן לקבוע רף עליון ורף תחתון לביצועים.
* "קירוב" תכנות למיקום הדיסקים ובכל לייעל ולחסוך זמן השהייה (latency) כשימוש ב-Docker והתקנת אנטי-וירוס. אפשרות להשתמש באחסון קרוב ככל הניתן לאפליקציות (edge) או שימוש ב-global name space. ישנם מוצרי אחסון שתומכים בניתוח הכתיבות או הפעולות בעת מעשה ובכל מייתרות את הקריאות הנוספות על מנת לעבד מידע.
* אפשרות לגשת לנתונים מסוגים שונים של מערכות קבצים, ואף במקביל. כלומר ניתן למשל לגשת לקבצים תוך שימוש ב-NFS וב-SMB בו זמנית.

## קישורים חיצוניים
* Storage Virtualization: The SNIA Technical Tutorial 

## הערות שוליים

קטגוריה:אחסון נתונים
קטגוריה:וירטואליזציה