ה-NAS החדש

בשנים האחרונות היו לי מספר מכונות ששימשו כ-NAS ל-LAB שלי, ועל מנת להשאיר תשתית אופטימלית, צמצמתי את כמות המכונות שברשותי, כך שישארו רק מכונות שאני צריך, וכך במהלך החצי שנה האחרונה התפטרתי ממספר שרתים ומספר מכונות NAS שבניתי. מכונה אחת שירתה אותי בנאמנה במשך 8 שנים, וה-NAS האחרון שהיה רץ על שרת 2U של Supermicro – נתרם (ללא הדיסקים כמובן).

החלטתי לבנות מכונה חדשה, שהדברים החשובים לי בה היו:

  1. קיבולת גבוהה של דיסקים (הכנסתי בה 17 דיסקים, עוד 2 בקרוב)
  2. שקטה לגמרי
  3. נגישות מהירה לחלקים שונים כמו החלפת דיסקים/מעבד/זכרונות/כרטיסים וכו'
  4. בלי כל מיני "צעצועים" כמו RGB.

תודות לחברי היקר רפי אינשטיין, מצאתי את המארז האידיאלי – Antec P101 Silent שנמכר בארץ במחיר של 370 שקל. רכשתי את המארז, הוא הגיע והתחלתי להרכיב. להלן המפרט שאני משתמש במכונה:

  • מעבד: AMD Ryzen 2700 (תיכף אסביר מדוע)
  • זכרון: 64 ג'יגהבייט
  • לוח אם: ASUS X470-F
  • כרטיסי רשת: כרטיס רשת של Mellanox (דור שני) עם חיבורי +SFP ל-10 ג'יגה, וכרטיס רשת Broadcom NetXtreme BCM5715 (כרטיס עם 2 חיבורי 1 ג'יגה)
  • כרטיס תצוגה – GT 710 של Zotac (אני מאוד ממליץ על הכרטיס הזה. הוא נותן חיבורי מסך פופולריים – HDMI,DVI,VGA, והחיבור שלו הוא PCIe X1, כך שהוא לא יתפוס כניסות PCIe חשובות)
  • כרטיס Intel Optane 900p – הכרטיס הוא SSD מיוחד בגודל 280 ג'יגה. יקר (תציצו בלינק) – אבל שווה כל שקל אם אתם משתמשים ב-ZFS ובחיבור של 10 ג'יגהביט ומעלה.

מבחינת דיסקים, אלו הדיסקים שבפנים:

  • 8 דיסקים בגודל 6 טרהבייט של טושיבה מסידרת ה-Performance (כ-7200 RPM) – בהחלט סוסי עבודה
  • 6 דיסקים SSD SATA – סמסונג 860 EVO בגודל 512 ג'יגהבייט
  • 2 דיסקים SSD NVME מסוג סמסונג 960 EVO בגודל 512 ג'יגהבייט

(ברצוני להודות לחברת דגן מולטימדיה על הסיוע המהיר בכבלים ומפצלים – בלעדיהם הכל היה נתקע)

אחרי כמה שעות של חישובים וניסויים (אחרי הכל, ברגע שאתה מכניס כרטיס כלשהו, כמות נתיבי ה-PCIe הפנויים משתנה, ולפעמים יש גם "הפתעות". תודה מלאנוקס!), חיבור החלקים השונים – מגיע החלק הקריטי: מה להתקין על המערכת?

