הגדרת מערכי RAID (mdadm) עבור דיסקי שרת

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

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

כשל דיסק אף פעם לא קורה לפי לוח זמנים. הוא בדרך כלל מתרחש בערב שישי כשאין RAID על השרת והנתונים לא גובו במשך שבוע. המהנדסים שלנו נתקלים בזה באופן קבוע: לקוח בפאניקה מתקשר, ותוך שעה אנחנו בונים מחדש את המערך ומשחזרים את הגישה. mdadm הוא הכלי הסטנדרטי ל-RAID תוכנתי בלינוקס, ועם תצורה נכונה הוא פועל שנים ללא התערבות. אנו מבטיחים תצורה נכונה שתשרוד כשל דיסק ועדכון גרעין מתוכנן. הניסיון שלנו מראה ש-90% מבעיות ה-RAID נובעות מתצורה ראשונית שגויה. במשך 8 שנות עבודה, הגדרנו יותר מ-50 מערכי RAID על שרתים בדרגות מורכבות שונות, כולל סביבות ייצור קריטיות עם SLO של 99.9%. הבטחת סובלנות תקלות של השרת מתחילה בבחירת רמת ה-RAID הנכונה ובתצורה נכונה שלה.

איזו רמת RAID לבחור למשימה שלך

לפני הרצת mdadm --create, כדאי להבין מה בדיוק צריך הגנה. שלושה תרחישים הם הנפוצים ביותר:

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

RAID 5 — מינימום שלושה דיסקים, אחד משמש לבדיקת זוגיות. מספק איזון בין קיבולת לסובלנות תקלות. בעיה: במהלך בנייה מחדש על דיסקים מודרניים של 4TB+, התהליך אורך 10–20 שעות, ובתקופה זו העומס על הדיסקים הנותרים הוא מקסימלי. אם דיסק שני נכשל, המערך אבוד.

RAID 10 — שיקוף על פני רצועות. דורש לפחות ארבעה דיסקים, אך סובל כשל דיסק אחד בכל זוג. על שרתים בעלי עומס גבוה עם פעילות כתיבה כבדה, זו האפשרות הטובה ביותר. RAID 10 מהיר לפחות פי שניים מ-RAID 5 בפעולות כתיבה, כפי שהוכח בבדיקות הבenchmark שלנו.

פרמטר RAID 1 RAID 5 RAID 10
מינימום דיסקים 2 3 4
סובלנות תקלות דיסק אחד דיסק אחד דיסק אחד לזוג
מהירות קריאה פי 2 N-1 פי פי 2
מהירות כתיבה פי 1 איטית יותר (זוגיות) פי 1
זמן שחזור מהיר איטי (10-20 שעות) מהיר
תרחיש מומלץ מערכת, מסד נתונים אחסון, מדיה עומס גבוה

רמות RAID מוגדרות על ידי תקן SNIA

איך ליצור מערך RAID ולא לאבד נתונים

יצירה בסיסית של RAID 1 משני דיסקים:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u

ללא שלב זה, המערך עלול שלא להתאסף אוטומטית לאחר אתחול מחדש. תסמינים: המערכת מאתחלת עם מערך מושפל או לא רואה את mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc mdadm --detail --scan >> /etc/mdadm/mdadm.conf update-initramfs -u כלל.

ניטור הסטטוס:

cat /proc/mdstat mdadm --detail /dev/md0 

כדי להגדיר התראות דוא"ל על השפלת מערך, הוסף את השורה /dev/md0 ל-cat /proc/mdstat mdadm --detail /dev/md0 והפעל את הדמון: /etc/mdadm/mdadm.conf.

הגדרות ניטור נוספות

מלבד mdmonitor, ניתן להשתמש ב-Prometheus עם node_exporter, המייצא מדדי mdadm ל-MAILADDR [email protected]. פרטים נוספים נמצאים בתיעוד הרשמי.

למה גודל ה-Chunk חשוב?

