ZFS על לינוקס בהשוואה לפתרונות ZFS אחרים

לפני מספר שנים, חברת Sun שחררה כקוד פתוח את הקוד של ZFS, Solaris וכלים אחרים, והפצות יוניקס שונות אימצו את קוד ה-ZFS בשמחה. כך לדוגמא הפצות מבוססות BSD לגרסאותיו מגיעות עם תמיכה מובנית של ZFS, כמו גם גרסאות קוד פתוח של Open Solaris.

לאחר שחברת Sun נקנתה ע"י Oracle, פרוייקטי הקוד הפתוח נסגרו ומה שנשאר בחוץ – היווה הבסיס ל-ZFS שבשנים האחרונות קיבל Push משמעותי באותן הפצות יוניקס, כמו גם ZFS על לינוקס (שנקרא במקרים רבים ZoL, כלומר ZFS On Linux).

כיום ישנן הפצות יוניקס "ידידותיות" כמו FreeNAS ואחרות שמיועדות לרוץ מ-Disk On Key על מחשב פשוט, ובכך ניתן תוך דקות ספורות להרים "שרת" שיתן שרותי שיתוף שמערכת הקבצים הינה ZFS. ישנה גם מערכת של חברת Nexenta שרצה תחת גירסת קוד פתוח של Solaris אשר מאפשרת לך להרים בעזרת ממשק Web (לא ממש ידידותי, לעניות דעתי) מערכת ZFS.

האם אני ממליץ על מערכות אלו ל-Corporate? לא כל כך, וברשותכם, אסביר.

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

המצב שונה לחלוטין בגרסאות BSD למיניהן, וגם בגרסאות הקוד הפתוח של Solaris (כמו Open Indiana) – שם כמות הפיתוח נמוכה משמעותית ובמקרים רבים היא נעשית ע"י חברות קטנות שמפתחות דרייברים עבור שרת מסוים או Appliance מסוים. אם זה ירוץ על כרטיסים אחרים – מה טוב, ואם לא .. אז תממן פיתוח (כפי שאמרו לי חברת iX systems כשניסיתי להריץ FreeNAS ללקוח עקשן על שרתי DELL מסדרות R7XX).. כמה חברות אתם מכירים שמוכנים לשפוך כמה עשרות אלפי דולרים על פיתוח דרייברים בשביל שמערכת כלשהי תרוץ על שרת שהם רוצים? לא הרבה.

ומה עם אורקל? או, שאלה מצויינת.

אורקל מפתחת דרייבים ל-Solaris הסגור כל עוד השבבים נמצאים בתוך השרתים שהם מוכרים והם גם תומכים ומתקנים באגים אך לשם כך עליך להשתמש ב-Solaris הסגור (ואם אינך משתמש במכונה של Sun/Oracle, התעריף למערכת ההפעלה נע בין 1000-3000 דולר למכונה עם 1-4 מעבדים + 200 דולר עבור DVD – התקליטור, לא הכונן) ומחיר זה מקנה לך את מערכת ההפעלה עצמה, שום דבר אחר.

לאורקל יש ארונות שלמים וגם פתרונות של 4U, 20U ו-36U (תוכל לראות את הדגמים כאן) והמחירים כמובן בשמיים. על גירסת 4U לדוגמא שנותנת 6 טרהבייט (שמורכבים מ-20 דיסקים של 300 ג'יגה + מאיץ כתיבה [כונן SSD]) תצטרך לשלם פה בארץ משהו כמו 200,000 שקל (יש צורך להוסיף מיסוי, תוספת של יבואן וכו' למחיר המופיע בקישור). חשקה נפשך במשהו שנותן כמעט 400 טרהבייט של אחסון מהיר? המנכ"ל יצטרך להיות מעורב, כי בארץ זה יצא בערך מיליון שקל וגירסת ה-736 טרהבייט תצא בין 1.5-2 מיליון שקלים. אגב, מחירים אלו כוללים תמיכה רק לשנה הראשונה. לשנה השניה והלאה, יש צורך בהפרשה של סכומים ניכרים נוספים לתמיכה.

במחירים כאלו, אני בהחלט ממליץ לבדוק פתרונות מתחרים, למרות היתרונות הרבים של ZFS.

שאלה שאני נתקל בה במקרים רבים היא "איזו גירסת ZFS הכי מתקדמת?", ולצערי אין תשובה מאוד פשוטה לכך. ZFS מפותח גם בלינוקס וגם ב-Illumos, אך Illumos הוא Kernel ויש הפצות שונות שמכילות אותו, וגם שם קיימים בעיות של דרייברים לציוד חדש ויש צורך בידע רציני ב-Solaris על מנת להקים ולהתאים מערכת ZFS. יחד עם זאת, החדשות הטובות הן שהצוות שמפתח את ZFS מתייחס גם ל-ZFS On Linux והוא משחרר את רוב הפיתוחים גם לגירסת הלינוקס.

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

