بیت توازن یا Parity و کاربرد آن در RAID چیست؟
در علم کامپیوتر Parity یا بیت افزونه یا بیت توازن تکنیکی است برای بررسی اینکه اطلاعات و دادهها در طول جابجایی از مکانی در حافظه بین کامپیوترها، دچار تغییر و خطا شده است یا خیر.
بیت توازن چگونه کار میکند؟
از آنجا که انتقال اطلاعات از خطا مبری نیست، اطلاعاتی که دریافت میشود در طول انتقال همیشه همانطور که فرستاده میشود نیست. بنابراین یک بیت به عنوان بیت افزونه یا parity به همراه اطلاعات ارسال میشود تا مشخص شود اطلاعات به درستی منتقل شده است یا خیر.
یک بیت اضافه شده به همراه گروهی از بیتها منتقل میشود. این بیت که گاهی check bit هم نامیده میشود فقط برای این استفاده میشود که تشخیص دهیم آیا بیتها با موفقیت ارسال شده اند یا خیر.
Parity زوج یا فرد؟
دو نوع بیت parity وجود دارد:
Parity زوج: در این روش تعداد بیتهایی که مقدار آن یک است محاسبه میشود. اگر تعداد بیتها فرد بود بیت پریتی برابر با یک میشود تا تعداد کل بیتها به همراه بیت پریتی عددی زوج باشد. اما اگر تعداد بیتهای با مقدار یک، زوج بود، بیت parity برابر با صفر خواهد بود تا تعداد کل بیتهای با مقدار یک (شامل بیت پریتی) زوج باقی بماند.
Parity فرد: در این روش نیز اگر تعداد بیتهای با مقدار یک، زوج بود، بیت پریتی یک و در غیر اینصورت بیت پریتی صفر خواهد بود. در این صورت تعداد کل بیتهای با مقدار یک به همراه بیت پریتی مقداری فرد خواهد ماند.
اطلاعات اصلی | Parity زوج | Parity فرد |
00000000 | 0 | 1 |
01011101 | 1 | 0 |
11111111 | 0 | 1 |
00000001 | 1 | 0 |
01010101 | 0 | 1 |
وقتی اطلاعات دریافت شد، تمامی بیت ها به همراه بیت پریتی چک خواهند شد که تعداد آن فرد است یا زوج. اگر خطایی رخ داده باشد سیستم خطا را تشخیص خواهد داد.
پیدا کردن خطا
توضیح بالا نشان میدهد که بیت parity چطور قادر به شناسایی خطاست. برای مثال اگر اطلاعات با پریتی زوج منتقل شده باشند و اطلاعات دریافتی فرد باشد قطعا اطلاعات دریافتی دچار خطا شده است. یعنی یکی از بیتها در طول انتقال عوض شده است. البته روش دریافت خطا از طریق بیت parity عاری از اشتباه نیست. چرا که اگر دو بیت در طول انتقال تغییر کرده باشد این روش قادر به دریافت خطا نیست.
برای کامپیوترهای شخصی این روش مفید است اما برای اطلاعاتی که توسط سیستمهای کامپیوتری بزرگ منتقل میشود و اطلاعات مهم است تا سه بیت برای دریافت خطا با اطلاعات ارسال میشود.
چک کردن خطا بوسیله parity همچنین درارتباط بین دو مودم نیز استفاده میشود در اینجا parity میتواند زوج یا فرد باشد. همچنین انتقال اطلاعات میتواند بدون پریتی منتقل شود و از راههای دیگر تشخیص خطا در انتقال اطلاعات استفاده شود.
پریتی و رید کردن
تکنیک parity در آرایه افزونه دیسکهای مستقل یا RAID نیز استفاده میشود. RAID Controller ها فرمهای پیشرفته تشخیص خطای parity را مانند پریتی افقی یا عمودی به کار میبرند. بعضی از انواع RAID – مثل RAID 4 یا RAID 5 – یک یا دو دیسک را به عنوان دیسک پریتی در نظر میگیرند که میتواند دادهها را بعد از خرابی یکی از دیسکها دوباره بازسازی کند.
به عنوان مثال رید پریتی دوتایی (که با نام RAID 6 هم شناخته میشود) دادهها را برای حداقل چهار دیسک درسطح block-level نوار بندی میکند، مثل RAID 5، اما یک دسته اطلاعات دیگر را به عنوان پریتی دوم میسازد که در طول درایوها پخش میشود.
این روش امکان بازیابی اطلاعات پس از خرابی دو دیسک را فراهم میسازد. هرچند RAID با دو پریتی نیازمند کنترلر پیچیده، هزینه بیشتر به دلیل دو درایو اضافه و سرعت نوشتن پایین تر است.
یک مثال برای چگونگی دریافت و تصحیح خطا
تک parity:
فرض کنید چهار رشته چهار بیتی اطلاعات به شرح زیر است:
برای ساختن پریتی P به سادگی این چهار رشته را در هم XOR میکنیم. جدول منطقی عملگر XOR در زیر آمده است:
X | Y | XOR |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
P در اینجا یک رشته چهاربیتی است و در واقع همان اطلاعات پریتی است. اگر از بین این پنج رشته یکی از بین برود میتوان با استفاده از بقیه اطلاعات آن رشته را بدست آورد. اگر P از بین برورد با همین روش ساخت پریتی میتوان آن را دوباره ساخت.
اما اگر یکی از اطلاعات اصلی (مثلا D1) از بین برود کافی است باقی رشتهها که شامل P نیز میشود با هم XOR کرد:
دو Parity:
برای ساختن پریتی دوم لازم است تا از عملگر Shift برای هر رشته استفاده کرد. تعریف عملگر Shift به شرح زیر است:
استفاده از عملگر Shift یک رشته منحصر بفرد برای هر رشته در اختیار ما قرار میدهد. پریتی دوم به روش زیر محاسبه میشود:
در اینجا در صورتی که یکی از رشتهها از بین برود میتوان به راحتی مثل تصحیح خطا در تک پریتی آن را بازسازی کرد. اما در دو پریتی نشان میدهیم در صورتی که دو رشته نیز ازبین برود میتوان آنها را بازسازی کرد. اگر رشته P و یکی از رشتههای اصلی از بین برود میتوان آن رشته را با استفاده از Q و این واقعیت که XOR هر رشته در خودش برابر صفر است بدست آورد. فرض کنید P و D3 از بین رفته باشد.
میتوان D3 را از این فرمول و در نهایت با عکس کردن عملگر Shift محاسبه کرد:
همچنین اگر اطلاعات دو رشته اصلی از بین رفت میتوان آنها را با استفاده از P و Q و XOR کردن باقی رشتهها در آنها بدست آورد. فرض کنید D0 و D3 از بین رفته باشد. با استفاده از فرمول زیر میتوان به نتیجه رسید:
این یک دو معادله دو مجهولی در سطح بیت است که با حل کردن آن میتوان دو جواب منحصر به فرد برای D0 و D3 بدست آورد.
در صورت نیاز میتوانید بخش فروش هارد سرور ما را مشاهده فرمایید.
در صورت نیاز به خرید سرور و قطعات سرور HP روی لینک های زیر کلیک کنید: