RAID

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

RAIDאנגלית: Redundant Array of Independent Disks, מערך יתיר של כוננים עצמאיים, לשעבר Redundant Array of Inexpensive Disks, מערך יתיר של כוננים זולים) היא שיטה שבה מאחדים מספר כוננים קשיחים ליחידה לוגית אחת. איחוד זה מאפשר גישה במקביל למספר כוננים, המשפרת את מהירות העבודה, ושמירת מידע יתיר, המאפשר לשחזר מידע שאבד בתקלה. ישנן שיטות שונות לניהול מערך הכוננים. שיטות אלו מכונות רמות RAID (באנגלית RAID levels) וכל אחת מהן מספקת יתרונות שונים (כפי שמפורט בהמשך).

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

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

תכונות RAID[עריכת קוד מקור | עריכה]

מהירות[עריכת קוד מקור | עריכה]

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

אמינות[עריכת קוד מקור | עריכה]

כוננים קשיחים מרכזים בתוכם מידע רב. לכן, תקלה בכונן קשיח עשויה לגרום לאיבוד כמות גדולה של מידע. ישנן שלוש שיטות המסייעות להקטין את הסיכוי לאובדן מידע ב-RAID:

  1. שכפול - שמירת כל המידע בשני עותקים (או יותר), כל עותק נשמר בכונן קשיח אחר. שיטה זו גורמת לבזבוז מקום, שכן לכל כמות של מידע, דרושה כמות כפולה (או יותר) של נפח אחסון על הכוננים הקשיחים.
  2. שמירת עותק אחד של המידע, בתוספת של קוד תיקון שגיאות, המאפשר שחזור המידע במקרה של אובדן חלקי. לדוגמה: ב-RAID בו מחוברים שבעה כוננים, ניתן לנהל אותו כך ששישה כוננים משמשים לשמירת מידע, ובשביעי כל סיבית מכילה את סיבית הזוגיות של הסיביות המאוחסנים באותו מקום בשאר הכוננים. בצורה זו, אם אחד הכוננים מתקלקל, ניתן לשחזר כל בית של מידע שהיה עליו באמצעות פעולת XOR בין הבתים שבשאר הכוננים.
  3. מחליף חם (באנגלית Hot Spare) - מערך ה-RAID יכול להכיל כונן קשיח נוסף, שבתחילה אינו בשימוש. במקרה של תקלה, המידע שנשמר בדיסק שהתקלקל משוחזר אל הדיסק שלא היה בשימוש עד כה - כל זאת בלי לגרום להפסקה בפעולת המערך. לאחר שדיסק אחד התקלקל, ניתן להחליפו בחדש, כך שהוא יהווה את המחליף הבא.

סוגי RAID[עריכת קוד מקור | עריכה]

RAID 0[עריכת קוד מקור | עריכה]

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

חיבור שני כוננים ב-RAID 0.

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

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

RAID 1[עריכת קוד מקור | עריכה]

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

חיבור שני כוננים ב-RAID 1.

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

RAID 2[עריכת קוד מקור | עריכה]

מערך של שבעה כוננים לפחות, בו המידע מחולק בין הדיסקים סיבית אחר סיבית, כלומר הסיבית הראשונה של המערך מאוחסנת בכונן הראשון, השנייה בשני וכו'. כך, כל קריאה או כתיבה של סיבית אחת, גוררת קריאה וכתיבה מכל הכוננים. השיטה כוללת שימוש בקוד המינג כקוד לתיקון שגיאות. קוד זה דורש 3 סיביות על כל 4 סיביות מידע ולכן מנצל רק \frac{4}{7} (כ-57%) מנפח האחסון הנתון (השאר משמש לקוד לתיקון השגיאות).

שיטה זו היא היחידה המאפשרת זיהוי ותיקון מידע משובש (מידע שחלה שגיאה בקריאתו אך לא זוהתה על ידי הכונן הקורא) תוך-כדי עבודה.

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

הדרישה לשבעה כוננים לפחות נובעת מכך, שקוד המינג הקטן ביותר בשימוש מקודד 7 סיביות על כל 4 סיביות מידע. מכאן, שיחידת המידע הקטנה ביותר היא 7 סיביות. ברמה 2, מערך ה-RAID צריך להכיל כונן לכל סיבית ביחידת המידע הקטנה ביותר‏[1] - שגודלה, כאמור, 7 סיביות. בצורה דומה, ניתן להרכיב מערך RAID 2 מ-14 כוננים, 39 כוננים וכו', על-פי קוד המינג המתאים.