אז מה ההמלצה שלי? המלצתי מחולקת למספר חלקים:

  • אם אתם לוקחים PC פשוט ולא חדש (כלומר שיש לו תמיכה ב-BIOS או ב-Legacy Mode ב-UEFI) ויש לכם את הכח ללמוד ולהתנסות על דרך הלימוד והטעיה ואתם צריכים ממשק WEB ולהרים מערכת עכשיו – אתם יכולים לנסות את FreeNAS. החסרון: תמיכה בפורומים לפי המזל שלך. בעבר שיגרתי כמה בעיות רציניות שגיליתי עם FreeNAS שהיה מחובר ל-VCSA, רק כדי לגלות שאף אחד לא עונה.
  • אם המכונה היא PC (לא חדש) או שרת ישן (בן לפחות 3-4 שנים) עם BIOS, אתם יכולים להתקין Nexenta (כל עוד המערכת תכיר בדיסקים, בקרים, רשת ושאר ציוד, לא תמיד הציוד מוכר) עם מגבלה של גירסת ה-Community שלא מקבלת תמיכה רשמית, והגודל (ברוטו) אינו יותר מ-18 טרהבייט (כך שאם יש לך 2 דיסקים של 3 טרהבייט והם יהיו Mirror, אז החישוב הוא של 6 טרה, לא 3). מעבר לכך, המחיר הוא בערך $1800 דולר לשנה (אתם יכולים לראות רשימת מחירים של משווקים שלהם כאן) והמחיר עולה בהתאם לכמות האחסון וברמת התמיכה הרצויה.
  • אם מדובר בשרת רציני או שרת חדש (2 מעבדים ומעלה, 16 ג'יגה זכרון ומעלה, כמות רצינית של דיסקים) ואתם צריכים משהו חזק ויציב – אז ZFS שרץ על לינוקס יכול להוות פתרון מעולה (אפשר ליצור במייל קשר בנושא).

בפוסט הבא אסביר את ההבדל בין ZFS ל-File systems "מתחרים" שקיימים בשוק. פוסט נוסף שמסביר יותר לגבי חסרונות של ZFS On Linux ותשובות לבעיות – מופיע כאן.

[stextbox id="info" caption="גילוי נאות"]כותב פוסט זה נותן שרותי הקמה/תמיכה/אינטגרציה של ZFS לארגונים.[/stextbox]

שימוש ב-ZFS בשרת קבצים מבוסס לינוקס

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

יש בחברה שרת קבצים מאוד רציני שנותן שרותים שונים: CIFS/SMB, NFS, iSCSI ועוד. הוא מתממשק ל-Active Directory של החברה ודרכו שרתים שונים ותחנות עבודה מקבלים שיתופים שונים, הן בצורת "כוננים", כ-LUN וכו'. שרת הקבצים הזה (יכול להיות של NetApp או EMC או של IBM לדוגמא) מאוד קריטי בחברה והוא מאוד יקר, הן מבחינת תכנים שיש עליו והן מבחינת ה"ברזלים" שבו. כל מגהבייט מחושב בקפידה ואי אפשר לבוא למי שמנהל אותו ולבקש "תן לי 2 טרהבייט LUN למספר בדיקות שאני צריך לעשות". בקשה כזו בד"כ תצטרך להיות מלווה בנוהל שמצדיק את המקום, עם תאור מה הולכים לעשות ולמה צריכים את המקום, במקרים רבים יש ישיבות ולבסוף מחליטים אם לאשר או לא, ואם התשובה היא שלילית, ינתן פתרון אלטרנטיבי כלשהו.

מוכר לכם? גם לי זה מוכר.

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

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

  • הביצועים של שרת כזה במקרים רבים הם לא בדיוק מהירים, במיוחד שמחברים אותו לשרותים תובעניים כמו vSphere. ב-vSphere אם לדוגמא תרים מכונות וירטואליות דרך NFS, וכל הדיסקים בשרת קבצים הם דיסקים מכניים (לא SSD) – אתה תכיר את העובדה ש-vSphere מחכה בכל פעם שיש כתיבה לדיסק דרך NFS, שהשרת קבצים באמת כתב כל בייט לדיסק (תקימו מכונת VM מבוססתWindows 7 או 8 ותראו זאת כבר בהתחלה, לדוגמא).
  • גיבוי של שרת כזה מצריך לעיתים פתרונות די "יצירתיים". אם אתה משתמש ב-LVM על הלינוקס, אתה יכול להשתמש בפונקציית ה-Snapshot שלו, אך פתרון זה הוא פתרון די מורכב (והוא בכלל ברמה של מתחת ל-File system). אם תשתמש בפתרונות מבוססים tar או rsync, סביר להניח שתיתקל בבעיות אחרות (במיוחד שכל המכונות הוירטואליות רצות), שלא לדבר על ביצועים נחותים יותר בזמן הגיבוי. (אפשר כמובן לגבות מכונות וירטואליות עם VEEAM לדוגמא, אבל אז מדובר בצורך ברכישת רישוי וכו').
  • אם יש לך הפסקת חשמל או ששרת הקבצים נופל בגלל סיבה כלשהי (בעיות בקר דיסק לדוגמא או כבל SAS סורר), תצטרך לטפל בשרת קבצים ולקוות שה-VMs לא נדפקו, במיוחד אם הם היו עסוקים בפעילות אינטנסיבית של כתיבת קבצים רבים ורק אחר כך לטפל בכל המערכת וירטואליזציה, והסיפור נהיה יותר מורכב כשמדובר ב-Version Control שונים.
  • ויש עוד מספר אתגרים. (חוק מרפי מאוד אוהב מצבים כאלו).

שימוש ב-ZFS לעומת זאת על שרת קבצים כזה יכול להקל על החיים של מי שינהל את השרת בכמה אספקטים:

  1. מבחינת "חזרה לאחור" (הערה: snapshots בכל מערכת אינם גיבויים), אפשר לבצע snapshots מיידים שלא לוקחים כמעט שום מקום ואותם snapshots זמינים מיידית לקריאה והעתקה מהם/שחזור מהם. כך לדוגמא אני מממש סכמת Snapshots:
    1. יצירת snapshot כל רבע שעה (בשיטת FIFO כך שהראשון מושמד בהתחלת שעה וכו')
    2. יצירת snapshot כל שעה עגולה (שוב, בשיטת FIFO) כאשר ה-24 ה-snapshots האחרונים זמינים לי.
    3. יצירת snapshot יומי לכל החודש (31 סטים סה"כ)
    4. יצירת snapshot שבועי (4 סטים סה"כ)
    5. יצירת snapshot דו שבועי (2 סטים סה"כ)
    6. יצירת snapshot חודשי (12 סטים)
  2. לכל הקבצים במערכת יש checksum שנכתב ונבדק אוטומטית ע"י ה-ZFS, כך שאני בטוח מבחינת קבצים וסקטורים מקולקלים. יש בעיה בקובץ? ה-ZFS יקח אוטומטית את הקובץ ממקום אחר (mirror).
  3. אין לי צורך בשום LVM, ואני ממש לא צריך לחשוב על Partitions למיניהם, שלא לדבר על מקום שנגמר בווליום כלשהו. ב-ZFS הכל מחובר ביחד ואפשר לתת מקום לכולם ומצד שני אפשר להגביל מקום או לשמור מקום לצרכים שונים.
  4. יש לי את כל השרותי שיתוף שאני צריך זמינים מיידית. כך לדוגמא אם אני רוצה להגדיר שיתוף NFS, באותה שורה שאני יוצר את השיתוף דרך ה-command line, אני יכול לאמר לו מה יהיה השיתוף ועם מי. גם מבחינת iSCSI אני לא צריך להסתבך יותר מדי ואני יכול להגדיר לי אחד בגודל שאני רוצה (כולל תמיכה ל-thin provisioning) בפקודה אחת פשוטה.
  5. בסופ"ש מערכת ZFS יכולה להריץ פעולת "קרצוף" (scrub) שבודקת כל כל הקבצים בכל הדיסקים ומסמנת לעצמה מה תקין ומה לא ויודעת לנתב אוטומטית ולמפות לעצמה את התוצאות קרצוף.
  6. אני יכול בעזרת מספר פעולות פשוטות לראות איך הביצועים של המערכת מבחינת שיתוף התוכן ולראות היכן הביצועים יורדים, כך שאני יכול לתכנן איך אשדרג כדי לקבל ביצועים יותר גבוהים.
  7. אני יכול להגדיל את המערכת לכמה שצריך, תיקיות יכולות להכיל מאות אלפי או מיליוני קבצים מבלי לשתות קפה ולהמתין לקבלת פלט של ls בתיקיה "מפוצצצת" בקבצים. אין שום בעיה לצרף מספר JBODs כדי לקבל מאות טרהבייטים, פטהבייטים ומעלה.
  8. החלפת דיסקים היא פעולה פשוטה מאוד, ואני יכול להגדיר מערכי RAID (שנקראים RAIDZ ב-ZFS) שבהם גם מצב ש-3 דיסקים הם תקולים – המערכת תמשיך לעבוד.
  9. חשוב: אני לא חייב שכל הדיסקים יהיו SSD או SAS. אני יכול להשתמש בדיסקים מבוססי SATA (אני ממליץ על סידרת Red Pro של WD) ואני יכול להסתפק בכמות מצומצמת (מומלץ 2) של כונני SSD (לא חייבים סדרות שמיועדים ל-Enterprise) על מנת לקבל ביצועים טובים.
  10. אין לי יותר את הבעיה של הפסקת חשמל פתאומית בזמן שהמערכת בדיוק כתבה קבצים, כי ZFS מכיל דבר שנקרא ZIL שיודע להסתדר לבד ברגע שהחשמל יחזור (תאמינו לי, מנסיון של הפסקות חשמל מהסופות האחרונות, זה עובד יופי).
  11. אין לי צורך בבקרי RAID יקרים עם זכרון CACHE או סוללת גיבוי. יספיק לי כרטיס RAID פשוט במצב טיפש (JBOD).
  12. מבחינת גיבוי שרת הקבצים, 2 פקודות פשוטות יבצעו לי גיבוי מהיר לשרת ZFS משני או שאני יכול להתקין כל Client של מערכת גיבוי מרכזית, היא תראה את השרת ZFS כשרת לינוקס רגיל, כל מה שאני צריך זה להגדיר מה אני רוצה לגבות.
  13. אם כבר דיברנו על גיבוי – קל מאוד להתאים אותו לשימוש עם Windows, כך שגם משתמש פשוט יוכל לשחזר קבצים שלו דרך Restore Previous Versions ב-Windows במקום לבקש שישחזרו לו מגיבוי שנמצא על קלטות..

ואפשר גם לגדול:

  1. יש לך כמות דיסקים גדולה בשרת ואתה רוצה שקט נפשי? חלק את הדיסקים ל-2 בקרים שונים (בגלל שזה ZFS הבקרים יכולים להיות בקרי LSI מבוססי SAS2008 פשוטים שאפשר לקנות ב-100$) ומכיוון שאתה רץ על לינוקס, לא תהיה ללינוקס להכיר גם ב-5 בקרים על שרת אחד (מנסיון..)
  2. צריך לשרת יותר שרתים/תחנות? בשמחה! אתה יכול להשתמש ב-Lustre או Gluster עם ZFS, בין אם בשיטה של Active/Active או Active/Passive.
  3. צריך יותר רוחב פס? אתה משתמש בלינוקס, ולינוקס תומך כבר בכל כרטיס שנותנת תקשורת כלשהי, בין אם זה 10G או 40G או אפילו 100G, בין אם מדובר ב-Infiniband וגם פתרון משולב כמו FCoE וגם פתרונות של מספר כרטיסי רשת שונים באותו שרת. הכל רץ ונתמך בלינוקס.
  4. ZFS הוא מאוד גמיש, אפשר להתאים אותו החל מצרכים שלא דורשים הרבה תעבורה החוצה (לדוגמא: ארכיב), או הפוך (לדוגמא: VOD). אפשר להתאים אותו לצרכים תובעניים (לשרת הרבה מכונות VM, בין אם ה-Hypervisor או Hyper-V, vSphere, Xen או KVM).

ZFS הוא שילוב מעולה בין לינוקס למערכת File System הכי טובה שיש כיום. הפצות לינוקס כמו Red Hat או CentOS (וגם SuSE) יודעות לתמוך בשרתים החל מהרמה של שרתים מבוססי מעבדי Atom (סדרות C2XXX) ועד שרתי מפלצת עם 8 מעבדים ו-4 טרהבייט זכרון. לינוקס דואג לכל עניין תמיכת החומרה מבחינת דרייברים בהכל ובצורה הרבה יותר טובה מכל מערכת הפעלה מבוססת יוניקס אחרת (על כך הפוסט הבא ירחיב). ZFS משתלב עם הלינוקס המותקן כך ש-ZFS לא צריך לדאוג לשכבות מתחת ל-File System (חומרה ודרייברים).

מה עם פתרונות שהם ZFS שאינם מבוססי לינוקס כמו הפתרון של אורקל, ופתרונות אחרים כמו FreeNAS וכו'? על כך בפוסט הבא.

[stextbox id="info" caption="גילוי נאות"]כותב פוסט זה נותן שרותי הקמה/תמיכה/אינטגרציה של ZFS לארגונים.[/stextbox]

Exit mobile version