רד-האט, תתאפסו על עצמכם?

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

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

כבר שוחחתי עם מומחים לנושא וכבר התחלתי להתארגן לנושא מבחינת שרתים, ספרות (עקב האכילס של רד-האט, הספרות של KVM לעומת המגוון הענק של ספרות שיש על VMWare או Xen או אפילו Hyper-V!) וכו’. כבר חשבתי להתחיל במו”מ לרכישת רשיונות ל-RHEV החדש ואולי להרים איזה שרת או 2 פיזיים לשם טסטים עם oVirt, שנראה על מה מדובר..

ואז רד האט החליטה לשנות כיוון. במקום להמשיך עם ה-RHEV ועם כל הטרראם של oVirt, הם החליטו לשנות את המוצרים שלהם לכיוון של Open Stack. מי שלא מכיר – Open Stack הוא פתרון מבוסס קוד פתוח שמשתמש ברכיבים שונים כדי לתת פתרון Cloud. בארגון Open Stack חברים כל המי ומי, בין אם זה Dell,HP, VMWare, דרים-הוסט, NASA וכו’ אפשר לראות את הרשימה כאן.

באופן עקרוני, Open Stak מורכב מחלקים שונים, ולא מדובר בפתרון שאתה מוריד, מריץ סקריפט קצר ותוך חצי שעה יש לך מערכת מוכנה. זה פתרון שמצריך מחשבה, תכנון, כמה מפתחים, תקציב ניכר וכו’. חברות כמו Nebula ואחרות מוכרות פתרון Open Stack מוכן, עם מחיר תואם (יש גם גירסת קהילה שהיא הגירסה הישנה יותר במקרה של Nebula).

זוכרים את רד-האט עם RHEV? אז זהו, הם החליטו ש”גם אני איתם”. בהתחלה זו היתה הצטרפות להנהלה, אבל משם הדרך היתה קצרה ורד-האט החליטו לשנות כיוון לחלוטין, גם להם יהיה Open Stack רשמי משלהם (כיום הגירסה הרשמית שאפשר להוריד ללינוקס רצה על פדורה הרשמית האחרונה). קוראים לזה Red Hat Open Stack וגם אתם יכולים להוריד את גירסת ההתנסות בחינם. אתם רוצים להריץ את גירסת החינם הזו? תלוי איזו הפצה יש לכם. CentOS? חה! שכח מזה! זה ירוץ רק על RHEL, כלומר תוציא איזה 900 דולר על הפצת לינוקס בשביל .. טסטים.

זכותם המלאה של רד-האט לשנות כיוון ולהוציא מוצר אחר שמבטל את המוצר הנוכחי שלהם, אבל הם צריכים להתנהג באחריות. חברות צריכות לדעת על מה מדובר ומראש. אם אתם הולכים לאמץ טכנולוגיה XYZ צריך שתהיה מפת דרכים, תהליך מיגרציה מפתרון אחד לפתרון אחר, וצריך גם לשוחח עם הקהילה, לראות לאן הרוח נושבת! כרגע יש כל מיני גרסאות של Open Stack שנמכרות ע”י חברות שונות, ויש מוצרים (כמו Crawbar של Dell) שרצים על גירסה אחת ולא רצים על גירסה אחרת או על גרסאות שיצרנים אחרים שמשתמשים ב-Open Stack מוכרים, בקיצור יש בלאגן לא קטן.

בנוסף, הפתרון עם Open Stack הוא פתרון שמתאים ל-Corporate אבל לא ממש מתאים לפתרונות כמו שהעסק שלי או כל עסק Hosting אחר יכול להציע. המפרט של Open Stack מדבר על אחסון (בדומה ל-S3) שירוץ על Storage. רילי? כי אף ספק שאני מכיר לא רכש ולא ירכוש Storage מ-NetApp, EMC וכו’. כולם מדברים על Storage שמבוסס ברפרוף על משהו כמו GFS2 + עוד כמה חלקים, אבל Open Stack לא נותן שום פתרון קונקרטי שאני יכול לדחוף אותו על שרתים עם המון דיסקים (ואם יש פתרון כזה במסגרת Open Stack, אשמח אם תאירו את עיניי).