הפרמטר systemctl enable mdmonitor משפיע על הביצועים ולעתים קרובות מוזנח במהלך הגדרה מהירה. עבור RAID 5/6 עם שלושה דיסקים, chunk של 512K מספק את האיזון הטוב ביותר לקריאות אקראיות. עבור RAID 10 עם כתיבות רציפות גדולות, 256K עדיף. בחירת chunk שגויה יכולה להפחית את הביצועים ב-30%.

יישור מחיצות חשוב לא פחות. דיסקים מודרניים עם סקטורים של 4K ו-SSD דורשים שתחילת המחיצה תהיה מיושרת לגבול של 1MB. אם המחיצה נוצרת דרך /var/lib/node_exporter/textfile_collector/ ללא ציון מפורש, היישור נכון כברירת מחדל. אבל במערכות ישנות יותר או עם חישוב צילינדרים ידני, ניתן לקבל היסט שמחצית את הביצועים.

איך לבצע החלפה חמה ובנייה מחדש

הוסף דיסק רזרבי למערך להחלפה אוטומטית בעת כשל:

mdadm /dev/md0 --add-spare /dev/sdd 

שים לב: כאשר דיסק מתחיל לייצר שגיאות (אזהרות S.M.A.R.T., שגיאות ב---chunk), ההליך הנכון הוא:

mdadm /dev/md0 --fail /dev/sdb mdadm /dev/md0 --remove /dev/sdb mdadm /dev/md0 --add /dev/sdb 

הבנייה מחדש תתחיל אוטומטית. ההתקדמות נראית ב-fdisk. כדי להגביל את מהירות הבנייה מחדש ולהימנע מעומס I/O על הייצור:

echo 50000 > /proc/sys/dev/raid/speed_limit_max 

טעויות אופייניות בתצורה עצמית

שתי נקודות שאנו נתקלים בהן באופן קבוע במהלך ביקורות שרתים:

  • חסר mdadm.conf. המערך נוצר ועובד, אך התצורה לא נשמרה. לאחר עדכון גרעין מתוכנן ו-mdadm /dev/md0 --add-spare /dev/sdd , המערכת לא קולטת את התצורה. תוצאה: השרת מאתחל למצב חירום עם פאניקה על התקן root חסר.

  • RAID שנבנה על מחיצות במקום על דיסקים שלמים. טכנית זה עובד, אבל בעת החלפת דיסק, יש צורך ליצור מחדש את המחיצה עם אותה גאומטריה בדיוק. בפועל, זה שלב נוסף שנשכח, והבנייה מחדש נכשלת עקב אי-התאמה בגודל. אנו ממליצים לבנות RAID על דיסקים שלמים (dmesg, mdadm /dev/md0 --fail /dev/sdb mdadm /dev/md0 --remove /dev/sdb mdadm /dev/md0 --add /dev/sdb ), ולאחר מכן ליצור מחיצות בתוך המערך.

תהליך העבודה

אנו ניגשים לתצורת RAID באופן שיטתי:

  1. ביקורת של החומרה והעומס הנוכחיים — מדידת פרופיל I/O, קביעת קריטיות.
  2. תכנון — בחירת רמת RAID, חישוב מספר דיסקים וגודל chunk.
  3. פריסה — יצירת המערך תוך התחשבות בממשקים שלך (SATA, SAS, NVMe).
  4. בדיקות — בדיקות עומס עם /proc/mdstat, אימות שחזור מכשל החלפה חמה.
  5. ניטור — הגדרת התראות דרך mdmonitor, Prometheus או Zabbix.

לוחות זמנים והיקף עבודה

משימה זמן
יצירת RAID 1 על שרת פעיל ללא הפרעת שירות 2–4 שעות
הגדרת RAID 5/10 עם עיצוב והעברת נתונים 4–8 שעות
ביקורת RAID קיים, הגדרת ניטור והתראות 2–3 שעות
החלפת מערך מושפל עם שחזור החל מ-4 שעות

המחיר מחושב באופן אישי לאחר ביקורת תצורת השרת ודרישות הזמינות. קבל ייעוץ על בחירת רמת ה-RAID האופטימלית והגדרת ניטור. צור קשר — נעזור לך להימנע מהשפלה והשבתה.