פתגם עתיק אומר "לכל 2 יהודים יש 3 דעות" – אז שאלתי לתומי וקיבלתי מגוון המלצות והצעות (רובם בהודעות פרטיות), אז להלן ההצעות ומדוע לא בחרתי בהן:

  • Proxmox, Xen Server, UnRaid – כל הפתרונות הללו מתאימים אם רוצים להריץ פתרון וירטואליזציה בראש ובראשונה על הברזל עם סבירות גבוהה שזה יהיה הברזל היחידי (כלומר "השרת היחידי"). במקרה שלי רציתי NAS שיהיה עצמאי ושיתן שרותי קבצים (ועוד מספר שרותים שירוצו כקונטיינרים עם Podman), כך שפתרונות אלו אינם מתאימים לי.
  • XPEnology – זהו פתרון בקוד פתוח של Synology והוא יכול להתאים ללא מעט אנשים, כל עוד הדרישות הן צנועות. במקרה שלי, אוטומטית הוא לא היה מכיר במחצית מהכרטיסים במחשב, אז הוא ירד מהאופציות עוד בהתחלה.
  • FreeNAS – זהו פתרון מעולה למי שמחפש פתרון "קופסתי פשוט" – כלומר קופסא שזורקים אליה כמות דיסקים, מתקינים FreeNAS, מבצעים כמה הגדרות פשוטות ומתחילים לעבוד. הבעיות עם פתרון כזה הן שמערכת כזו היא מצומצמת וקשה להוציא ממנה ביצועים משמעותיים (תאמינו לי, השתמשתי ב-FreeNAS במערכת הקודמת ובזבזתי ימים שלמים עליה) כשצריך מהירות גבוהה יותר מ-10 ג'יגהביט.
  • אובונטו – תהליך הטמעת ה-ZFS בהפצה זו הוא יותר "work in progress" וה-LTS (כלומר Long term support) זו בדיחה לא מוצלחת, למען האמת. מוותר על התענוג.

בסופו של דבר בחרתי ב-CentOS 8 (ליתר דיוק – CentOS 8.2.2004) מכמה סיבות פשוטות:

  • רקורד מוכח ב-Long Term: ה-NAS שהיה לי לתקופה של 8 שנים הריץ CentOS 6 (ששודרג בהמשך ל-CentOS 7) והוא נתן לי יציבות מעולה.
  • ZFS על CentOS – אחד הדברים הכי מנוסים והכי יציבים. לא מעט אלו שמריצים לינוקס עם ZFS מהמפתחים של ZFS on Linux (וכיום OpenZFS) מריצים ZFS על CentOS.
  • קלות התקנה: 3 פקודות. יבוא מפתח, 2 פקודות DNF – ויש ZFS במערכת.
  • לא חסר תמיכה.

יחד עם זאת: האם אמליץ על ה-OS הזה ל-ZFS לאנשים שאין להם נסיון בלינוקס או ZFS? לא. בוא נהיה מציאותיים: CentOS ו-ZFS מצריכים השקעה בלימוד דברים שונים, ואם מחפשים חיים יותר קלים (ולא מצפים לביצועים בשמיים) – אז FreeNAS ואובונטו הם פתרונות טובים.

מבחינת הגדרות, הגדרתי את הדברים כך:

  • 8 דיסקים מכניים הוכנסו ל-Pool בתצורת RAIDZ-2 (כלומר RAID 6 למי שלא מכיר את ZFS) כך שקיבלתי כ-43.7 טרהבייט מקום פנוי
  • 6 דיסקים SSD SATA הוכנסו ל-Pool שגם הוא בתצורת RAIDZ-2 כך שקיבלתי 2.78 טרהבייט מקום פנוי
  • SSD NVME אחד "הוקרב" לטובת ה-OS עצמו (כך שהוא אינו חלק מ-ZFS. יש היום תמיכת Boot ב-GRUB2 מ-ZFS אבל ליתר בטחון אני מעדיף שדיסק ה-OS יהיה עצמאי ולא כחלק מ-ZFS ואם הוא נדפק, דיסק און קי עם CentOS ו-ZFS יכול לשמש כתחליף חרום).
  • ה-SSD NVME השני חולק ל-2, כך שכל Pool מקבל 240 ג'יגהבייט כ-Cache.
  • ה-Optane חולק ל-2 כך שכל Pool קיבל 40 ג'יגהבייט ZIL. מכיוון ש-Optane 900p (והגירסה היותר מתקדמת שלו 905P או גירסאות ה-Enterprise – ה-P4800X) ניחנים ב-Latency הרבה יותר נמוך מכל SSD שקיים בשוק (הוא לא משתמש ב-Flash) – ביצועי הכתיבה – גבוהים.