RAID 3[עריכת קוד מקור | עריכה]

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

חיבור ארבעה כוננים ב-RAID 3.

בדוגמה שבשרטוט, הכוננים Disk 0, Disk 1, Disk 2 מאחסנים מידע, ולכל שלישיית בתים הנמצאים במיקומים מקבילים, Disk 3 מאחסן את בית הזוגיות. ניתן לראות שלבלוק A, המכיל שני בתים בכוננים המאחסנים מידע, שני בתי זוגיות ב-Disk 3, שהוא דיסק הזוגיות.

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

עבור n כוננים, רמה זו מאפשרת לשמור \frac{n-1}{n} מנפח האחסון הנתון.

RAID 4[עריכת קוד מקור | עריכה]

כמו RAID 3, מערך של שלושה כוננים לפחות, שבו כונן אחד של זוגיות ושאר הכוננים מאחסנים מידע. בניגוד ל-RAID 3, כאן המידע מחולק ברמה של בלוק בגודל מסילה (מעגל על הדיסק ברדיוס מסוים) או גזרה (חלק ממסילה). בשיטה זו, קריאה של בלוק אחד תיגש לדיסק אחד בלבד. כתיבה של בלוק דורשת קריאה של הבלוק שיוחלף ושל בלוק הזוגיות המתאים וכתיבה של הבלוק החדש ושל בלוק הזוגיות החדש.

חיבור ארבעה כוננים ב-RAID 4.

גם בדוגמה זו, כמו בדוגמה שהובאה עבור RAID 3, שלושת הכוננים הראשונים מאחסנים מידע, והרביעי את הזוגיות, אלא שכאן ניתן לראות כי הזוגיות נשמרת לכל בלוק ולא לכל בית - הבלוקים המקבילים בצבע אחד, ולכל קבוצת בלוקים מקבילים בלוק זוגיות משלה ב-Disk 3.

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

ניצול המקום הוא כמו במערך RAID 3.

RAID 5[עריכת קוד מקור | עריכה]

מערך של שלושה כוננים לפחות, שבהם המידע והזוגיות מפוזרים בין כל הכוננים, והזוגיות נכתבת ברמת הבלוק כמו ב-RAID 4. מכיוון שהזוגיות מפוזרת בין כל הכוננים, הכתיבה אינה תלויה בכונן אחד וניתן לבצע מספר פעולות כתיבה בו-זמנית. גם כאן, ניצול המקום הוא כמו במערך RAID 3.

חיבור ארבעה כוננים ב-RAID 5.

כפי שהשרטוט מדגים, לכל קבוצת בלוקים מקבילים, בלוק הזוגיות נשמר בכונן אחר: בלוק הזוגיות של השורה הראשונה יישמר ב-Disk 3, של השורה השנייה ב-Disk 2 וכו', בצורה מחזורית, כלומר בלוק הזוגיות של בלוק E יישמר ב-Disk 3.

RAID 6[עריכת קוד מקור | עריכה]

מערך של ארבעה כוננים לפחות, בו על כל מספר בלוקים כמספר הכוננים נשמרים שני בלוקים של תיקון שגיאות בקוד ריד-סולומון. פיזור המידע נעשה כמו ב-RAID 5.

חיבור חמישה כוננים ב-RAID 6.

כפי שניתן לראות בשרטוט, לכל קבוצת בלוקים יש שני בלוקים של זוגיות, המפוזרים בכוננים השונים בצורה מחזורית.

שיטה זו מאפשרת התאוששות מתקלה בו-זמנית בשני כוננים, ולא רק מתקלה בכונן אחד כמו בשיטות האחרות.

עבור n כוננים, רמה זו מאפשרת לשמור \frac{n-2}{n} מנפח האחסון הנתון.

רמות RAID מקוננות[עריכת קוד מקור | עריכה]

ברמות RAID מקוננות, הכוננים מחולקים לקבוצות שוות המנוהלות בשיטה אחת וכל קבוצה מהווה כונן ב-RAID המנוהל בשיטה אחרת. גם RAID זה עשוי להיות חלק מקבוצה יותר גדולה.

שיטות מקוננות בשימוש:

RAID 0+1[עריכת קוד מקור | עריכה]

