RAID10 (במקום לקרוא רייד עשר צריך לקרוא רייד אחד ואפס) וRAID0+1 (ולא RAID01) הן שיטות זהות מבחינת התוצאה (ביצועים,שרידות ונפח) והשוני ביניהם נובע מהצורה בה מומש בקר הRAID. לא הגיוני שבאותה ארכיטקטורה שתי השיטות האלה ימצאו יחד.
הסבר:
כמו שכבר הוסבר במאמר ועל ידי בתגובה הראשונה שלי לשרשור הזה RAID1 מספק את השרידות הגבוהה ביותר עם ביצועי הכתיבה הטובים ביותר וביצועי קריאה טובים מאוד (לא הכי טובים) אבל בעלות הגבוהה ביותר, וללא יכולת להגדיל נפח
השרידות שלו מושגת ע"י יצירת מראה של שני הדיסקים, כאשר IO מגיע לבקר הRAID לכתיבה, הבקר משכפל את ה-IO לשני IO זהים ושולח כל אחד מהם לדיסק אחד כך ששני הדיסקים נראים בדיוק אותו הדבר (לכן הם גם צריכים להיות זהים, או שהדיסק הקטן והדיסק האיטי יקבעו את הגודל והביצועים)
נניח שקיימים שני דיסקים בגודל 10 בעלות של 10$ כל אחד, עם נחבר אותם בRAID1 נקבל שטח אחסון בגודל 10 עם שרידות מעולה אבל יעילות האחסון היא של 50% כלומר עבור ה10 שקיבלנו שילמנו 20$ במקום 10$
לא ניתן לחבר בRAID1 יותר משני דיסקים
RAID0 נותן פתרון לנפח – חיבור של מספר דיסקים יחד בRAID מגדיל את הנפח באופן לינארי לכמות הדיסקים, וביצועי הכתיבה קריאה שלו הם הטובים ביותר, אולם אין לRAID0 שרידות
אז מה ניתן לעשות עם רוצים שרידות של RAID1 עם יכולת הגדלת נפח וביצועים? מחברים את שתי השיטות יחד.
נניח שיש לנו 4 דיסקים בגודל 10, כל צמד דיסקים מחובר ביחד ע"י RAID1 כדי ליצר שרידות כך שקיבלנו שני RAID1 בגודל 10 כל אחד ואז מחברים את שני ה RAID1 במערך של RAID0 כדי לקבל נפח של 20
זהו RAID10 – RAID0+1 הוא זהה אלא שכאן קודם מחברים של שני דיסקים בגודל 10 במערך של RAID0 כדי לקבל נפח 20 ואז את שני RAID0 בגודל 20 מחברים יחד בRAID1 כדי להשיג את השרידות
דוגמה RAID10:

דוגמה RAID0+1:
בוא ננתח את הביצועים של RAID10 כדי להבין את יעילות הביצועים שלו:
כתיבה
שתי פקודות IO מגיעות לבקר RAID0 (הבקר העליון בתמונה הראשונה) הבקר מפנה פקודה אחת לבקר RAID1 ימין ופקודה שניה לבקר שמאל כשהוא לא ממתין לסיום הראשונה. על אחת מהפקודות מגיעה לבקר שלה (ימין ושמאל) ושם הבקר משכפל אותה ושתי בקשות IO יוצאות במקביל לשני הדיסקים בRAID1 לצורך כתיבה
אם נחשב את הביצועים, ונניח שמהירות הבקר שואפת ל0 (או הרבה יותר מהירה ממהירות הדיסקים כך שהיא זניחה) נראה שהזמן לכתוב את שתי פקודות הIO היה כמעט זהה לכתיבת IO אחד לדיסק אחד, כלומר המהירות גבוהה פי 2, ולא שילמנו בביצועים על השרידות
לצורך השוואה אם מדובר בבקר RAID5 והייתה מגיעה רק בקשר IO אחד למערך הRAID )הכולל 4 דיסקים) הבקר היה צריך קודם לקרוא את הבלוק הישן מהרייד (משלושת דיסקי הDATA והדיסק Parity) נניח שזה שווה במהירות לIO לזמן קריאה של IO אחד (כיוון שהכול נעשה במקביל) , לחשב את הparity מחדש עם הDATA החדש (זה שרוצים לכתוב) ואת לכתוב אותו שוב לבלוק המתאים ולדיסק הparity כלומר אם נניח השכל נעשה במקביל וזמן פעילות הבקר אפסית (ממש לא נכון, כמו כן זה היתרון בבקר חומרה, בבקר תוכנה ממש כבר אי אפשר להניח זמן אפסי) הזמן לכתוב היה כמו לכתוב שתי בקשות IO, בדוגמה שנתתי בתגובה הראשונה שלי הזמן לכתוב IO היא 8 מילי-שניות כלומר לכתב שתי בקשות IO בRAID10 לקח 8 מילי-שניות ואילו בRAID5 בקשת IO אחת לקחה 16 מילי-שניות
קריאה
היעילות כאן היא כמו של RAID0 כל בקשת IO מועברת לדיסק אחד וכך ניתן לקרוא במקביל בקשות IO כמספר הדיסקים – אם יש 4 דיסקים והזמן לקרוא IO הוא 8 מילי-שניות , הזמן לקרוא 4 בקשות IO הוא גם 8 מילי-שניות (זה לא ממש מדויק, אבל אני חושב שהרעיון מובן)
בRAID5 ניתן לקרוא את הdata רק מדיסק הdata ולא מדיסק הparity לכן שיש 4 דיסקים בRAID5 ניתן לקרוא מקסימום של 3 בקשות IO במקביל (כלומר יותר איטי)
RAID5 מוסיף עוד בעיה לאיטיות והיא גודל הstripe שהוא קטן יחסית לכן למעשה יהיו הרבה יותר בקשור IO (למידע נוסף אנא קרא את התגובה הראשונה שלי
לסיכום RAID10 וRAID0+1 הינם זהים, הם נותנים ביצועים מעולים, שרידות מעולה אולם המחיר שלהם הוא הגבוה ביותר, כמו כל דבר בחיים שום דבר לא בא בחינם והכל פשרות.
דרך אגב מערכי אחסון (Storage Array) מקצועיים כמו EMC או NetApp פותרים את בעיית האיטיות של RAID5 ע"י שימוש מתוחכם בcache אבל זה כבר ממש מחוץ לתחום המאמר הזה.