אז .. איך הביצועים? להלן צילום מסך (לחצו להגדלה).

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

כלומר קצב הכתיבה נע בין 300-800 מגהבייט לשניה, תלוי מה הנתונים ותלוי אם ה-ZFS יכול לדחוס אותם (לדוגמא: קבצי VMDK שהם flat – יש לא מעט מקום לדחיסה, כך שבמקרים כאלו אני מקבל קצב כתיבה ממוצע של 770 מגהבייט לשניה). מבחינת קצב קריאה – אני מקבל רצוף בסביבות ה-700 מגהבייט לשניה (זה מה שקורה כשמנסים להכניס כרטיס רשת Mellanox ConnectX-3 לתוך כניסת PCIe 2.0, טופל בעת כתיבת פוסט זה)

וכך זה נראה במכונת Windows וירטואלית שרצה תחת vSphere 6.7 כאשר ה-Datastore מגיע מ-NFS V3 והתוצאות הן ללא טריקים של Cache, Write back וכו'.

עד כה המערכת רצה ללא תקלות, אך יחד עם זאת – יש לי עוד דברים לבדוק, כמו העניין הדי תמוה שכתיבה על הדיסקים SSD שנמצאים ב-pool משלהם – מהירות הכתיבה מגיעה עד 160 מגה במקום 550 מגה (לא קשור לכרטיס HBA כלשהו) ועוד כמה דברים פה ושם שאני רוצה לבדוק, לחבר למערכת ניטור וכו' וכו'.

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

ה-LAB הבא פרק 3 – בניית Storage

בפרק השלישי אנחנו נדבר על Storage. אם יש משהו שאנחנו צריכים ל-LAB – זה Storage. זה יכול להיות משהו קטן וצנוע, וזה יכול להיות 4 שרתים ב-Cluster שמריצים CEPH עם כרטיסים של 10 ג'יגהביט או GlusterFS עם 3-4 שרתים שיתנו לנו מה שאנחנו צריכים. בקיצור – הטווח רחב.