וכאן מתחילה הבעיה: באיזה כיוון ללכת? ועם מה? מה הפתרון של רד-האט יותר טוב מהפתרון של Nebulla או SuSE/Novell? איפה הפתרון של רד-האט מתאים יותר לשוק ה-Hosting? לדרוש מבחינת מפרט שספק VPS יקנה 20 שרתים ואיזה 100 דיסקים, סוויצ’ים וכו’ זה נחמד – אבל אני לא רואה שום מסמך מ-רד-האט איך השקעה כזו עם פתרון הוירטואליזציה שלהם מחזיר את הכסף ונותן משהו מועיל ששווה.

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

רד-האט מציגים: איך לפספס את השוק בגדול

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

בימים האחרונים יצא לי לשחק מעט עם KVM. לא המתג/שיטת חיבור שרתים אלא התוכנה של רד-האט (שרכשה את קומרנט, החבר'ה שלקחו את QEMU שכתב פאבריס בלארד ואחרים וקומרנט הוסיפו לו דברים. אגב, מישהו מרד-האט/קומרנט חשב פעם לתת איזו מתנה נחמדה לפאבריס בלארד? הבנאדם כתב משהו מהפכני ולא ראה מזה אירו שחוק אחד!).

אחרי שהקמתי כאן בבית "מעבדה" קטנה וניסיתי את מה שרד-האט הוציאו, וניסיתי גם את הגרסאות קוד פתוח (KVM, libvirt, virt-manager וכו') וחשבתי על הדברים, המסקנה שלי היתה פשוטה:

אוי אברוך…

ראשית, אני רוצה להיות ברור: מבחינת ביצועים זה עוקף מתחרים כמו מיקרוסופט ו-Citrix/Xen! תסתכלו בתוצאות כאן לדוגמא, ותוכלו לראות שהתחרות היא בין VMWare ל-KVM שנמצא ב-RHEL גרסאות 6.0 ו-6.1. מרשים? לדעתי, בהחלט.

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

  • אם נסתכל לדוגמא בדפים של Linux-KVM (האתר לגירסת KVM קוד פתוח), נראה המון לינקים, אבל עיון בלינקים מגלה שתוכן רב כבר לא רלוונטי, חלק כתוב באופן חובבני, ובשום מקום אין תיעוד מסודר מ-א' ועד ת' כיצד לעבוד עם KVM וכיצד לעבוד עם היכולות שלו.
  • כשמסתכלים על תיעוד בחלקים אחרים (כמו libvirt) הוא חלקי מאוד, ישן וחסרים חלקים רבים. איך בדיוק עובדים עם זה?
  • דואליות: יש Virt-manager, ויש את OVirt. פרוייקט OVirt אמור להיות הגירסת קוד פתוח של RHEV, אך בשלב זה אין חבילות ממש. איך אתה בקימפול מ-GIT מבלי לדעת מי בא לפני מה? תהנה.
  • אין גירסא חינמית רשמית: אתה יכול להתקין Fedora ולשחק עם virt-manager. להגיע רחוק עם זה לא תגיע אלא אם תתחיל לשבור את הראש על המון פקודות ופרמטרים. מישהו ברד-האט חשב אולי להוציא ISO קל להתקנה כמו ש-Citrix עשו כך שאפשר בכמה דקות להתחיל להקים מכונות ולהתנסות? לא נראה לי. המתחרים לעומת זאת, בהחלט נותנים גרסאות חינמיות. גם מיקרוסופט וגם VMWare וגם Citrix.
  • יצוגיות באתר: דיאטה חזרה לאופנה? כך כנראה ברד-האט חושבים. כמות הנתונים באתר של רד-האט לגבי הצעת הוירטואליזציה שלהם מביכה בקטנותה. תנסו להשוות את זה מול מיקרוסופט לדוגמא. איך לכל הרוחות הלקוחות אמורים לקבל מידע?
  • שיווק: יש שיווק ברד-האט לגבי הוירטואליזציה? כי בקושי שומעים משם משהו. בארץ המצב יותר גרוע: מי שמשווק רשמית פה את זה (או אמור לשווק) זה מטריקס, בדיוק אותה חברה שמשווקת רשיונות ל-VMWare ול-Hyper-V. זה נחמד שהם משווקים, אבל להם אין שום יתרון ב"לדחוף" Hyper-V על פני פתרונות אחרים, כך יוצא שרק אם תדרוש מפורשות RHEV ותיפול על סוכן מכירות שמכיר את המוצר, תוכל לרכוש.
  • תמיכה: יש חיה כזו? אם כן, מי תומך? אני לא מכיר אפילו אחד שממש מכיר RHEV ויודע לתמוך.
  • תצוגה גרפית: רד-האט טוענים שבגירסה 3 הממשק משתמש "שופר". בי נשבעתי כי ניקיתי את משקפיי היטב והשינויים שראיתי היו מינוריים. הממשק עדיין סיוטי כשמשווים אותו מול הממשקים של המתחרים. אולי כדאי לפתר את איש ה-UX ולהביא מישהו שאמור להבין שמי שישתמש בזה הוא קודם כל בנאדם ולאו דווקא גאון?
  • התממשקות: לפחות לפי המצגת שהוצגה באתר Ovirt, השפה שאתה יכול להתממשק ל-RHEV זה .. פייטון. יופי רד-האט, מה עם שפות יותר פופולריות כמו Perl או PHP? אולי אפילו BASH לדברים קטנים?

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

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

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

כמה מילים על SDK, libvirt, KVM, VMWare – פספוסים ותחרות

לפני מספר ימים כתבתי כאן פוסט שאני מחפש אחר איש שמבין טוב ב-PERL כדי לעבוד עם ה-SDK של VMWare על פרוייקט פאנל לעסק שלי.

היו מספר פניות (מספר קטן מאוד: 2) של אנשים שיש להם ידע ב-PERL, אבל היו אחרים כמו ידידי עמוס שפירא וצפריר כהן ועוד מספר אנשים שהמליצו המלצה מאוד הגיונית: במקום להיתקע ולכתוב איזה משהו שתלוי רק בטכנולוגיה אחת, כדאי להסתכל על libvirt, ספריה שנותנת פתרון שמתממשק לא רק ל-VMWare אלא לכל טכנולוגיית וירטואליזציה פופולרית.

מכיוון שעכשיו חול-המועד ובימים כאלו אין הרבה עסקים, החלטתי להתעמק קצת ב-libvirt.

אם יש משהו שאפשר לאמר על libvirt זה שזו ספריה מעולה ומהפכנית. מה ש-FFMPEG עשה בתחום האודיו/וידאו, libvirt עושה בתחום הוירטואליזציה. ספריה אחת שניתנת לשימוש עם מספר שפות (JAVA, PHP, C, Python, Perl, Ruby) ודרכה אתה יכול לשלוט על המערכות וירטואליזציה בחברה שלך, ולא חשוב על מה הן מבוססות, הספריה תומכת בהכל:  Hyper-V, Xen, KVM, VMWare ועוד. כל מה שצריך זה לקמפל את הספריה עם התמיכה המתאימה (קבצי ה-RPM בנויים עם תמיכה להכל). יש גם גירסה ל-Windows (אם כי קצת יותר ישנה).

השימוש ב-virsh יכול להתבצע ב-2 דרכים: הראשונה היא דרך פקודת virsh שנותנת לך להתחבר לשרתים, להריץ פקודות ועוד. האפשרות השניה היא להשתמש ב-libvirt כספריה, להשתמש בשפה האהובה עליך ולשלוף/להכניס מידע לוירטואליזציה דרך הספריה.

הכל טוב ויפה, לא?

זהו, שלא כל כך…

הבעיה הגדולה ביותר של libvirt זה התיעוד והפיתוח שלו. הפיתוח עצמו נעשה ע"י מפתח בשם Daniel P. Berrangé, שחוץ מ-libvirt הוא עובד על עוד כמה דברים. התיעוד עצמו גרוע. כמה גרוע? רשומים פונקציות ופקודות, אבל תוכן לפקודות עצמן במסמך – אין. אם נלך לפי מספרים, וניתן ציון 80 לתיעוד של RHEL, אז הציון לתיעוד של libvirt הוא אולי 20. המסמך שקיים מדבר על 2 גרסאות אחורה, ואין שום מסמך שמציין מה ההגבלות של כל דרייבר, כך שהאפשרויות העומדות בפניך הן לחפש בגוגל ולראות אם מישהו כתב קצת הסברים על כל מיני פקודות, או להתחיל לחפור בקוד ולהבין משהו מזה. יש ספר שמדבר על KVM עם libvirt, רק שהספר בגרמנית. בא לך לסמוך על התרגום של גוגל Translate?

למען האיזון אני יכול לציין שגם התיעוד ב-SDK של VMWare לוקה בחסר. לדוגמא: אם מסתכלים על הפקודה vmcreate.pl אפשר לראות שחסרים המון פרמטרים. היכן לדוגמא הפרמטר ל-thin provisioning? מה עם כל האפשרויות של ניהול משאבים בלי resource manager? לך חפש בגוגל, אולי מישהו מצא לזה פתרון עוקף..

אבל הבעיה היותר גדולה לדעתי היא של Red Hat, חברה שכבר הרוויחה מעל מיליארד דולר ועדיין תקועה בעבודה כאילו העסק מורכב מ-3 וחצי מתכנתים. פרויקט כמו libvirt או פרוייקטים סמוכים כמו oVirt, Virt-Manager יכולים למשוך קהל לקוחות רחב, אם הפרוייקט יכתב ויתועד בצורה מקצועית. מקצועית זה אומר לא לכתוב אפליקציות דסקטופ אלא אפליקציית ווב, לשכור מהנדס עיצוב  שיפתר מהזוועה העיצובית של אותם אפליקציות, לכתוב תיעוד מלא לכל פיפס.

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

רבים טוענים "KVM חופשי ובחינם, אתה יכול להשתמש בזה". טכנית הטיעון מוצדק, אבל חברות מחפשות נוחות, קלות שימוש וכמה שפחות תחזוקה, ו-KVM שמגיע עם Fedora או Ubuntu הוא הדבר האחרון שאפשר לקרוא לו "קל". תסתכלו לדוגמא על Citrix: לקחו גירסת לינוקס, הצמידו לה את Xen, בנו GUI (שרץ על Windows בלבד כ-Client) קראו לזה XenServer והחלו לחלק אותו בחינם לכל אחד שרוצה. יש לו כמובן פונקציות רבות שנעולות לשימוש (אלא אם תרכוש רשיון), והרבה מאוד חברות משתמשות בזה . תארו לכם ש-Red Hat היו מוציאים דבר כזה בחינם (עם אפשרויות הרחבה בתשלום כמובן)? לרד-האט יש שם מוכר בשוק ובמיוחד ב-Enterprise והרבה היו מתעניינים ומנסים את המוצר..

אבל Red Hat מעדיפים למכור את ה-RHEV המוצר שקומרנט פיתחה לפני ש-Red Hat רכש אותם. לדבר הזה אין אפילו Trial כך שקשה אפילו לשפוט את המוצר מדף הסופי. פלא שהמוצר שלהם נמצא אי שם למטה מבחינת נתח שוק?

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

כשטכנולוגיה נופלת בין הכסאות

רוב הקוראים הטכניים כאן מכירים פתרונות וירטואליזציית PC כמו VMWare, Xen, KVM ועוד, ולמי שלא מכיר: הכוונה לתוכנה שמדמה 2 (או יותר) מחשבים שמריצים מערכות הפעלה דומות או שונות על המחשב המארח. מערכת ההפעלה המדומה נקראת Guest והמחשב המארח נקרא Host.

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

אינטל מכירה את הבעיה עוד ממזמן ומהנדסיה גם המציאו פתרון עוד ב-2006 לכך. הפתרון הוא מעין “תוספת” הנקראת VT-d (או איך שאינטל קוראים לזה: Intel® Virtualization Technology for Directed I/O) והוא ממומש ב-2 חלקים: ה-VT-d נמצא במעבד וה-VT-x נמצא בצ’יפ הגשר הצפוני (אפשר לקרוא על כך בהרחבה כאן)

הפתרון של אינטל, בקצרה, הוא שיטה של שימוש ב-DMA של המחשב על מנת למפות אזורי זכרון (ומכאן גם ציודים) למכונות הוירטואליות בגישה אקסלוסיבית למכונה הוירטואלית. דוגמא פשוטה: אם יש ברשותך 2 כרטיסי מסך, תוכל למפות את אחד הכרטיסים ישירות למכונה הוירטואלית, וכך תקבל ביצועים מקסימליים, תוכל להריץ משחקים, אפליקציות תלת מימדיות וכל דבר שחשקה בו נפשך מבלי להזדקק לאמולציה שתוכנת הוירטואליזציה תספק עבורך. דוגמא אחרת היא גישה אקסלוסיבית לפורטי Ethernet. כיום ההגבלה היא ברמה של תוכנת הוירטואליזציה, אבל עם VT-d ההגבלה היא ברמת ה”ברזלים”, כך שיוצא מכך שכשיש VT-d, אפשר לקבל ביצועים הרבה יותר גבוהים וגם למפות ציודי PCI וכו’ למכונות וירטואליות.

הכל טוב ויפה. ניקח מחשב רגיל (לא שרת) שנרכש בשנה, שנתיים האחרונות וניכנס ל-BIOS ונחפש את הפוקנציה הזו (היא אמורה להימצא בהגדרות של ה-North Bridge). רוב הסיכויים שאם תחפשו לא תמצאו את זה. זה קיים בחלק גדול מהלוחות שאינטל עצמה מייצרת, קיים בשרתים, קיים על מק פרו ומקבוק פרו, אבל על רוב הלוחות של שאר היצרנים זה לא נמצא. יותר גרוע: בתוכנות הוירטואליזציה גם שם התמיכה היא בעייתית, בלשון המעטה: ב-ESX (גירסאות 3.5 ומעלה) יש תמיכה ל-VT-d אבל לא ב-Workstation. ל-Xen יש תמיכה כלשהי (שמסובכת בטירוף, אגב) אבל לא ל-QEMU הרגיל. ב-Parallels יש תמיכה אך ורק בגירסא מיוחדת של התוכנה וגם אז זה רץ אך ורק על דגם מסוים של תחנת עבודה של HP. ב-KVM יש תמיכה אבל תצטרך לקמפל קרנל ולמפות ידנית את הציוד כדי “להסיר” אותו מהמכונה המארחת ולהפעיל אותו במכונה הוירטואלית.

ובכן, מדוע המצב כל כך גרוע עם VT-d? יצרני הלוחות מפנים אצבע מאשימה כלפי אינטל. כך לדוגמא חברת ASUS מדברת על כך שבשביל VT-d יש צורך ב-DMA Remappping (אותו מיפוי שכתבתי עליו פה בהתחלה) והטבלאות שאינטל מספקת ליצרני ה-BIOS וליצרנים אחרים הם בעייתיים בלשון המעטה, מה שאומר שיש לא מעט סיכוי שברגע שתפעיל את המכונה הוירטואלית, המחשב שלך כולו יתקע. אינטל מצידה דווקא לא הכניסה את טכנולוגיית ה-VT-d לכל המעבדים אלא רק למעבדי Core 2 Duo VPro ולמעבדי XEON לתחנות עבודה ושרתים. מדוע אינטל לא דחפה את הטכנולוגיה לכל המעבדי Mainstream שלה כמו שהם הכניסו את ה-VT? אה, שאלה טובה, מצוינת אפילו, אבל לאינטל אין תשובות. מצד שני, אם אתה תקנה היום מעבד כמו i7 אז הפעם זה כבר בפנים.

וכך נוצר מצב עצוב שבו יש טכנולוגיה עם פתרון לבעיות וירטואליזציה למשתמשים כבדים, אבל עקב תקלות באינטל הטכנולוגיה לא חדרה ממש לא ברמה של הסיליקון וכמעט שלא ברמה של הפתרונות וירטואליזציה הקיימים. אם אתה משתמש בתוכנה כמו VMWare Workstation או VirtualBox אז צר לי, אין תמיכה ב-VT-d כרגע, 4 שנים אחרי שאינטל המציאה (אההמ… “המציאה”.. החבר’ה ב-IBM נשפכים מצחוק) את הטכנולוגיה. אם זה לא היה עצוב, זה היה מצחיק..