با فناوري RAID، دقيق تر آشنا شويم
با فناوري RAID، دقيق تر آشنا شويم
با فناوري RAID، دقيق تر آشنا شويم
در سال 1987، Gibson، Katz و Patterson از دانشگاه کاليفرنيا در برکلي، مقاله اي مشترک با عنوان "Disk Inexpensive of Arrays Redundant for Case A" را ارائه نمودند.
هدف اصلي فناوري RAID، ترکيب نمودن ديسک هاي سخت جداگانه در قالب يک آرايه، بمنظور دستيابي به قدرت عملکرد، قابليت اعتماد و ظرفيتي بيش از يک ديسک بزرگ و گران مي باشد. بعلاوه کل اين آرايه براي سيستم عامل ميزبان، بصورت يک قطعه ي واحد عمل مي کند.
يک زير سيستم ديسک با کنترلر RAID، قابليت هاي بسيار بيشتري را نسبت به يک زير سيستم ديسک JBOD ارائه مي نمايد. RAID در زمانيکه ديسک هاي سخت خيلي گران و نسبت به امروز، از قابليت اعتماد پايين تري برخوردار بودند، ابداع گرديد. RAID سر واژه عبارت "Redundant Array of Independent Disks " مي باشد.
فناوري RAID داراي دو هدف اصلي است: براي افزايش قدرت عملکرد (Performance) از طريق تکنيکي به نام strping؛ و هدف دوم عبارت است از افزايش قدرت تحمل در برابر خرابي (fault-tolerance) از طريق افزونگي (redundancy). تکنيک striping، داده ها را روي چندين هارد ديسک توزيع نموده و بدين شکل، بار را روي سخت افزار بيشتري توزيع مي نمايد. از طريق ترکيب مناسبي از ديسک هاي سخت، امکان افزايش قابل توجهي fault-tolerance و performance، در سيستم امکان پذير مي گردد.
مجموعه ي ديسک هاي سخت تحت فرمان کنترلر RAID، ديسک هاي سخت مجازي ناميده مي شوند. سروري که به يک سيستم RAID متصل مي شود، تنها ديسک سخت مجازي را مي بيند؛ اين حقيقت که کنترلر RAID، داده ها را روي چندين ديسک سخت فيزيکي توزيع مي کند، کاملاً از ديد سرور پنهان است (شکل 1). اين امر تنها براي مدير سيستم، از بيرون قابل مشاهده است.
يک کنترلر RAID، با روش هاي گوناگوني مي تواند داده هايي که يک سرور روي چندين هارد ديسک مي نويسد را توزيع نمايد.
يک فاکتور مشترک براي اغلب سطوح RAID، اين است که آنها علاوه بر داده هاي اصلي، اطلاعات اضافي را ذخيره مي نمايند. اگر يک ديسک سخت دچار آسيب شود، داده هاي آن را مي توان از ساير هارد ديسک هاي مجموعه بازسازي نمود. در صورت وجود سخت افزار مناسب، حتي مي توان در حين کار، هارد ديسک معيوب را با يک مورد جديد جايگزين نمود. سپس کنترلر RAID، داده هاي ديسک تعويض شده را بازسازي مي نمايد. اين پروسه، جداي از کمي کاهش در ميزان عملکرد سيستم، از ديد سرور پنهان است: سرور، بدون وقفه به کار با ديسک سخت مجازي ادامه خواهد داد.
کنترلرهاي مدرن RAID، اين پروسه را بطور اتوماتيک آغاز مي کنند. اين امر مستلزم تعريف ديسک هاي باصطلاح hot spare مي باشد (شکل 2). ديسک هاي hot spare، در حالت نرمال مورد استفاده قرار نمي گيرند. در صورتيکه يک ديسک دچار آسيب شود، کنترلر RAID، بلافاصله شروع به کپي نمودن داده هاي ديسک سالم باقيمانده روي يک ديسک hot spare مي نمايد. بعد از جايگزيني ديسک معيوب، ديسک جديد در زمره ي ديسک هاي hot spare قرار مي گيرد.
بازسازي داده ها از يک ديسک سخت معيوب، همزمان با عمليات خواندن/ نوشتن سرور روي ديسک سخت مجازي صورت مي پذيرد، بطوريکه از نقطه نظر سرور، يک افت کوچک در سطح عملکرد، قابل مشاهده خواهد بود. ديسک هاي سخت مدرن، مجهز به برنامه هاي تشخيصي هستند که خطاهاي خواندن/ نوشتن را به سرور گزارش مي دهند.
يک مزيت جانبي استفاده از چندين ديسک سخت به شکل يک ديسک مجازي، ظرفيت بالاتر ديسک هاي سخت مجازي است. در نتيجه آدرس هاي کمتري در کانال I/O مصرف گرديده و بدينگونه مديريت سرور نيز ساده مي گردد، زيرا ديسک هاي سخت کمتري (نام هاي درايو يا ولوم) مورد استفاده قرار خواهد گرفت.
RAID 0 قدرت عملکرد ديسک مجازي را به شرح ذيل افزايش مي دهد: تک تک هارد ديسک ها، مبادله ي داده ها با کنترلر RAID را بسيار سريعتر از عمليات خواندن/ نوشتن روي ديسک چرخان انجام مي دهند. در شکل (3)، کنترلر RAID، اولين بلوک (بلوک A) را به هارد ديسک ارسال مي کند. اين عمل نوشتن مقداري زمان نياز دارد. در حاليکه اولين ديسک، اولين بلوک را روي ديسک سخت مي نويسد، کنترلر RAID، از قبل شروع به ارسال بلوک دوم (بلوک B) به ديسک سخت دوم و بلوک C به ديسک سخت سوم نموده است. در ضمن، دو هارد ديسک فيزيکي اول، هنوز درگير نوشتن بلوک هاي مربوطه روي فضاي هارد مي باشند. اگر کنترلر RAID، اکنون بلوک E را به اولين ديسک سخت ارسال نمايد، اين ديسک اگر نه کامل، لااقل بخشي از بلوک A را روي ديسک نوشته است.
بعنوان مثال، در سال 2002 از اين طريق، امکان throughput چهار برابر ميسر بود: تک تک هارد ديسک ها قادر به ارائه خروجي حدود 50 MB/s بودند. چهار ديسک فيزيکي، به خروجي کل حدود 4× 200MB/s=50 MB/s نائل مي شوند. امروزه تکنيک هاي I/O مثل SCSI يا Fiber Channel، به خروجي بيش از 200MB/s دست يافته اند. اگر آرايه ي RAID مشتمل بر فقط سه ديسک سخت فيزيکي بود، خروجي کل ديسک هاي سخت، تبديل به عاملي محدود کننده مي گرديد. از سوي ديگر اگر آرايه RAID، شامل پنج ديسک سخت مي بود، کانال I/O فاکتور محدود کننده خواهد بود. بنابراين، با پنج هارد ديسک يا بيشتر، افزايش عملکرد سيستم در صورتي امکان پذير است که ديسک هاي سخت به مسيرهاي I/O متفاوتي متصل شده بطوريکه بتوان بار را نه تنها روي چندين ديسک سخت بلکه روي چندين کانال I/O توزيع نمود.
RAID 0 باعث افزايش قدرت عملکرد ديسک سخت مجازي (و نه fault-tolerance) مي گردد. اگر يک ديسک سخت فيزيکي تخريب گردد، همه داده ها روي ديسک سخت مجازي از بين مي روند. بنابراين، حرف R (براي واژه ي Redundant) در RAID، در مورد RAID 0 صدق نمي کند.
در حالت عملکرد نرمال با سطح RAID 0 خالص، افزايش قدرت عملکرد سيستم، تنها در عمليات خواندن امکان پذير است. همچنين هنگام عمليات خوانش داده، بار کل، بين دو ديسک تقسيم مي گردد. اگرچه در مقايسه با RAID 0، اين ميزان بهره قابل اغماض است.
RAID 0+1 و RAID 10، هريک يک سلسله مراتب مجازي سازي دو مرحله اي را ارائه مي نمايند. شکل (5) اصل حاکم بر RAID 0+1 (mirrored stripes) را نشان مي دهد. در اين مثال، هشت ديسک سخت مورد استفاده قرار مي گيرند. کنترلر RAID در ابتدا بوسيله ي RAID 0، هر چهار ديسک را با يکديگر در قالب دو ديسک سخت مجازي که تنها براي کنترلر RAID مشهود است، ترکيب مي کند (عمل striping). در سطح دوم، اين دو ديسک سخت مجازي در قالب يک ديسک سخت مجازي واحد (با استفاده از تکنيک mirroring در RAID 1) با هم ادغام مي گردند. تنها اين ديسک مجازي واحد، براي سرور قابل روئيت مي باشد.
در RAID 10(striped mirrors)، توالي اجراي RAID 0 (striping) و RAID 1 (mirroring) نسبت به RAID 0+1 (mirrored stripes) معکوس مي گردد. شکل (6)، اصل حاکم بر RAID 10 را مبتني بر هشت ديسک سخت فيزيکي را نشان مي دهد. در RAID 10، کنترلر RAID در ابتدا با استفاده از RAID 1 (mirroring)، هارد ديسک هاي فيزيکي را بصورت مزدوج به شکل چهار ديسک سخت مجازي ترکيب مي کند. در مرحله ي دوم، کنترلر RAID، اين چهار ديسک سخت مجازي را از طريق RAID 0 (striping)، بصورت يک ديسک سخت مجازي واحد ترکيب مي نمايد. سرور فقط اين ديسک سخت مجازي واحد را مي بيند.
در هر دو RAID 0+1 و RAID 10، سرور تنها با ديسک سخت واحد به يک ديسک سخت فيزيکي واحد مي باشد را خواهد ديد. اما اکنون يک سؤال مطرح مي شود: کدام يک از دو سطح RAID مورد بحث ( RAID 0+1 يا RAID 10 ) بهتر است؟
اين سؤال با در نظر گرفتن اين واقعيت بايد جواب داده شود که هنگام استفاده از RAID 0 خرابي يک ديسک سخت، منجر به خرابي کل ديسک سخت مجازي مي گردد. در مثال مرتبط با RAID 0+1 (شکل 5)، خرابي يک ديسک سخت فيزيکي بدينگونه معادل با خرابي چهار ديسک سخت فيزيکي مي گردد (شکل 7). اگر يکي از چهار ديسک سخت فيزيکي ديگر معيوب گردد، داده ها از بين مي روند. در اصل گاهي اوقات بازيابي داده ها از ديسک هاي باقيمانده امکان پذير است اما کنترلرهاي RAID موجود در بازار اين کار بخوبي نمي توانند انجام دهند.
از سوي ديگر در مورد RAID 10، بعد از خرابي يک ديسک سخت فيزيکي، خرابي يک ديسک ديگر (به استثناء mirror مربوطه) قابل تحمل مي باشد (شکل 8). بنابراين RAID 10 نسبت به RAID 0+1، داراي fault tolerance بسيار بالاتري است. بعلاوه هزينه ي بازيابي سيستم RAID بعد از خرابي يک ديسک سخت (در مورد RAID 10 نسبت به RAID 0+1) خيلي کمتر است. در RAID 10، تنها يک ديسک سخت فيزيکي مي بايست مجدداً ايجاد گردد.
اگرچه در صورتيکه قدرت عملکرد (Performance) RAID 0+1 با RAID 10 مقايسه شود، مسئله فرق مي کند. در بخشي از مقاله به حالتي اشاره خواهم کرد که در آن استفاده از RAID 0+1 سودمندتر مي باشد.
در مورد دو تکنيک RAID 0+1 و RAID 10، اغلب به لحاظ ذهني اين دو پروسيجر با هم اختلاط گشته و سبب سردرگمي ما مي گردند. بنابراين پاسخ اين سؤال که آيا از RAID 10 استفاده کنيم يا RAID 0+1، هميشه پاسخ واضحي را در پي ندارد. در اينگونه بحث ها، بهتر است بپرسيم آيا ابتدا mirroring رخ دهد و سپس نتيجه ي آن strip گردد يا ابتدا striping انجام گرفته و سپس حاصل کار mirror گردد.
از نقطه نظر رياضي، بلوک parity، با کمک اپراتور منطقي XOR محاسبه مي شود. در مثال شکل (9)، براي مثال معادله
P(ABCD)= A XOR B XOR C XOR D اعمال مي گردد. صرفه جويي فضايي ارائه شده توسط RAID 4 و RAID 5 نسبت به RAID 10، بدون هزينه نيست. تغيير يک بلوک داده، مقدار بلوک parity مرتبط را تغيير مي دهد. اين بدان معناست که هر عمل نوشتن روي ديسک سخت مجازي:
1- به عمل نوشتن فيزيکي بلوک داده نياز دارد.
2- به محاسبه مجدد بلوک parity نياز دارد.
3- به عمل نوشتن فيزيکي بلوک parity جديداً محاسبه شده نياز دارد.
اين هزينه اضافي براي عمليات نوشتن در RAID 4 و RAID 5، جريمه ي نوشتن RAID 4 يا RAID 5 ناميده مي شود.
هزينه ي محاسبه مجدد بلوک parity، بواسطه خواص رياضي اپراتور XOR، نسبتاً پايين مي باشد. اگر بلوک A بوسيله ي بلوک ? جايگزين شود و ? تفاوت بين بلوک داده ي جديد و قديم باشد، سپس نتيجه مي گيريم: ?= A XOR ? بلوک parity جديد، اکنون به سادگي از بلوک parity قديمي P و ? قابل محاسبه مي باشد: new P= old P XOR ?
بنابراين، قبل از بازنويسي هارد ديسک توسط کنترلر، بلوک قديمي A بايد خوانده شود، بطوريکه تفاوت ? قابل محاسبه باشد.
شکل (10) سروري را نشان مي دهد که بلوک D را روي ديسک سخت مجازي تغيير مي دهد. کنترلر RAID، بلوک داده ها و بلوک parity مرتبط از ديسک مورد بحث را خوانده و آن را به کاشه منتقل مي کند. سپس کنترلر مذکور، از عمل XOR براي محاسبه تفاوت بين بلوک parity قديمي و جديد استفاده مي کند.
RAID 4 همه ي بلوک هاي parity را روي يک ديسک سخت فيزيکي واحد ذخيره مي کند. براي مثال در شکل (9)، اين بدان معناست که عمليات write براي بلوک هاي داده، روي چهار ديسک سخت فيزيکي توزيع مي گردد. اگرچه ديسک parity، مجبور به محاسبه ي تعداد يکساني عمل نوشتن روي خود مي باشد. بنابراين ديسک parity (در صورت وجود تعداد زيادي عمليات نوشتن) يک گلوگاه RAID 4 محسوب مي شود.
براي مواجهه با اين سد اجرايي، RAID 5 بلوک هاي parity را روي همه ي ديسک هاي سخت توزيع مي نمايد. شکل (11) اين فرايند را نشان مي دهد.
RAID 4 و RAID 5، بلوک هاي داده را روي تعداد زيادي ديسک سخت فيزيکي توزيع مي نمايند. بنابراين عمل خواندن RAID 4 و RAID 5، بخوبي RAID 0 و اغلب به خوبي RAID 10 مي باشد. همچنانکه قبلاً بحث شد، عمل نوشتن RAID 4 و RAID 5، از مشکل write penalty رنج مي برند. در RAID 4 يک مانع اضافي مربوط به ديسک parity نيز وجود دارد. بنابراين RAID 4 عملاً بندرت مورد استفاده قرار مي گيرد و بيشتر از RAID 5 استفاده مي گردد.
با توجه به ابعاد ظرفيتي ديسک هاي سخت امروزي، کميت هاي بزرگي از داده ها سريعاً مي تواند از دست بروند. علت اصلي اين واقعيت شگفت انگيز آن است که RAID 5 يک درجه ي بالايي از دسترس پذيري را در مورد خرابي فقط يک ديسک فيزيکي سخت (در آن واحد) ارائه مي نمايد، در حاليکه بسياري از مردم تصور مي کنند RAID 5، يک راه حل تداوم کار را براي خرابي چندين ديسک سخت (و نتيجتاً کل آرايه ي RAID 5) فراهم نمايد.
جدول (1)، احتمال خرابي برخي پيکربندي هاي RAID 5 را نشان مي دهد. اين محاسبات، مبتني بر داده هاي فني ديسک سخت نوع Fiber Channel که بطور تجاري در سال 2007 عرضه گرديده، ارائه شده است. براي مثال قابليت سرويس دهي متوسط ديسک، 1400000 ساعت (تقريباً 160 سال) فرض شده است. در اين مدل تنها اندازه ي ديسک هاي سخت تغيير کرده است. چهار ستون اول جدول، تعداد ديسک هاي فيزيکي در يک آرايه RAID، اندازه ي تک تک ديسک ها، ظرفيت خالص RAID و نسبت ظرفيت خالص به ظرفيت اسمي (راندمان ذخيره سازي) را نشان مي دهند.
ستون پنجم، نرخ خطاي بيت (BER) را نشان مي دهد. ديسک هاي سخت Fiber Channel (سال 2007) داراي BER برابر 15- ^10 و ديسک هاي سخت SATA داراي نرخ خطاي بيت 14- ^10 مي باشند. يک نرخ خطاي بيت 15- ^10 بدان معناست که يک سکتور از TB 100 داده در حال خوانش، قابل خواندن نيست و يک BER معادل 14- ^ 10 بدان معناست که يک سکتور از TB 10 داده، قابل خواندن نمي باشد. امروزه ديسک هاي سختي با BERهاي پايينتر موجود هستند. اگرچه پيشرفت هاي صورت گرفته در فناوري ديسک، اصولاً روي ظرفيت ديسک هاي سخت متمرکز شده است و نه روي بهبود نرخ خطاي بيت (BER).
سه ستون آخر، احتمال افت داده در آرايه هاي RAID 5 را نشان مي دهد. اگر يک ديسک سخت در يک آرايه ي RAID 5 دچار آسيب شود، داده هاي ديسک هاي سالم، خوانده مي شوند بطوريکه داده هاي ديسک معيوب، مي تواند بازسازي شود. اين امر مستلزم آن است کميت هاي بزرگي از داده ها بايد خوانده شوند، بدينگونه احتمال خرابي سکتور در طي زمان بازسازي اطلاعات افزايش مي يابد. اين بدان معناست که دو بلوک متعلق به يک گروه parity يکسان، تخريب شده و بنابراين دوباره قابل بازسازي نيست (متوسط زماني بروز افت داده بواسطه BER يا همان MTTDL BER). گاهي اوقات يک ديسک سخت دوم در طي بازسازي داده تخريب مي گردد. اين امر همچنين منجر به از دست رفتن داده ها مي گردد (متوسط زماني بروز افت داده بواسطه خرابي ديسک دوم يا MTTDL DD).
ستون آخر احتمال کل افت داده را در يک آرايه ي RAID 5 (متوسط زماني بروز افت داده يا MTTDL) نشان مي دهد.
خط يک پيکربندي مرجع براي انجام عمل مقايسه را نشان مي دهد: يک آرايه ي RAID 5 با هشت ديسک سخت 512GB در نظر گرفته شده است. خطوط helper در جدول 1 نشان مي دهند که چگونه اندازه هاي ديسک مختلف يا اندازه هاي آرايه اي متفاوت، روي احتمال خرابي اثر مي گذارند. دو بلوک بعدي، احتمال خرابي با 14- ^10 =BER را که در ديسک هاي SATA متداول است (سال 2007) نشان مي دهد. در اين مدل، طول عمر 1400000 ساعت براي اين ديسک ها فرض گرديده است. البته عملاً ديسک هاي SATA داراي طول عمر کمتر و در نتيجه احتمال خرابي بالاتري هستند. بعلاوه هارد ديسک هاي SATA اغلب براي کاربردهاي اداري (5 روز × 8 ساعت) طراحي مي شوند، از اينرو در صورت استفاده مداوم (7 روز × 24 ساعت)، احتمال خرابي باز هم افزايش مي يابد. در نهايت بلوک آخر نشان مي دهد که اگر ديسک هاي سخت داراي 16- ^10=BER باشند، احتمال خرابي تا چه ميزان کاهش مي يابد.
آرايه هاي RAID 5 قادر به تصحيح خرابي هاي دوگانه نيستند. اين جدول يک افزايش واضح در احتمال افت داده ها در آرايه ي RAID 5 را بواسطه افزايش ظرفيت ديسک نشان مي دهد. RAID 6 با افزودن يک ديسک سخت parity ثانوي (بمنظور گسترش RAID 5 و مصرف کمتر فضاي ذخيره سازي نسبت به RAID 10)، مصالحه اي بين RAID 5 و RAID 10 ايجاد مي نمايد. البته از آنجاييکه write penalty مربوط به RAID 5 در مورد RAID 6، دوبار اتفاق مي افتد، RAID 6 داراي عمل نوشتن (write performance) ضعيفي مي باشد.
همانند RAID 4 و RAID 3، RAID 5 از داده هاي parity استفاده مي کند. RAID 3 داده هاي يک بلوک را بين همه ي ديسک هاي يک سيستم RAID 3 ذخيره مي کند بطوريکه در مقايسه با RAID 4 و RAID 5، در هر عمل خواندن يا نوشتن، همه ي ديسک ها درگير مي شوند. RAID 3 تنها اجازه خواندن و نوشتن بلوک هاي کامل را مي دهد و بدينگونه نوشتن بلوک هاي جداگانه يک گروه parity ممکن نيست. بعلاوه در RAID 3، چرخش تک تک ديسک ها همزمان گشته بطوريکه داده هاي يک بلوک را مي توان کاملاً همزمان نوشت. RAID 3 براي يک مدت طولاني، روش متداول در پروفايل هاي خواندن/ نوشتن متوالي همانند data mining و پردازش ويدئويي بود. هارد ديسک هاي جديد، داراي يک کاشه ي بزرگ هستند که قادرند کل داده هاي يک تراک کامل را موقتاً ذخيره نمايند و همچنين نسبت به هارد ديسک هاي قديمي، داراي سرعت چرخش بسيار بالاتري هستند. بواسطه اين ابداعات، در مورد کاربردهاي پروفايل هاي بار متوالي، اکنون ساير سطوح RAID مناسب مي باشند و اين بدان معناست که RAID 3 از اهميت کمتر و کمتري برخوردار مي گردد.
توجه: مقايسه ي سطوح گوناگون RAID در اين مقاله، تنها از جنبه ي تئوري مورد بحث قرار گرفته است. در عمل سازندگان زير سيستم هاي ديسک، همواره گزينه هاي طراحي ذيل را مدنظر دارند:
- تنوع در انتخاب ديسک هاي سخت داخلي
- تکنيک هاي I/O مورد استفاده براي ارتباط با زير سيستم ديسک
- استفاده از چندين کانال I/O
- نوع کنترلر RAID
- اندازه ي حافظه ي کاشه
- خود الگوريتم هاي کاشه
- نوع رفتار در طي بازسازي ديسک
منبع: ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 130
هدف اصلي فناوري RAID، ترکيب نمودن ديسک هاي سخت جداگانه در قالب يک آرايه، بمنظور دستيابي به قدرت عملکرد، قابليت اعتماد و ظرفيتي بيش از يک ديسک بزرگ و گران مي باشد. بعلاوه کل اين آرايه براي سيستم عامل ميزبان، بصورت يک قطعه ي واحد عمل مي کند.
يک زير سيستم ديسک با کنترلر RAID، قابليت هاي بسيار بيشتري را نسبت به يک زير سيستم ديسک JBOD ارائه مي نمايد. RAID در زمانيکه ديسک هاي سخت خيلي گران و نسبت به امروز، از قابليت اعتماد پايين تري برخوردار بودند، ابداع گرديد. RAID سر واژه عبارت "Redundant Array of Independent Disks " مي باشد.
فناوري RAID داراي دو هدف اصلي است: براي افزايش قدرت عملکرد (Performance) از طريق تکنيکي به نام strping؛ و هدف دوم عبارت است از افزايش قدرت تحمل در برابر خرابي (fault-tolerance) از طريق افزونگي (redundancy). تکنيک striping، داده ها را روي چندين هارد ديسک توزيع نموده و بدين شکل، بار را روي سخت افزار بيشتري توزيع مي نمايد. از طريق ترکيب مناسبي از ديسک هاي سخت، امکان افزايش قابل توجهي fault-tolerance و performance، در سيستم امکان پذير مي گردد.
مجموعه ي ديسک هاي سخت تحت فرمان کنترلر RAID، ديسک هاي سخت مجازي ناميده مي شوند. سروري که به يک سيستم RAID متصل مي شود، تنها ديسک سخت مجازي را مي بيند؛ اين حقيقت که کنترلر RAID، داده ها را روي چندين ديسک سخت فيزيکي توزيع مي کند، کاملاً از ديد سرور پنهان است (شکل 1). اين امر تنها براي مدير سيستم، از بيرون قابل مشاهده است.
يک کنترلر RAID، با روش هاي گوناگوني مي تواند داده هايي که يک سرور روي چندين هارد ديسک مي نويسد را توزيع نمايد.
يک فاکتور مشترک براي اغلب سطوح RAID، اين است که آنها علاوه بر داده هاي اصلي، اطلاعات اضافي را ذخيره مي نمايند. اگر يک ديسک سخت دچار آسيب شود، داده هاي آن را مي توان از ساير هارد ديسک هاي مجموعه بازسازي نمود. در صورت وجود سخت افزار مناسب، حتي مي توان در حين کار، هارد ديسک معيوب را با يک مورد جديد جايگزين نمود. سپس کنترلر RAID، داده هاي ديسک تعويض شده را بازسازي مي نمايد. اين پروسه، جداي از کمي کاهش در ميزان عملکرد سيستم، از ديد سرور پنهان است: سرور، بدون وقفه به کار با ديسک سخت مجازي ادامه خواهد داد.
کنترلرهاي مدرن RAID، اين پروسه را بطور اتوماتيک آغاز مي کنند. اين امر مستلزم تعريف ديسک هاي باصطلاح hot spare مي باشد (شکل 2). ديسک هاي hot spare، در حالت نرمال مورد استفاده قرار نمي گيرند. در صورتيکه يک ديسک دچار آسيب شود، کنترلر RAID، بلافاصله شروع به کپي نمودن داده هاي ديسک سالم باقيمانده روي يک ديسک hot spare مي نمايد. بعد از جايگزيني ديسک معيوب، ديسک جديد در زمره ي ديسک هاي hot spare قرار مي گيرد.
بازسازي داده ها از يک ديسک سخت معيوب، همزمان با عمليات خواندن/ نوشتن سرور روي ديسک سخت مجازي صورت مي پذيرد، بطوريکه از نقطه نظر سرور، يک افت کوچک در سطح عملکرد، قابل مشاهده خواهد بود. ديسک هاي سخت مدرن، مجهز به برنامه هاي تشخيصي هستند که خطاهاي خواندن/ نوشتن را به سرور گزارش مي دهند.
يک مزيت جانبي استفاده از چندين ديسک سخت به شکل يک ديسک مجازي، ظرفيت بالاتر ديسک هاي سخت مجازي است. در نتيجه آدرس هاي کمتري در کانال I/O مصرف گرديده و بدينگونه مديريت سرور نيز ساده مي گردد، زيرا ديسک هاي سخت کمتري (نام هاي درايو يا ولوم) مورد استفاده قرار خواهد گرفت.
آشنايي با سطوح مختلف RAID
RAID 0: block by block striping
RAID 0 قدرت عملکرد ديسک مجازي را به شرح ذيل افزايش مي دهد: تک تک هارد ديسک ها، مبادله ي داده ها با کنترلر RAID را بسيار سريعتر از عمليات خواندن/ نوشتن روي ديسک چرخان انجام مي دهند. در شکل (3)، کنترلر RAID، اولين بلوک (بلوک A) را به هارد ديسک ارسال مي کند. اين عمل نوشتن مقداري زمان نياز دارد. در حاليکه اولين ديسک، اولين بلوک را روي ديسک سخت مي نويسد، کنترلر RAID، از قبل شروع به ارسال بلوک دوم (بلوک B) به ديسک سخت دوم و بلوک C به ديسک سخت سوم نموده است. در ضمن، دو هارد ديسک فيزيکي اول، هنوز درگير نوشتن بلوک هاي مربوطه روي فضاي هارد مي باشند. اگر کنترلر RAID، اکنون بلوک E را به اولين ديسک سخت ارسال نمايد، اين ديسک اگر نه کامل، لااقل بخشي از بلوک A را روي ديسک نوشته است.
بعنوان مثال، در سال 2002 از اين طريق، امکان throughput چهار برابر ميسر بود: تک تک هارد ديسک ها قادر به ارائه خروجي حدود 50 MB/s بودند. چهار ديسک فيزيکي، به خروجي کل حدود 4× 200MB/s=50 MB/s نائل مي شوند. امروزه تکنيک هاي I/O مثل SCSI يا Fiber Channel، به خروجي بيش از 200MB/s دست يافته اند. اگر آرايه ي RAID مشتمل بر فقط سه ديسک سخت فيزيکي بود، خروجي کل ديسک هاي سخت، تبديل به عاملي محدود کننده مي گرديد. از سوي ديگر اگر آرايه RAID، شامل پنج ديسک سخت مي بود، کانال I/O فاکتور محدود کننده خواهد بود. بنابراين، با پنج هارد ديسک يا بيشتر، افزايش عملکرد سيستم در صورتي امکان پذير است که ديسک هاي سخت به مسيرهاي I/O متفاوتي متصل شده بطوريکه بتوان بار را نه تنها روي چندين ديسک سخت بلکه روي چندين کانال I/O توزيع نمود.
RAID 0 باعث افزايش قدرت عملکرد ديسک سخت مجازي (و نه fault-tolerance) مي گردد. اگر يک ديسک سخت فيزيکي تخريب گردد، همه داده ها روي ديسک سخت مجازي از بين مي روند. بنابراين، حرف R (براي واژه ي Redundant) در RAID، در مورد RAID 0 صدق نمي کند.
RAID 1: block by block mirroring
در حالت عملکرد نرمال با سطح RAID 0 خالص، افزايش قدرت عملکرد سيستم، تنها در عمليات خواندن امکان پذير است. همچنين هنگام عمليات خوانش داده، بار کل، بين دو ديسک تقسيم مي گردد. اگرچه در مقايسه با RAID 0، اين ميزان بهره قابل اغماض است.
RAID 0 + 1/RAID 10: ترکيبي از تکنيک هاي striping و mirroring
RAID 0+1 و RAID 10، هريک يک سلسله مراتب مجازي سازي دو مرحله اي را ارائه مي نمايند. شکل (5) اصل حاکم بر RAID 0+1 (mirrored stripes) را نشان مي دهد. در اين مثال، هشت ديسک سخت مورد استفاده قرار مي گيرند. کنترلر RAID در ابتدا بوسيله ي RAID 0، هر چهار ديسک را با يکديگر در قالب دو ديسک سخت مجازي که تنها براي کنترلر RAID مشهود است، ترکيب مي کند (عمل striping). در سطح دوم، اين دو ديسک سخت مجازي در قالب يک ديسک سخت مجازي واحد (با استفاده از تکنيک mirroring در RAID 1) با هم ادغام مي گردند. تنها اين ديسک مجازي واحد، براي سرور قابل روئيت مي باشد.
در RAID 10(striped mirrors)، توالي اجراي RAID 0 (striping) و RAID 1 (mirroring) نسبت به RAID 0+1 (mirrored stripes) معکوس مي گردد. شکل (6)، اصل حاکم بر RAID 10 را مبتني بر هشت ديسک سخت فيزيکي را نشان مي دهد. در RAID 10، کنترلر RAID در ابتدا با استفاده از RAID 1 (mirroring)، هارد ديسک هاي فيزيکي را بصورت مزدوج به شکل چهار ديسک سخت مجازي ترکيب مي کند. در مرحله ي دوم، کنترلر RAID، اين چهار ديسک سخت مجازي را از طريق RAID 0 (striping)، بصورت يک ديسک سخت مجازي واحد ترکيب مي نمايد. سرور فقط اين ديسک سخت مجازي واحد را مي بيند.
در هر دو RAID 0+1 و RAID 10، سرور تنها با ديسک سخت واحد به يک ديسک سخت فيزيکي واحد مي باشد را خواهد ديد. اما اکنون يک سؤال مطرح مي شود: کدام يک از دو سطح RAID مورد بحث ( RAID 0+1 يا RAID 10 ) بهتر است؟
اين سؤال با در نظر گرفتن اين واقعيت بايد جواب داده شود که هنگام استفاده از RAID 0 خرابي يک ديسک سخت، منجر به خرابي کل ديسک سخت مجازي مي گردد. در مثال مرتبط با RAID 0+1 (شکل 5)، خرابي يک ديسک سخت فيزيکي بدينگونه معادل با خرابي چهار ديسک سخت فيزيکي مي گردد (شکل 7). اگر يکي از چهار ديسک سخت فيزيکي ديگر معيوب گردد، داده ها از بين مي روند. در اصل گاهي اوقات بازيابي داده ها از ديسک هاي باقيمانده امکان پذير است اما کنترلرهاي RAID موجود در بازار اين کار بخوبي نمي توانند انجام دهند.
از سوي ديگر در مورد RAID 10، بعد از خرابي يک ديسک سخت فيزيکي، خرابي يک ديسک ديگر (به استثناء mirror مربوطه) قابل تحمل مي باشد (شکل 8). بنابراين RAID 10 نسبت به RAID 0+1، داراي fault tolerance بسيار بالاتري است. بعلاوه هزينه ي بازيابي سيستم RAID بعد از خرابي يک ديسک سخت (در مورد RAID 10 نسبت به RAID 0+1) خيلي کمتر است. در RAID 10، تنها يک ديسک سخت فيزيکي مي بايست مجدداً ايجاد گردد.
اگرچه در صورتيکه قدرت عملکرد (Performance) RAID 0+1 با RAID 10 مقايسه شود، مسئله فرق مي کند. در بخشي از مقاله به حالتي اشاره خواهم کرد که در آن استفاده از RAID 0+1 سودمندتر مي باشد.
در مورد دو تکنيک RAID 0+1 و RAID 10، اغلب به لحاظ ذهني اين دو پروسيجر با هم اختلاط گشته و سبب سردرگمي ما مي گردند. بنابراين پاسخ اين سؤال که آيا از RAID 10 استفاده کنيم يا RAID 0+1، هميشه پاسخ واضحي را در پي ندارد. در اينگونه بحث ها، بهتر است بپرسيم آيا ابتدا mirroring رخ دهد و سپس نتيجه ي آن strip گردد يا ابتدا striping انجام گرفته و سپس حاصل کار mirror گردد.
RAID 4 و RAID 5: استفاده از parity به جاي mirroring
از نقطه نظر رياضي، بلوک parity، با کمک اپراتور منطقي XOR محاسبه مي شود. در مثال شکل (9)، براي مثال معادله
P(ABCD)= A XOR B XOR C XOR D اعمال مي گردد. صرفه جويي فضايي ارائه شده توسط RAID 4 و RAID 5 نسبت به RAID 10، بدون هزينه نيست. تغيير يک بلوک داده، مقدار بلوک parity مرتبط را تغيير مي دهد. اين بدان معناست که هر عمل نوشتن روي ديسک سخت مجازي:
1- به عمل نوشتن فيزيکي بلوک داده نياز دارد.
2- به محاسبه مجدد بلوک parity نياز دارد.
3- به عمل نوشتن فيزيکي بلوک parity جديداً محاسبه شده نياز دارد.
اين هزينه اضافي براي عمليات نوشتن در RAID 4 و RAID 5، جريمه ي نوشتن RAID 4 يا RAID 5 ناميده مي شود.
هزينه ي محاسبه مجدد بلوک parity، بواسطه خواص رياضي اپراتور XOR، نسبتاً پايين مي باشد. اگر بلوک A بوسيله ي بلوک ? جايگزين شود و ? تفاوت بين بلوک داده ي جديد و قديم باشد، سپس نتيجه مي گيريم: ?= A XOR ? بلوک parity جديد، اکنون به سادگي از بلوک parity قديمي P و ? قابل محاسبه مي باشد: new P= old P XOR ?
بنابراين، قبل از بازنويسي هارد ديسک توسط کنترلر، بلوک قديمي A بايد خوانده شود، بطوريکه تفاوت ? قابل محاسبه باشد.
شکل (10) سروري را نشان مي دهد که بلوک D را روي ديسک سخت مجازي تغيير مي دهد. کنترلر RAID، بلوک داده ها و بلوک parity مرتبط از ديسک مورد بحث را خوانده و آن را به کاشه منتقل مي کند. سپس کنترلر مذکور، از عمل XOR براي محاسبه تفاوت بين بلوک parity قديمي و جديد استفاده مي کند.
RAID 4 همه ي بلوک هاي parity را روي يک ديسک سخت فيزيکي واحد ذخيره مي کند. براي مثال در شکل (9)، اين بدان معناست که عمليات write براي بلوک هاي داده، روي چهار ديسک سخت فيزيکي توزيع مي گردد. اگرچه ديسک parity، مجبور به محاسبه ي تعداد يکساني عمل نوشتن روي خود مي باشد. بنابراين ديسک parity (در صورت وجود تعداد زيادي عمليات نوشتن) يک گلوگاه RAID 4 محسوب مي شود.
براي مواجهه با اين سد اجرايي، RAID 5 بلوک هاي parity را روي همه ي ديسک هاي سخت توزيع مي نمايد. شکل (11) اين فرايند را نشان مي دهد.
RAID 4 و RAID 5، بلوک هاي داده را روي تعداد زيادي ديسک سخت فيزيکي توزيع مي نمايند. بنابراين عمل خواندن RAID 4 و RAID 5، بخوبي RAID 0 و اغلب به خوبي RAID 10 مي باشد. همچنانکه قبلاً بحث شد، عمل نوشتن RAID 4 و RAID 5، از مشکل write penalty رنج مي برند. در RAID 4 يک مانع اضافي مربوط به ديسک parity نيز وجود دارد. بنابراين RAID 4 عملاً بندرت مورد استفاده قرار مي گيرد و بيشتر از RAID 5 استفاده مي گردد.
parity دوبل: RAID 6
با توجه به ابعاد ظرفيتي ديسک هاي سخت امروزي، کميت هاي بزرگي از داده ها سريعاً مي تواند از دست بروند. علت اصلي اين واقعيت شگفت انگيز آن است که RAID 5 يک درجه ي بالايي از دسترس پذيري را در مورد خرابي فقط يک ديسک فيزيکي سخت (در آن واحد) ارائه مي نمايد، در حاليکه بسياري از مردم تصور مي کنند RAID 5، يک راه حل تداوم کار را براي خرابي چندين ديسک سخت (و نتيجتاً کل آرايه ي RAID 5) فراهم نمايد.
جدول (1)، احتمال خرابي برخي پيکربندي هاي RAID 5 را نشان مي دهد. اين محاسبات، مبتني بر داده هاي فني ديسک سخت نوع Fiber Channel که بطور تجاري در سال 2007 عرضه گرديده، ارائه شده است. براي مثال قابليت سرويس دهي متوسط ديسک، 1400000 ساعت (تقريباً 160 سال) فرض شده است. در اين مدل تنها اندازه ي ديسک هاي سخت تغيير کرده است. چهار ستون اول جدول، تعداد ديسک هاي فيزيکي در يک آرايه RAID، اندازه ي تک تک ديسک ها، ظرفيت خالص RAID و نسبت ظرفيت خالص به ظرفيت اسمي (راندمان ذخيره سازي) را نشان مي دهند.
ستون پنجم، نرخ خطاي بيت (BER) را نشان مي دهد. ديسک هاي سخت Fiber Channel (سال 2007) داراي BER برابر 15- ^10 و ديسک هاي سخت SATA داراي نرخ خطاي بيت 14- ^10 مي باشند. يک نرخ خطاي بيت 15- ^10 بدان معناست که يک سکتور از TB 100 داده در حال خوانش، قابل خواندن نيست و يک BER معادل 14- ^ 10 بدان معناست که يک سکتور از TB 10 داده، قابل خواندن نمي باشد. امروزه ديسک هاي سختي با BERهاي پايينتر موجود هستند. اگرچه پيشرفت هاي صورت گرفته در فناوري ديسک، اصولاً روي ظرفيت ديسک هاي سخت متمرکز شده است و نه روي بهبود نرخ خطاي بيت (BER).
سه ستون آخر، احتمال افت داده در آرايه هاي RAID 5 را نشان مي دهد. اگر يک ديسک سخت در يک آرايه ي RAID 5 دچار آسيب شود، داده هاي ديسک هاي سالم، خوانده مي شوند بطوريکه داده هاي ديسک معيوب، مي تواند بازسازي شود. اين امر مستلزم آن است کميت هاي بزرگي از داده ها بايد خوانده شوند، بدينگونه احتمال خرابي سکتور در طي زمان بازسازي اطلاعات افزايش مي يابد. اين بدان معناست که دو بلوک متعلق به يک گروه parity يکسان، تخريب شده و بنابراين دوباره قابل بازسازي نيست (متوسط زماني بروز افت داده بواسطه BER يا همان MTTDL BER). گاهي اوقات يک ديسک سخت دوم در طي بازسازي داده تخريب مي گردد. اين امر همچنين منجر به از دست رفتن داده ها مي گردد (متوسط زماني بروز افت داده بواسطه خرابي ديسک دوم يا MTTDL DD).
ستون آخر احتمال کل افت داده را در يک آرايه ي RAID 5 (متوسط زماني بروز افت داده يا MTTDL) نشان مي دهد.
خط يک پيکربندي مرجع براي انجام عمل مقايسه را نشان مي دهد: يک آرايه ي RAID 5 با هشت ديسک سخت 512GB در نظر گرفته شده است. خطوط helper در جدول 1 نشان مي دهند که چگونه اندازه هاي ديسک مختلف يا اندازه هاي آرايه اي متفاوت، روي احتمال خرابي اثر مي گذارند. دو بلوک بعدي، احتمال خرابي با 14- ^10 =BER را که در ديسک هاي SATA متداول است (سال 2007) نشان مي دهد. در اين مدل، طول عمر 1400000 ساعت براي اين ديسک ها فرض گرديده است. البته عملاً ديسک هاي SATA داراي طول عمر کمتر و در نتيجه احتمال خرابي بالاتري هستند. بعلاوه هارد ديسک هاي SATA اغلب براي کاربردهاي اداري (5 روز × 8 ساعت) طراحي مي شوند، از اينرو در صورت استفاده مداوم (7 روز × 24 ساعت)، احتمال خرابي باز هم افزايش مي يابد. در نهايت بلوک آخر نشان مي دهد که اگر ديسک هاي سخت داراي 16- ^10=BER باشند، احتمال خرابي تا چه ميزان کاهش مي يابد.
آرايه هاي RAID 5 قادر به تصحيح خرابي هاي دوگانه نيستند. اين جدول يک افزايش واضح در احتمال افت داده ها در آرايه ي RAID 5 را بواسطه افزايش ظرفيت ديسک نشان مي دهد. RAID 6 با افزودن يک ديسک سخت parity ثانوي (بمنظور گسترش RAID 5 و مصرف کمتر فضاي ذخيره سازي نسبت به RAID 10)، مصالحه اي بين RAID 5 و RAID 10 ايجاد مي نمايد. البته از آنجاييکه write penalty مربوط به RAID 5 در مورد RAID 6، دوبار اتفاق مي افتد، RAID 6 داراي عمل نوشتن (write performance) ضعيفي مي باشد.
RAID 2 و RAID 3
همانند RAID 4 و RAID 3، RAID 5 از داده هاي parity استفاده مي کند. RAID 3 داده هاي يک بلوک را بين همه ي ديسک هاي يک سيستم RAID 3 ذخيره مي کند بطوريکه در مقايسه با RAID 4 و RAID 5، در هر عمل خواندن يا نوشتن، همه ي ديسک ها درگير مي شوند. RAID 3 تنها اجازه خواندن و نوشتن بلوک هاي کامل را مي دهد و بدينگونه نوشتن بلوک هاي جداگانه يک گروه parity ممکن نيست. بعلاوه در RAID 3، چرخش تک تک ديسک ها همزمان گشته بطوريکه داده هاي يک بلوک را مي توان کاملاً همزمان نوشت. RAID 3 براي يک مدت طولاني، روش متداول در پروفايل هاي خواندن/ نوشتن متوالي همانند data mining و پردازش ويدئويي بود. هارد ديسک هاي جديد، داراي يک کاشه ي بزرگ هستند که قادرند کل داده هاي يک تراک کامل را موقتاً ذخيره نمايند و همچنين نسبت به هارد ديسک هاي قديمي، داراي سرعت چرخش بسيار بالاتري هستند. بواسطه اين ابداعات، در مورد کاربردهاي پروفايل هاي بار متوالي، اکنون ساير سطوح RAID مناسب مي باشند و اين بدان معناست که RAID 3 از اهميت کمتر و کمتري برخوردار مي گردد.
مقايسه ي سطوح مختلف RAID با يکديگر
توجه: مقايسه ي سطوح گوناگون RAID در اين مقاله، تنها از جنبه ي تئوري مورد بحث قرار گرفته است. در عمل سازندگان زير سيستم هاي ديسک، همواره گزينه هاي طراحي ذيل را مدنظر دارند:
- تنوع در انتخاب ديسک هاي سخت داخلي
- تکنيک هاي I/O مورد استفاده براي ارتباط با زير سيستم ديسک
- استفاده از چندين کانال I/O
- نوع کنترلر RAID
- اندازه ي حافظه ي کاشه
- خود الگوريتم هاي کاشه
- نوع رفتار در طي بازسازي ديسک
منبع: ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 130
مقالات مرتبط
تازه های مقالات
ارسال نظر
در ارسال نظر شما خطایی رخ داده است
کاربر گرامی، ضمن تشکر از شما نظر شما با موفقیت ثبت گردید. و پس از تائید در فهرست نظرات نمایش داده می شود
نام :
ایمیل :
نظرات کاربران
{{Fullname}} {{Creationdate}}
{{Body}}