ה-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 – אני בהחלט ממליץ ללמוד.

לינוס, ZFS וכמה נקודות בנושא

הכל התחיל במייל שכתב לינוס טורבאלד, ה"אבא" של ליבת לינוקס (אוקיי, יש כאלו שיתעקשו שנקרא לזה GNU/LINUX) – הוא התייחס לנקודה ישנה וקצת כואבת, שאי אפשר להכניס קוד של ZFS ללינוקס על ה-Kernel של לינוקס. הרשיונות לא ממש תואמים. (בעיה ידועה שאנשים מעשיים לא מתייחסים אליה כיום, למען האמת: אם לקוח מגיע אליי ומבקש ממני לבנות לו מפרט לשרת לצרכי AI, מטבע הדברים אני אכלול כרטיסים של nVidia אבל הדרייבר ל-NVIDIA הוא בינארי לחלוטין, האם לפסול את הכרטיסים בגלל שהדרייבר הוא כזה? כמובן שלא, כי הכרטיסים המתחרים מציעים בערך מחצית מהביצועים).

לינוס מוסיף בסוף המייל כי ZFS זה "באזז" והוא מבקש "אל תשתמש ב-ZFS".

זכותו המלאה, כמובן, של לינוס להביע את דעתו, אבל כדאי לפעמים שהוא קצת יעדכן את דעתו היקרה..