אז לפני שנשלוף את כרטיס האשראי, נרוץ ל-eBay ולאמזון לרכוש ציוד – צריך לבדוק מה הצרכים שלכם. אם לדוגמא אתם רק רוצים לבנות איזה NAS קטן לארח קבצים (ISO, סרטים, סדרות, כמה VMDK קטנים וכו') אז כל מה שאתם צריכים זה לוח אם עם מעבד בינוני (מעבד i5 או i7 מלפני דור או 2), 8-32 ג'יגה זכרון, וכמובן – דיסקים קשיחים. לצרכים כמו שתיארתי לעיל, ערימת דיסקים קשיחים מכניים + כונן SSD יספיקו. אם לעומת זאת אתם רוצים להריץ את כל ה-VM/קונטיינרים שלכם דרך NFS או iSCSI, אז נצטרך משאבים יותר רציניים כמו SSD מכובד (סידרת ה-PRO של סמסונג היא בחירה מעולה, גם Crucial MX300 זו בחירה טובה). אם לעומת זאת אתם רוצים לחבר את כל המכונות (ויש לכם יותר מ-20 מכונות VM רצות) לאותו Storage בחיבור 10 ג'יגהביט (RJ45 או +SFP) – אני ממליץ על 2 כרטיסי Intel Optane 900P בגודל 280 ג'יגה בתצורת RAID-0 שישמשו כ-Cache.

שאלת השאלות כמובן היא – מה להתקין מבחינת OS? יש לכך כמה תשובות:

  • אם אתה לא אוהב לינוקס/שונא לינוקס/לא מכיר לינוקס/פוחד מלינוקס – אתה יכול להתקין את XPEnology של Synology. גירסה זו אינה מקבלת תמיכה רשמית (ולא תמיד היא עובדת על מעבדי AMD בלי לבצע כמה שינויים) – אבל אתה מקבל את מה ש-Synology מוכרים: יצירת RAID, ווליומים, הרמת קונטיינרים ומכונות וירטואליות, שיתוף קבצים ותיקיות, שימוש ב-SSD כ-Cache ועוד ועוד. למעוניינים לראות איך להתקין את זה, כאן הוידאו שמדגים ומסביר בקצרה.
  • אם אתה מחפש לבנות NAS יותר רציני (עם חיבור ל-Active Directory, עם iSCSI יותר רציני, עם ביצועים יותר גבוהים וכו') ואתה לא רוצה להתקרב ללינוקס – FreeNAS יכול להיות פתרון מעולה בשבילך. חשוב מאוד – מכיוון ש-FreeNAS מבוססת על FreeBSD ו-FreeBSD לא מתעדכן תדיר כמו פדורה ואובונטו, אז עדיף להשתמש בלוח אם ומעבד דור או 2 אחורה ולאו דווקא משהו חדש שיצא לפני כמה חודשים (אחרת המערכת אפילו לא תפעל).
  • אם לעומת זאת, אתה רוצה ביצועים מאוד גבוהים ואתה מכיר לינוקס טוב והסטורג' שלך הוא מכונה אחת, לך על ZFS שרץ על לינוקס. תקים מכונת אובונטו 16 LTS (הגירסה לשרת, לא לדסקטופ), תתקין עליה ZFS ותתחיל להגדיר דברים. לא מכיר ZFS טוב או בכלל ויש לך סבלנות? קנה את הספר הזה ותתחיל ללמוד אותו.
  • רוצה לא רק ביצועים ויציבות אלא גם שרידות חומרה? הקם 2 שרתים, תתקין עליהם ZFS ומעל זה הקם לך GlusterFS. לאחר הקמת ה-GlusterFS (הוא לא מצריך מעבד עם 16 ליבות ו-128 ג'יגה זכרון. מעבד עם 4 ליבות, ו-8 או 16 ג'יגה זכרון יספיקו) תוכל להקים שרותים כמו NFS, iSCSI ו-CIFS כדי לשתף. על מנת לקבל שרידות, יהיה צורך להתקין חבילות Corosync ו-PaceMaker שאיתן תוכלו להגדיר VIP. מומלץ להשתמש בגירסת GlusterFS 3.8 (ב-3.10 ו-3.12 יש בעיות שמטופלות בימים אלו). אה … המערכת תהיה Active/Active 🙂

אם אתם משתמשים ב-Storage שלכם למערכות VM/קונטיינרים/Open Stack וכו' – גיבוי יהיה חשוב לכם. במקרה כזה, קנו שרת יד שניה, מעאפן ככל שיהיה, הכניסו בו דיסקים ו-SSD, תתקינו איזו מערכת מההמלצות למעלה, ותייצאו ממנו SHARE ב-NFS (או CIFS) ותגבו לשם, ולמי ששואל – Veeam עובד עם זה מעולה, מנסיון.

אחרי שהקמתם את ה-Storage שלכם, דחפו למכונה (אם אין) כרטיס רשת עם 2 או 4 כניסות (חוץ מהכניסה שאתם משתמשים כרגע) ויצאו את ה-Share פר כניסה או פר זוג (Teaming וכו'). לשם כך תצטרכו מתג טוב שיודע לתמוך טוב ב-VLAN, Tagging, 802.11q ושאר ירקות. איזה? אין לי המלצות קונקרטיות, שאלו חברים 🙂

לסיכום: אם אתם מקימים LAB כדי ללמוד דברים חדשים על מנת לשפר את הקריירה והידע המקצועי שלכם, כדאי לכם מאוד להקים Storage מקומי ולא להשתמש באחסון המקומי בתוך השרתים. לכל חברה שתלכו שמכבדת את עצמה – יש פתרון Storage כלשהו ועדיף שתלמדו איך ליישם פתרונות עם Storage דרך כניסות רשת נפרדות, איך משתמשים ב-Multipath וכו' וכו'.