הכוננים מקובצים למערכי RAID 0 המנוהלים ככוננים במערך RAID 1. כלומר, המידע מחולק לקטעים כדי לאפשר גישה מקבילית ומשוכפל בין קבוצות הכוננים.

חיבור ארבעה כוננים ב-RAID 0+1

שיטה זו מכונה גם RAID 01.

RAID 10[עריכת קוד מקור | עריכה]

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

חיבור ארבעה כוננים ב-RAID 10.

שיטה זו מכונה גם RAID 1+0 ו-1E

RAID 100[עריכת קוד מקור | עריכה]

בשיטה זו נעשה קינון כפול - הכוננים מקובצים למערכי RAID 1, הקבוצות מקובצות למערכי RAID 0 שמקובצים בתורם למערך RAID 0. בשיטה זו יש שיפור בזמן הקריאה האקראית יחסית ל-RAID 10.

רמות מקוננות נוספות[עריכת קוד מקור | עריכה]

בצורה דומה לרמות שתוארו, קיימות גם רמות RAID 0+3, RAID 30, RAID 50 ו-RAID 60.

סיכום רמות RAID[עריכת קוד מקור | עריכה]

רמה שיטה שיפור מהירות אמינות יחידת פיזור מינימום כוננים
0 פיזור מידע כן לא בלוק 2
1 שכפול לא כן אין 2
2 פיזור סיבית בכל כונן+קוד המינג כן כן סיבית 7
3 בית בכל כונן+זוגיות כן כן בית 3
4 פיזור+זוגיות בכונן ייעודי כן כן בלוק 3
5 פיזור+זוגיות מפוזרת כן כן בלוק 3
6 פיזור+קוד ריד-סולומון כן כן בלוק 4
0+1 1 בתוך 0 כן כן בלוק 4
10 0 בתוך 1 כן כן בלוק 4
100 1 בתוך 0 בתוך 0 כן כן בלוק 8

יישום מערך RAID[עריכת קוד מקור | עריכה]

יישום בתוכנה[עריכת קוד מקור | עריכה]

בתוכנה, המערך מיושם על ידי מערכת ההפעלה - מערכת הקבצים היא האחראית הבלעדית על מערך ה-RAID והכל יתבצע דרכה. מימוש כזה קיים כיום (2007) ברוב מערכות ההפעלה.

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

יישום בחומרה[עריכת קוד מקור | עריכה]

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

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

זיכרון מטמון[עריכת קוד מקור | עריכה]

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

כדי למנוע מקרה בו כיבוי פתאומי של המתח למערך ה-RAID (למשל, בעת הפסקת חשמל) גורם לאיבוד מידע, בגלל מחיקת זיכרון המטמון, מקובל להשתמש בזיכרון לא נדיף, כדוגמת זיכרון הבזק (Flash).

היסטוריה[עריכת קוד מקור | עריכה]

נורמן קן אוצ'י מ-IBM, רשם בשנת 1978 פטנט ‏[2] על RAID תחת הכותרת "מערכת לשחזור מידע שאוחסן ביחידת זיכרון שכשלה". תוכן הפטנט מתאר מערכת RAID בה המידע מחולק לרצועות, בדומה ל-RAID רמה 5. בנוסף, מתוארת מערכת עם שכפול ומערכת עם הגנת זוגיות, כפי שתוארה לעיל.

המונח "RAID" נטבע בשנת 1987 על ידי דוד פטרסון, גארת' גיבסון ורנדי כץ באוניברסיטת ברקלי שבקליפורניה, ארצות הברית. במאמר של השלושה משנת 1988[3] הוגדרו לראשונה רמות ה-RAID התאורטיות בין 1 ל-5. למעשה, מימושי ה-RAID שבאו מאוחר יותר שונים מהותית מההגדרות המקוריות, אף שהם עדיין מסומנים במספרים הרמות המקוריים.

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

סימוכין[עריכת קוד מקור | עריכה]

  1. ^ RAID 2 באתר The PC Guide
  2. ^ קישור לפטנט "מערכת לשחזור מידע שאוחסן ביחידת זיכרון שכשלה" ("System for recovering data stored in failed memory unit") באתר משרד הפטנטים של ארצות הברית (באנגלית).
  3. ^ המאמר "A Case for Redundant Arrays of Inexpensive Disks" מאת דוד פטרסון, גארת' גיבסון ורנדי כץ (באנגלית).