נתחיל מהמציאות הפשוטה: ZFS על לינוקס אינו פרויקט נסיוני. גם בגירסה הנוכחית (0.8.2 נכון לכתיבת שורות אלו) ובגירסה הקודמת (0.7.13) אין שום באג ידוע שגורם לקריסת מערכות. המערכת יציבה ונמצאת במקומות שונים פה בישראל ובעולם כמובן – בפרודקשן. לא מדובר באיזה פרויקט שמורכב מ-2 אנשים שמתחזקים אותה בשעות הפנאי שלהם ועושים טובה לאנושות שהם עונים לפוסטים/מיילים. יש לא מעט חברות מעורבות בפרויקט שתורמות קוד ותיקוני באגים נון סטופ, וזו אחת הסיבות שעמותת OpenZFS החליטה יחד עם כל החברות המשתתפות בפיתוח ZFS לפני שנתיים – להעביר את כל הקוד לגירסה חדשה שתיקרא OpenZFS ושתהיה מבוססת על ZFS for Linux עם כל השינויים שקיימים לפלטפורמות אחרות (BSD, Illumos, Mac OS וכו') כך שברגע שתצא גירסת OpenZFS 1.0 – היא תהיה תואמת לכל הפלטפורמות וכל קוד שיכנס יקומפל אוטומטית מול כל הפלטפורמות ואם הקוד לא רץ על אחת מהפלטפורמות, מגיש הקוד יצטרך לתקן זאת.

ZFS היא, בניגוד למערכות File systems אחרות בלינוקס – אינה רק file system, היא הרבה יותר, היא מייתרת את הצורך בהגדרות Partitions, מייתרת את הצורך בהגדרות ושימוש LVM, מפשטת תהליכים בשיתופים דרך NFS, iSCSi, CIFS/SMB, מאפשרת snapshots בצורה הרבה יותר טובה ממה ש-LVM נותן, הוא כולל מערכת Cache טובה וכשזה מגיע לתחזוקה שוטפת, זו המערכת היחידה שיודעת לעשות תהליך resilver (תהליך בו המערכת עוברת על כל המידע בסקטורים השונים בדיסק, בודקת אם הכל תקין ומה שהיא מוצאת לו תקין – היא מעתיקה למקומות אחרים תקינים, והכל ברקע), ויש ל-ZFS עוד פונקציות רבות שלא תיארתי ופונקציות בהחלט מעניינות שמפותחות בימים אלו, והכי חשוב – הכל רץ על לינוקס.

יש כאלו שיציינו שיש את BTRFS שזו מערכת מעולה. צר לי, היא לא כזו מעולה, גם כיום, בכל מה שקשור ל-RAID-5/6 ויש רק הפצה אחת שמתקינה אותה כברירת מחדל: SuSE. הפצות שמקובלות בגופים גדולים כמו RHEL, CentOS, Ubuntu או שלא כוללים תמיכה ל-BTRFS (כל מה שמבוסס על רד-האט) או שתצטרך לעבוד ידנית כדי להגדיר BTRFS. בהפצה כמו אובונטו 18 ומעלה, תצטרך לעבור חתיכת תהליך (בהצלחה עם זה, ואגב, והתהליך לא כולל שום שימוש בכל הפונקציות הרציניות של BTRFS כמו sub volumes במאמר) כדי לבנות מערכת עם BTRFS.

יש כמובן גם FIle systems אחרים כמו EXT4 ו-XFS שהן טובות, אבל כשיש בעיות כלשהן שהמערכת לא מוכנה לעבוד עם ה-Journaling – הסיוטים מתחילים (במיוחד ב-XFS. רק לפני מס' שבועות קיבלתי פניה מיצרן שרתים שהתקין ללקוח שלו מערכת SAP כשכל המערכת וה-DATA יושבים מקומית ולאחר כמה חודשים, המערכת קרסה. הוא ביקש ממני להציץ, והמצב מבחינת XFS היה כל כך קטסטרופלי, שההמלצה שלי היתה פשוטה: תפרמט ותשחזר מאפס מגיבוי) וכאן ל-ZFS יש יתרון בכך שהוא בודק אחת לשבוע או אחת לחודש (כפי שתגדיר ב-crontab) את תהליך ה-resilver ואפשר תמיד לראות את המצב עם פקודת zpool פשוטה.

אינני טוען ש-ZFS מתאים לכל שימוש. על מכונות וירטואליות, על מכונות דסקטופ/לאפטופ עם דיסק יחיד – אין ממש יתרון גדול ל-ZFS (חוץ מהפונקציונאלית של snapshots אם אתה רוצה לשדרג חבילות או את כל המערכת לגירסה חדשה ומעוניין לחזור אחורה אם יש בעיות, דבר שדי בעייתי לעשות עם LVM – במיוחד בהפצות כמו ubuntu, Debian ששם כברירת מחדל בהתקנה לא משתמשים ב-LVM) ויש בהחלט מקום ל-File systems כמו EXT4 או XFS.

לסיכום: ZFS זו מערכת רצינית שמצריכה מעט למידה של המושגים. הפצה כמו אובונטו 19 מאפשרת לך לראשונה להתקין מערכת לינוקס עם ZFS ב-root עם הצפנה, העברת snapshots מוצפנים, אבל חשוב לשים לב שזה נסיוני (בגלל זה החלוקה המוזרה לשני pools – התמיכה ב-GRUB2), יש קהילה משגשגת ויש גם חברות שמוכרות מוצרים ותמיכה ל-ZFS על לינוקס (והפצות אחרות). ZFS לא מתאימה לכולם ולא מתאימה לכל מצב, אך יחד עם זאת, ZFS זה לא buzz.

ה-LAB הבא: פרק 5, בחירת File system ורשת (חלק ראשון)

בפרק הקודם הזכרתי את עניין קנית JBOD או הקמת שרת קבצים, חיבור ב- +SFP. הפעם נרחיב קצת יותר לגבי אותו חיבור, אבל נתחיל במשהו פשוט. להלן צילום מסך מתוך מכונת VM עם Windows 10 בשרתים שלי:

מה שאתם רואים זה הרצת תוכנת בדיקת מהירות דיסק בשם CrystalDiskMark 6 והתוצאות … לא נראות מי יודע מה, בלשון המעטה. דיסק SSD פשוט ב-400 שקל יתן ביצועים פי 5 מזה ואם תבדקו בתשתית שלכם בעבודה, הביצועים יהיו הרבה יותר גבוהים. (מדוע? כבר אסביר).

נכון להרגע, מכונת ה-ZFS שיש לי היא מכונה די צנועה:

  • מעבד I5 דור שלישי
  • 16 ג'יגהבייט זכרון
  • 4 דיסקים, 2 דיסקים של 2 טרה ו-2 דיסקים של 4 טרה, והם ב-Mirror. הדיסקים כולם של Western Digital מסידרת RED (לא RED PRO) – טעות שעשיתי…
  • 2 דיסקים SSD ממש ישנים בגודל 256 ג'יגה של SANDISK, הם משמשים ל-Cache ול-Log

בקיצור – מכונה מהסוג המאוד נמוך.

ובכל זאת, מה שאנחנו רואים פה, הוא שלמרות שהציוד בקצה המאוד נמוך, המכונה נותנת תוצאות מרשימות. 1 ג'יגהביט בקריאה וכתיבה Sequence, כלומר צוואר הבקבוק איננו מכונת ה-ZFS, אלא התקשורת בינה לשרתים, כלומר לא חשוב איזה מכונה תקנה או תקים, כל עוד היא מחוברת בתקשורת 1 ג'יגהביט, זה מה שתקבל. אפשר כמובן לעשות Teaming ל-2 או 4 חיבורי רשת (לא מומלץ, מקבלים לא מעט נפילות, תלוי בציוד, כבלים) ולקבל תוצאות יותר טובות, אבל עדיין בהשוואה להטמעת ESXI בחברה גדולה – התוצאות יהיו נמוכות יותר.

אז איך נגיע לביצועים טובים מבלי לקחת משכנתא?

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

האפשרויות שלפנינו הן (אם נצא מתוך הנחה שיש לנו 2 שרתים שמריצים VM/קונטיינרים ושרת קבצים יחיד או שרת עם JBOD):

  • קניית 3 כרטיסי רשת: כרטיס אחד עם זוג פורטים 10GB בחיבור RJ45 ו-2 כרטיסים עם פורט RJ45 במהירות 10 ג'יגה. הכרטיס עם זוג הכניסות ישב בשרת הקבצים ומשם נחבר כבל רשת CAT6 (או 6E) לכל שרת בכרטיס רשת 10GB החדש שרכשנו והתקננו.
  • אופציה נוספת היא רכישת 3 כרטיסי רשת כמו מקודם, רק שהפעם במקום RJ45 אנחנו נקנה כרטיסים שהם +SFP שתומכים ב-Copper (או TwinAx) ונבצע את אותם חיבורים. היתרון? כבלי +SFP הרבה יותר חזקים והחיבור הרבה יותר טוב מ-RJ45.
  • אפשרות נוספת היא כמו האופציה הקודמת, רק עם סיבים אופטיים. אפשר לקנות כרטיסים עם חיבור אופטי (או כרטיסי CNA שמתאימים לעבודה גם עם אופטי וגם עם כבלי Copper). בנוסף לכרטיס ולכבלים יש צורך לרכוש Transceivers על מנת לחבר את הסיבים אליהם ואז לחבר לכרטיס. יש צורך בידע כיצד להגדיר את החיבורי סיבים.
  • אפשרות נוספת וקצת יותר מורכבת היא Infiniband. יש לרכוש כבלים מיוחדים וכרטיסים יעודיים לכך, ויש צורך בידע כיצד להגדיר זאת למערכות הפעלה אחרות.

מבחינת מחירים, כל האופציות שנתתי כאן הם פחות או יותר אותו מחיר (בהבדלים של 100-250 שקל) ואני ממליץ לערוך קצת סקירות שוק ב-eBay לפני קניה.

אם יש לנו יותר מ-2 שרתים שיריצו VM/קונטיינרים, אז אפשר להוסיף לשרת הקבצים עוד כרטיס עם זוג פורטים או לרכוש מלכתחילה כרטיס מרובע פורטים. אם לעומת זאת ה-LAB שלך הוא רחב וכולל 8-10 שרתים פיזיים, כדאי בהחלט לחשוב על Switch לאותו סוג חיבור שאתה רוצה לעבוד איתו.

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

וכאן שוב נחזור לעניין ה-Storage ובמיוחד ל-File system: שום NAS מוכן שתקנו (למעט אלו של iXsystems) לא יתנו ביצועים כמו ש-ZFS נותן. ZFS משתמש ב-RAM וב-SSD בצורה מאוד חכמה ובשעה שפתרונות סטורג' "ביתיים" משתמשים ב-SSD לשם האצת כתיבה/קריאה, ZFS משתמש קודם כל ב-RAM, בשיטת הטרנזאקציות ולוגים ועוד (אפשר לקרוא על כך כאן) ולכן אם אתם רוצים להקים כמה שרתים ועליהם עשרות VM או קונטיינרים, ZFS מתאים לכך הרבה יותר, חוץ מהעובדה שהרבה יותר קל ליצור איתו Snapshots שכוללים לדוגמא את כל מכונות ה-VM או קונטיינרים או תיקיות מסויימות והמערכת יוצרת אוטומטית snapshots יעילים וקטנים לפי מה שמגדירים אותה (אצלי לדוגמא יש snapshots כל רבע שעה, כל שעה, כל יום, כל שבוע, כל חודש וכל רבעון, וכל מה שיש לי ב-ZFS זה דיסקים של 6 טרה, ותתפלאו, כל ה-snapshots לא תפסו הרבה מקום ויחסית קל מאוד לשחזר קובץ/קבצים או תיקיה/תיקיות בעזרת פקודות shell פשוטות מאוד).

בנוסף, מכיוון ש-ZFS עושה המון שימוש ב-RAM כ-Cache רמה ראשונה (רמה שניה, L2 מבוצעת על SSD) – כמה שיותר זכרון שתתנו לו, הביצועים יהיו יותר גבוהים ועם שרתים יד שניה המחירים לא כאלו גבוהים. אם לדוגמא שרתי R610 שרכשתי, אם אכניס להם זכרון שירוץ במהירות 1 ג'יגהרץ אך עם 192 ג'יגהבייט זכרון, עלות הזכרון כולו (12 מקלות של 16 ג'יגהבייט) תעלה לי … 2000 שקלים, שזה פחות או יותר המחיר של .. 32 ג'יגהבייט DDR4. אגב, על R710 (ה"אח" היותר גדול של R610 – אותו דור) אפשר להלביש 288 ג'יגהבייט זכרון מאפס (כלומר ללא המקלות הקודמים ב-3130 ש"ח (פלוס משלוח ומסים לארץ). שוב, לשם השוואה – 64 ג'יגה זכרון DDR4 עולה יותר מ-5000 שקל.

בפרק הבא נדבר על רשתות, VLAN, ציוד מומלץ וכו'.

ה-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 וכו' וכו'.

אז איזה כרטיס RAID לרכוש?

בפוסט הקודם דיברתי על כרטיס MegaRaid של LSI מבוסס מעבד 9220/9240 שגם נקרא M1015 של IBM, ויש לו שמות נוספים לפי החברה המשווקת (אינטל, HP, DELL, LENOVO ואחרים משווקים אותו בשמות שונים). אני ממליץ אותו לאלו שמעוניינים להרים שרת עם מערכת ZFS, מכיוון שהכרטיס הזה מצד אחד נותן חיבור אמין ויציב בין הדיסקים למערכת, ומצד שני הוא לא "מתערב" ממש בהעברת נתונים, והמקסימום מבחינת RAID שהוא יכול לעשות זה RAID-1/10. הוא יכול לבצע גם RAID-5/6 אבל אז כל העבודה נופלת על המעבד במחשב, בדיוק כמו RAID תוכנה. ב-ZFS זה יתרון, במערכות מבוססות RAID תוכנה אחרות – זה לא ממש יתרון.

ZFS זה טוב, אבל יש מצבים שאי אפשר (או לא מעוניינים) להשתמש ב-ZFS. אם לדוגמא אתם רוצים להשתמש בשרת Windows כשרת קבצים, או מערכות File System אחרות כמו EXT4 או XFS. במערכות הקבצים הללו מאוד מומלץ שיהיה כרטיס RAID אמיתי שידע לא רק לבצע את ה-RAID (שוב – החל ב-RAID 1/10 וכלה ב-5/50/60), אלא גם ידע לדווח לכם על שגיאות בדיסקים במקרה של תקלה.

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

אבל איזה דגם לרכוש? פה זה כבר תלוי בכם. הנה מספר דוגמאות:

  • אם כל הדיסקים יושבים בתוך השרת (או "שרת") – אז כרטיס שמסתיים ב-8i (ה-i זה internal וה-e זה external) עם מעבד 9260 יכול לתת לכם את כל פונקציות ה-RAID בחומרה (צ'יפ 9240 עושה RAID 1/10 בחומרה, אבל שאר מצבי ה-RAID נעשים על המעבד שלכם, לא על הצ'יפ של הכרטיס) ואפשר לחבר אליה עד 8 דיסקים SAS או SATA. אם יש לכם רק 2-3 דיסקים ואתם לא מתכוננים להתרחב, אתם יכולים לרכוש את גירסה 4i שאפשר לחבר עד 4 דיסקים. ההבדל במחירים בין 4i ל-8i זניח ולכן אני ממליץ ללכת על 9260 8i.
  • אם לעומת זאת אתם חושבים להכניס קופסת JBOD חיצונית שבתוכה ישבו הדיסקים ואת הקופסא אתם רוצים לחבר לשרת – אז חפשו כרטיסים 9260 עם אחת האופציות כמו 8e או 4e, הבעיה בד"כ בחיפוש כרטיסים כאלו שקל למצוא – אבל הם יקרים, כמה אלפי שקלים לכרטיסים חדשים. במקום זה הייתי ממליץ לכם לתחמן קצת ולקנות מתאם כמו זה בתמונה מימין – זה עולה בערך 100 שקל (כאן לדוגמא) כך שאתם מחברים את הכרטיסון הזה אל הכרטיס בקר שלכם מבפנים עם כבל SFF 8087 (רכשו כבל קצר של SFF 8087 מ-2 הצדדים) וכבל SFF 8088 בין הכרטיסון לקופסת JBOD. עם החיבור הזה אתם יכולים גם לשרשר בין מספר קופסאות JBOD לשרת.
  • סוללה – הפסקות חשמל קורות ורוב מערכות ה-RAID לא ממש יודעות לעמוד טוב בהפסקת חשמל (אם ה-UPS לא עבד לדוגמא). עם ZFS יש לו פתרון משלו, אבל במקרה של מערכות קבצים אחרות – סוללת גיבוי על כרטיס הבקר תעזור לסנכרן את המידע ברגע שהחשמל יחזור.
  • זכרון נדיף (FLASH) או זכרון RAM כתוסף לכרטיס על מנת להאיץ ביצועים – ותרו. בפוסט הבא נדבר על פתרון הרבה יותר רציני לגבי האצה.

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

חשוב לזכור: ישנם כרטיסים רבים שמאפשרים חיבורים של SAS או SATA אולם כרטיסים אלו אינם כרטיסי RAID, הם מאופיינים בכך שהם זולים מאוד (בערך 200-400 שקל). אם אתם רוצים לחסוך ויש לכם JBOD חיצוני – קנו כרטיס 8i, את המתאם בתמונה למעלה מימין וחברו בין כל הציודים. זהו פתרון שמתאים לבית או לעסק קטן. אם מדובר בחברה רצינית, אז תפסו שיחה צפופה עם אחד הסמנכל"ים הטכניים ורכשו כרטיס RAID רציני מבוסס 9280 עם פורטים פנימיים וחיצוניים.

בפוסט הבא נדבר על דיסקים ואיך לקבל ביצועים גבוהים גם עם דיסקים SATA פשוטים.

הסיפור עם כרטיס M1015 ותכירו את ה-Mobile RACK

כשאתה מחליט לבנות שרת קבצים רציני מבוסס ZFS, אחת ההמלצות הכי חשובות היא להעדיף בקר כמה שיותר פשוט כי ZFS לא ישתמש בשום RAID חומרתי, לא ב-Cache שעל הכרטיס ולא בשום פונקציה אחרת למעט כתיבה וקריאה ישירה אל הכוננים (לברזל). אחת ההמלצות האחרות (מ-SUN) היא להעדיף שלא להשתמש ביציאות SATA שיש על לוחות אם בתצורת דסקטופ מכיוון שיש ברבים מהם באגים במימוש/באגים בדרייברים שמדברים עם ה-CHIP שנותן שרותי SATA וכו'. (נוכחתי בכך בשבוע שעבר עם לוח קצת ישן של ASUS).

אחד הבקרי RAID הכי ידועים בשוק ושהם עדיין נמכרים בערימות, הם בקרי RAID של LSI מבוססים צ'יפ עם המספר 92XX. בסידרה יש את המספרים 9211, 9240, 9260, 9270 וכו'. חברת LSI מוכרת אותם ליצרני מחשבים וגם מוכרת אותם בהסכמי OEM כך שהלוח של הכרטיס נושא תוית שונה, אך עדיין בצד הקדמי יש את הלוגו של LSI, אולם כשמפעילים את הכרטיס, השם שמופיע על המסך בנוסף הוא שם ה-OEM. (לנובו, HP, DELL ו-IBM מכניסים את המערכת הזו בלוח האם עד היום)

אני רכשתי כרטיס כזה של IBM. ב-IBM מוכרים את הכרטיס תחת השם ServerRAID M1015, רק שכאן מתגלה הפתעה קטנה ולא נעימה: תחת M1015 ישנם צ'יפים שהזכרתי לעיל, ללא תתי דגמים ואין שום דרך לדעת מה הצ'יפ שלך אלא אם תסתכל פיזית על הצד האחורי ועל מדבקה שם שמציינת מה הצ'יפ. אצלי הצ'יפ היה 9220-8i. חיפוש קושחה לצ'יפ זה גילתה לי עובדה מעניינת – אין את הצ'יפ הזה ב-LSI. יש 9211 ויש 9240. 9220? אין חיה כזו.

החלטתי להתקין (עוד לפני שהסתכלתי על הלוח ועל המדבקה מאחורה) את הקושחה האחרונה שקיימת ל-9240. התקנת הקושחה הצליחה, ה-ROM עולה ואפשר להיכנס ולהגדיר את הדיסקים למצב JBOD, אך הבעיה מתגלה אחר כך – גם ESXI וגם גירסאות לינוקס שונות פשוט לא מראות שום דיסקים והמערכת נתקעת (לזמן מה בלינוקס, לגמרי ב-ESXI) בזמן ה-Boot (תוכלו לראות שגיאות רבות כאלו בחיפוש בגוגל), ובקיצור – כל עוד הכרטיס בתוך המחשב, והדיסקים מחוברים לבקר זה – לא תראה כולם.

מכיוון שמדובר בכרטיס מאוד פופולרי וזול ($100 בערך ב-eBay), מישהו הוציא MOD חדשים לכרטיס, 2 מודים ליתר דיוק. IT שלא נותן לך אפשרות להיכנס למסך הגדרות כרטיס (כי פשוט החלק הזה של ה-ROM לא נמצא) אך הוא כן סורק את הכרטיס + הדיסקים ומיידע את המערכת בהמשך לגבי מה הדיסקים ומאפשר גישה, ומצב IR שנותן אותו מצב כמו IT רק עם ROM כדי שתוכל להיכנס, לפרמט low level את הכונן, להגדיר RAID-1 (אם אתה לא משתמש ב-ZFS).

על מנת לבצע זאת, תצטרך להפעיל את המערכת ב-DOS, ולעקוב אחר ההוראות (שנמצאות כאן), אבל אם יש לך לוח מודרני עם UEFI, הטריק לא יעבוד כי המערכת לא נותנת תאימות מלאה ל-DOS ותקבל שגיאה של PAL. לשם כך תצטרך להפעיל את ה-EFI SHELL מה-UEFI של לוח האם שלך. אין לך SHELL? קח את refind (את ה-CD-R IMAGE) ושפוך אותו על כרטיס USB או כרטיס SD (ותוודא שה-Partition מוגדר ל-boot, תוכל לעשות זאת עם parted או gparted בלינוקס, או diskpart ב-Windows). לאחר ששפכת, כנס לתיקיית ה- EFI/BOOT והעתק לשם את ה-EFI SHELL (גירסה 2) מתוך  Arch wiki (כאן), רק כדאי שתתן לו שם שונה כדי שתזהה את השם. הפעל את ה-USB ב-boot על המחשב, ובחר את ה-shell שלך, ומשם עקוב אחר ההוראות כאן. (לקח לי כמה שעות להבין ולחפש את הקבצים..)

בסופו של דבר הכרטיס שלך יהפוך ל-9211 עם דרייבר שנקרא MPT2SAS, הדרייבר קיים בגירסאות לינוקס עדכניות וגם ישנות יותר וכמו כן מוכר ב-ESXI מגירסה 4 ומעלה.

המלצה נוספת היא שאם אתה מתקין ערימות של דיסקים באותו שרת קבצים והם מבוססות mirror (כלומר RAID-1), עדיף שכל דיסק ישב על בקר שונה. פה דווקא מצאתי שאם כבר mirror אז עדיף שדיסק אחד ישב על הבקר RAID ואחד על ה-SATA על הלוח, כך שגם אם יש בעיה עם ה-SATA על הלוח, המערכת שלך ממשיכה לעבוד. אם יש לך כסף, אז כדאי שפשוט תוסיף כרטיס בקר נוסף (הכרטיס עולה בערך $100 ב-eBay).

מכאן נעבור למודול אחסון דיסקים..

אם שרת הקבצים שלך מורכב מ-2 דיסקים, אז כל מה שצריך הוא להכניס את הדיסקים למארז, לסגור 4 ברגים, לחבר חשמל ו-SATA ולהתחיל לעבוד. הבעיה מתחילה אם אתה מכניס יותר מ-2 ויש לך תקלה – תצטרך לפתוח את השרת קבצים ולהשבית אותו, ואם יש לך שרתי ESXI או שרתים/מכונות אחרות שעובדות עם NFS לדוגמא, תצטרך להוריד אותן קודם ולאחר מכן את שרת הקבצים, להתחיל לחפש מי הדיסק התקול, להחליף, לקוות שהחלפת את הנכון, להפעיל את המחשב מחדש, לראות שהכל תקין ואז להרים את שאר המערכות.

לא כיף.

תכירו את המודול הזה בעל השם המורכב cse-m35t-1b של SuperMicro. מדובר על מודול שנכנס בדיוק במקומות שבעבר הייתם מכניסים צורבים, וכיום בכל מארז MIDI ומעלה קיימים 3 מפרצים כאלו שלא מלאים בכלום. כדי להרכיב את המודול הזה, כל מה שתצטרכו הוא לפרק את הפלסטיקים מהמארז, עם פלייר (או קאטר) לעקם במארז את הבליטות שתופסות את הכונן שהיה אמור להיכנס שם ואז להכניס את המודול הזה, לחבר אליו 5 חיבורי SATA (הוא מגיע עם כבל שמצד אחד יש לו 4 חיבורי SATA ובצידו השני MINI SAS – בדיוק מתאים ל-LSI 9240 שדיברתי עליו מקודם 🙂 ), ו-2 חיבורי MOLEX  לחשמל עבור המודול.

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

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

המודול קיים בצבעים שחור ולבן ותוכלו לרכוש אותו ב-eBay (הנה קישור) במחיר של 450-500 שקל + משלוח לארץ. אותי הוא כבר הציל עם דיסק תקול.