כשל דיסק אף פעם לא קורה לפי לוח זמנים. הוא בדרך כלל מתרחש בערב שישי כשאין 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 באופן שיטתי:
- ביקורת של החומרה והעומס הנוכחיים — מדידת פרופיל I/O, קביעת קריטיות.
- תכנון — בחירת רמת RAID, חישוב מספר דיסקים וגודל chunk.
- פריסה — יצירת המערך תוך התחשבות בממשקים שלך (SATA, SAS, NVMe).
- בדיקות — בדיקות עומס עם
/proc/mdstat, אימות שחזור מכשל החלפה חמה. - ניטור — הגדרת התראות דרך mdmonitor, Prometheus או Zabbix.
לוחות זמנים והיקף עבודה
| משימה | זמן |
|---|---|
| יצירת RAID 1 על שרת פעיל ללא הפרעת שירות | 2–4 שעות |
| הגדרת RAID 5/10 עם עיצוב והעברת נתונים | 4–8 שעות |
| ביקורת RAID קיים, הגדרת ניטור והתראות | 2–3 שעות |
| החלפת מערך מושפל עם שחזור | החל מ-4 שעות |
המחיר מחושב באופן אישי לאחר ביקורת תצורת השרת ודרישות הזמינות. קבל ייעוץ על בחירת רמת ה-RAID האופטימלית והגדרת ניטור. צור קשר — נעזור לך להימנע מהשפלה והשבתה.







