آموزش رایگان Data Storage Network؛ اجزا و مولفههای هارد دیسک
با توجه به اینکه درک کامل عملکرد هارددیسکها و فناوری حالت جامد برای پیادهسازی یک شبکه SAN ضروری است، به همین دلیل باید دانش تئوری کافی درباره عملکرد این تجهیزات داشته باشید. بر همین اساس، در مقالات آتی سعی میکنیم عملکرد مولفههای اصلی هارددیسکها و عملکرد داخلی حافظههای فلش و فناوریهای حالت جامد را بررسی کنیم و شما را با ویژگیهای عملکردی متفاوت هر یک از این رسانهها آشنا کنیم. آشنایی با اجزای هارد دیسک هنگام بررسی قیمت لپ تاپ بسیار کمک کننده است. با فالنیک همراه باشید.
- آناتومی و ساختار دیسک درایو
- هدهای خواندن/نوشتن
- ارتفاع/سطح پرواز هارد
- کرش کردن هدها
- خواندن و نوشتن در صفحات
- هدها و آدرسدهی درایو داخلی
- ترکها و سکتورها در هارد
- بررسی سیستم ضبط دادههای منطقهای (ZDR)
- سیلندرها (Cylinders)
- آدرسدهی بلوک منطقی
- Actuator Assembly
- Spindle
- کنترلکننده (Controller)
بهعنوان یک کارشناس شبکه این نکته را به یاد داشته باشید که هر یک از این فناوریها جایگاه خود را دارند و اینگونه نیست که به سادگی بگوییم حافظه فلش و فناوریهای حالت جامد بهطور کامل جایگزین هارددیسکها خواهند شد. یکی از مهمترین مباحثی که در زمینه ریکاوری هارددیسک وجود دارد و باعث میشود به عنوان یک کارشناس بازیابی کار خود را به درستی انجام دهید، درک دقیق مشخصات فنی و عملکرد هارددیسکها است که در این مقاله با برخی از آنها آشنا میشویم.
آناتومی و ساختار دیسک درایو
در اکثر قریب به اتفاق سرورها، لپتاپها و رایانههای شخصی خانگی، دیسک درایو آخرین مولفه مکانیکی است. بقیه مولفهها بر پایه سیلیکون هستند. دیسک درایو صدها، گاهی اوقات هزاران برابر کندتر از هر مولفه دیگری در یک سرور یا رایانه شخصی هستند. درایو دیسک از چهار جزء مکانیکی اصلی تشکیل شده است:
- صفحه/پلاتر (Platters)
- هدهای خواندن/نوشتن (Read/write heads)
- آکتواتور مونتاژ (Actuator assembly)
- موتور هارد (Spindle motor)
پلاتر یا صفحه مکانی است که دادهها روی آن ذخیره سازی میشوند. صفحه را میتوانید شبیه به دیسک بلوری یا دیویدی تصور کنید که اطلاعات روی آن نوشته میشود.
هر صفحه جنس مقاومی دارد (خم نمیشود)، نازک، محکم، مدور و صاف است و با شتاب زیادی میچرخد. دادهها توسط هدهای خواندن/نوشتن که توسط بازوی محرک کنترل میشوند، روی سطوح صفحات میچرخند و اطلاعات را میخوانند یا مینویسند.
صفحات اغلب از یک زیرلایه شیشهای یا آلومینیومی ساخته میشوند و هر سطح صفحه دارای پوشش مغناطیسی است. هر دو سطح بالا و پایین هر صفحه برای ذخیره دادهها استفاده میشود. وقتی صحبت از دیسک درایوها به میان میآید، معمولاً ظرفیت اولین معیاری است که همگان به آن دقت میکنند، در حالی که معیارهای دیگری مثل سرعت چرخش هارددیسکها و نرخ دسترسی سریع به اطلاعات نیز مطرح است.
از آنجایی که همه صفحات به یک محور مشترک (اسپیندل) متصل هستند در یک دیسک درایو همزمان میچرخند، یعنی همه آنها همزمان شروع به چرخش کرده و از حرکت باز میایستند و همگی با سرعت یکسان میچرخند.
هر گونه زاویه یا انحنا در سطح صفحه میتواند منجر به خرابی هد و از دست رفتن اطلاعات شود. برای جلوگیری از بروز چنین مشکلاتی، هدها در فاصله ایمنی بالای سطح صفحه حرکت میکنند و به فاصله کاملا نزدیکی از صفحه روی آن حرکت میکنند تا بتوانند اطلاعات روی آنرا بخوانند و بنویسند. صاف بودن در اینجا اهمیت زیادی دارد، زیرا به هدها اجازه میدهد در نزدیکترین سطح به صفحات حرکت کنند. سطح صاف صدای کمتری ایجاد میکند و احتمال برخورد مستقیم هد به صفحات را به حداقل میرساند.
هدهای خواندن/نوشتن
هدهای خواندن/نوشتن گاهی اوقات بهعنوان هدهای R/W یا تنها هد (Head) نامیده میشوند. این هدها روی صفحات مختلف حرکت میکنند و دادههای روی صفحات را میخوانند و مینویسند. آنها به مجموعه بازوهایی متصل هستند که توسط سفتافزار موجود در کنترلکننده درایو دیسک کنترل میشوند. در ادامه سیستم عاملها، فرآیند مدیریت حجم و سیستم فایلی و هر آن چیزی که فراتر از عملکرد هدهای R/W هستند را مدیریت میکند.
ارتفاع/سطح پرواز هارد
همانگونه که اشاره شد، هدهای خواندن/نوشتن در فواصل بسیار کمی بالای هر صفحه حرکت میکنند که به آن ارتفاع پرواز (Flying Height) میگویند. ارتفاع پرواز در واحد نانومتر اندازهگیری میشود. ارتفاع پرواز بیشتر دیسک درایوها کمتر از اندازه یک ذره غبار یا عمق اثر انگشت است. برای درک بهتر این موضوع به تصویر زیر دقت کنید تا ببینید چه مهندسی دقیقی در دیسک درایوها انجام شده و چرا هارد دیسکها هنوز هم بهعنوان قابل اطمینانترین رسانه ذخیره ساز شناخته میشوند.
این تنها ارتفاع حرکت هدها نیست که دقتی در ابعاد میکروسکوپی و دقیق دارند، بلکه قرار گرفتن هدها روی دیسک بدون نقص است. این روزها چگالی دادهها روی دیسک بهاندازهای فشرده است که کوچکترین نقص در سطح صفحات باعث میشود تا هدها هنگام خواندن و نوشتن در مکان اشتباهی روی دیسک بنویسند.
کرش کردن هدها
توجه به این نکته حیاتی است که هدهای خواندن/نوشتن هرگز سطح صفحات را لمس نمیکنند. اگر آنها را لمس کنند، باعث بروز مشکل head crash میشوند و باعث میشود اطلاعات درایو قابل خواندن نباشد و مجبور به تعویض درایو باشید.
خواندن و نوشتن در صفحات
همانگونه که هدها روی سطح صفحه حرکت میکنند، این توانایی را دارند که جهتگیری مغناطیسی بیتها در بخشها و مسیرهایی که از روی آنها عبور میکنند را حس کرده و بیت به بیت اطلاعات را به درستی روی دیسک بنویسند. هنگام نوشتن دادهها، هدهای خواندن/نوشتن در بالا یا زیر هر سطح صفحه حرکت میکنند و هنگام عبور از روی آن، سطح را مغناطیسی میکنند.
شارژ مغناطیسی بهگونهای انجام میشود که توصیفکننده یکها و صفرها هستند. هنگام خواندن دادهها از سطوح صفحات، هدهای خواندن/نوشتن بار مغناطیسی نواحی زیر آنها را تشخیص میدهند تا مشخص کنند که آیا یک باینری است یا صفر. در اینجا، عملاً هیچ محدودیتی برای تعداد دفعاتی که میتوانید بخشی از یک دیسک را بخوانید و بنویسید وجود ندارد.
هدها و آدرسدهی درایو داخلی
هر سطح صفحه دارای هدهای خواندن/نوشتن (R/W) مخصوص به خود است. شکل زیر یک درایو با سه صفحه و شش هد R/W را نشان میدهد. هر صفحه دارای دو سطح ضبط – بالا و پایین – و هر سطح دارای هد R/W مخصوص به خود است. در اینجا، سه صفحه وجود دارد که هر کدام با دو سطح ضبط در ارتباط هستند، بهطوری که برای خواندن و نوشتن از روی این سطوح به شش هد R/W نیاز داریم.
مفهوم هدها (Heads) و سطوح ضبط (Recording Surfaces) اهمیت زیادی در طرح آدرسدهی بخش هد سیلندر (CHS) سرنام cylinder-head-sector دارند که توسط دیسک درایوها استفاده میشود. دقت کنید در آزمون Storage+ تاکید زیادی روی این مفاهیم است و بنابراین باید اطلاعات کاملی در این زمینه داشته باشید.
برای آدرسدهی به هر بخش در یک دیسک درایو، میتوانید شماره سیلندر (که مسیر را به ما میدهد)، شماره هد (که به ما میگوید این تراک در کدام سطح ضبط است) و شماره بخش (که به ما میگوید در کدام بخش است) را مشخص کنید. شکل زیر سیلندر 512، هد 0، بخش 33، یا به عبارت دیگر، بخش 33 در مسیر 512 روی سطح صفحه 0 را نشان می دهد.
ترکها و سکتورها در هارد
سطح هر صفحه به مسیرها و بخشهایی تقسیم میشود که فاصلهای میکروسکوپی دارد. شکل زیر یک صفحه نمونه را نشان میدهد که به تراکها و سکتورها (قطاع) تقسیم شده است.
هر سطح صفحه دارای مسیرهای زیادی است که هر کدام بر مبنای یک حلقه متحدالمرکز در سراسر صفحه میچرخند. سپس هر تراک به بخشهایی تقسیم میشود.
سکتور (قطاع) کوچکترین واحد آدرسپذیر یک درایو دیسک است و معمولاً 512 یا 520 بایت اندازه دارد (ما در مثالهای خود عمدتاً با 512 بایت کار خواهیم کرد). بنابراین، اگر میخواهید فقط 256 بایت روی دیسک خود بنویسید، به یک سکتور کامل 512 بایتی نیاز دارید.
اکثر درایوهای رابط پیشرفته متوالی سریال (SATA) سرنام Serial Advanced Technology Attachment دارای اندازه سکتور ثابت 512 بایت هستند، در حالی که درایوهای کانال فیبر (FC) سرنام Fibre Channel و SCSI سرنام Serial Attached SCSI میتوانند به صورت دلخواه در اندازههای مختلف فرمت شوند. این توانایی در فرمتبندی دلخواه سکتورهایی با اندازههای مختلف، میتواند در پیادهسازی فناوریهای یکپارچهسازی دادهها مثل حفاظت از دادههای نقطهبهنقطه (EDP) سرنام end-to-end data protection حائز اهمیت باشد. در EDP که گاهی به عنوان فیلد یکپارچگی داده (T10 DIF) یا حفاظت از بلوک منطقی نامیده میشود، ابردادههای اضافی حفاظت از داده به دادهها اضافه میشوند و در حین انتقال از سیستم فایل میزبان تا رسانه ذخیره سازی با دادهها باقی میمانند.
درایوهای دیسک اینکار را از طریق 8 بایت داده اضافی که به انتهای هر سکتور 512 بایتی اضافه میکنند که اندازه سکتور را در درایوهایی که از EDP پشتیبانی میکنند به 520 بایت افزایش میدهند، انجام میدهند. EDP به درایوها این امکان را میدهد که خطاها را قبل از انتقال داده به درایو یا قبل از برگرداندن دادههای خراب به میزبان/برنامه تشخیص دهند. بخشی از 8 بایت داده اضافه شده توسط EDP، فیلد محافظ است که شامل یک بررسی افزونگی چرخهای (CRC) است که به هر دستگاه در مسیر برنامه به درایو اجازه میدهد یکپارچگی داده را بررسی کند و مطمئن شود که اطلاعات از دست نرفتهاند.
بررسی سیستم ضبط دادههای منطقهای (ZDR)
همانگونه که در شکل بالا مشاهده میکنید، اندازه فیزیکی هر سکتور به سمت مرکز صفحه کوچکتر و کوچکتر میشود. از آنجایی که هر بخش مقدار یکسانی از دادهها را ذخیره میکند (مثلاً 512 بایت)، مسیرهای بیرونی حاوی فضای از دسترفته هستند.
در اینجا باید راهحلی برای مشکل فضا و ظرفیت از دست رفته ابداع شود. برای استفاده بهتر از فضای موجود، اکثر دیسکهای مدرن سیستمی بهنام ضبط دادههای منطقهای (ZDR) را به کار میگیرند. در فناوری فوق، سکتورهای بیشتری بر روی مسیرهای نزدیکتر به لبهها نسبت به مسیرهای داخلی فشرده میشوند و به درایو اجازه میدهند تا دادههای بیشتری را ذخیره کند. شکل زیر منطقه خارجی و داخلی را نشان میدهد.
در دیسکهای ZDR-style و تقریباً هر دیسکی در جهان که نوعی از ZDR را به خدمت میگیرد، هر صفحه به مناطقی تقسیم میشود. تراکهای موجود در یک منطقه، سکتورهای یکسانی در هر مسیر دارند. با این حال، مسیرها در مناطق مختلف تعداد سکتورهای متفاوتی در هر مسیر خواهند داشت.
شکل بالا یک سطح صفحه را نشان میدهد که به دو ناحیه تقسیم شده است: ناحیه بیرونی با 16 سکتور در هر مسیر و ناحیه داخلی با 8 سکتور در هر مسیر. در این مثال، صفحه ما دارای سه مسیر در ناحیه بیرونی و سه مسیر در ناحیه داخلی است که در مجموع دارای 72 سکتور است.
در دنیای واقعی، هر تراک دارای سکتورهای بیشتری است. با این حال، این مثال نشان میدهد که چگونه پیادهسازی تکنیکهای ZDR میتواند بازده فضای ذخیره سازی را بیشتری کند.
در اینجا چند نکته مهم در مورد تراکها و سکتورها وجود دارد که باید اطلاعاتی در مورد آنها داشته باشید:
- هر چه مسیرهای بیرونی یک صفحه حاوی سکتورهای بیشتری هستند، میتوانند دادههای بیشتری را برای هر چرخش دیسک ذخیره و بازیابی کنند.
- اگر بتوان دادهها را در سکتورهای به هم پیوسته در مسیرهای یکسان یا مجاور خواند یا نوشت، عملکرد بهتری نسبت به زمانی که دادهها بهطور تصادفی روی صفحه پراکنده شوند، بهدست میآید. به عنوان مثال، خواندن سکتورهای 0 تا 15 در مسیر بیرونی (که به عنوان خواندن متوالی شناخته میشود) میتواند در یک چرخش صفحه انجام شود.
هر تراک روی دیسک دارای یک نشانگر شاخص است که به هدهای خواندن/نوشتن اجازه میدهد موقعیت دقیق خود را حفظ کنند، درست مانند خطوطی که لاینهای یک بزرگراه را از هم جدا میکنند. بخشهای مجاور با سیگنالهای سروو (Servo) از هم جدا میشوند که به نگه داشتن هدهای R/W در مسیر کمک میکنند.
در حالی که سکتورها در طول تاریخ 512 بایت یا 520 بایت بودهاند، برخی از دیسک درایوهای مدرنتر با اندازههای سکتور بزرگتر فرمت میشوند، مانند استاندارد فرمت پیشرفته (advanced format standard) که بهطور فزایندهای محبوب است، زیرا در فرآیند کد تصحیح خطا (ECC) راهگشا هستند. شکل زیر یک درایو با فرمت پیشرفته 4K را نشان میدهد.
سیلندرها (Cylinders)
سیلندر مجموعهای از ترکها (Tracks) است که مستقیماً بالای یکدیگر روی صفحات جداگانه قرار گرفتهاند. به عنوان مثال، فرض کنید دیسک درایوی دارای چهار پلاتر (صفحه) است که هر کدام دارای دو سطح برای ذخیرهسازی هستند که در مجموع هشت سطح ذخیرهسازی در اختیار ما قرار میدهد. هر سطح ذخیرهسازی دارای تعداد ترکهای یکسان و مکانیزم شمارهگذاری از مسیر 0 (داخلیترین بخش صفحه) به خارجیترین مسیر که برابر با 1023 ترک است، میشود. ترک 0 هر یک از هشت سطح ذخیرهکننده بهعنوان سطح خارجی سطح بعدی شناخته میشود، زیرا ترک 0 در سطح ذخیرهکننده 0 دقیقاً بالای ترک 0 صفحه بعد قرار میگیرد.
این مفهوم در شکل زیر نشان داده شده است. در سمت چپ یک دیسک درایو چهار صفحه با مسیر 0، بیرونیترین مسیر، به شکل برجسته نشان داده شده است. 0های مسیر پلاترها یک استوانه را تشکیل میدهند که میتوانیم آنرا سیلندر 0 بنامیم. در سمت راست تصویر، همان درایو چهار صفحهای را داریم که این بار مسیر 512 روی آن برجسته شده است، در اینجا نیز مسیرها ترکیب میشوند تا سیلندر 512 را تشکیل دهند.
آدرسدهی بلوک منطقی
نحوه ذخیره و بازیابی دادهها از دیسک میتواند بسیار پیچیده باشد و از دیسکی به دیسک دیگر بسته به ویژگیهای دیسک مثل اندازه سکتور (قطاع)، تعداد صفحات، تعداد هدها و مولفههای دیگر متفاوت باشد. برای انتزاعی کردن این پیچیدگیها از دید سیستمعاملها، دیسک درایوها از مفهومی که به عنوان آدرسدهی بلوک منطقی (LBA) سرنام Logical Block Addressing شناخته میشود، استفاده میکنند.
آدرسدهی بلوک منطقی که در کنترلکننده درایو هر دیسک درایو پیادهسازی میشود، ظرفیت دیسک را بر مبنای یک مکانیزم فضای آدرسدهی ساده نشان میدهد. در تصویر زیر پلاتر با دو ناحیه و 72 سکتور در هر پلاتر نشان داده شده است.
فرض کنید درایو ما دارای چهار صفحه است که در مجموع هشت سطح ذخیرهسازی(هشت هدR/W) به ما میدهد. مکانهای دیسک درایو ما به صورت داخلی در دیسک توسط یک مکانیزم آدرسدهی CHS به شرح زیر آدرسدهی میشوند:
- سیلندر 0 هد 0 سکتور 6
- سیلندر 3 هد 6 سکتور 2
- سیلندر 2 هد 0 سکتور 70
همانگونه که مشاهده میکنید، این مدل آدرسدهی پیچیده است و همچنین امکان استفاده از آن برای برقراری ارتباط مستقیم با هاردیسکها وجود ندارد. بنابراین باید به یک مکانیزم واسط برای سادهسازی دستیابی به سیلندها و سکتورها استفاده کرد. آدرسدهی LBA برای پاسخگویی به این نیاز پدید آمد. نقشه LBA که توسط کنترلکننده دیسک نمایش داده میشود، ممکن است به سادگی محدودهای از 72 بلوک منطقی را نشان دهد که به عنوان LBA0 تا LBA71 نشان داده میشود که کاملا ایدهآل است، زیرا سیستمعاملهای و فایلسیستمها به آدرسهای LBA برای خواندن و نوشتن مراجعه میکنند و دیگر نیازی به درک طرحبندی جزییات دیسک درایو و کنترلکننده نصب شده روی دیسک ندارند.
در نگاه اول مکانیزمی که LBA از آن استفاده میکند چندان زیاد یا پیچیده به نظر نمیرسد، اما در نظر بگیرید که دیسک درایوهای مدرن دارای صفحات مختلفی هستند که هر کدام دارای دو سطح ذخیرهسازی اطلاعات هستند و هر سطح دارای هد خواندن/نوشتن خاص خود است. اکنون متوجه میشوید که چگونه همه چیز میتوانند به سرعت پیچیده شوند.
یکی از مزیتهای اصلی معماری LBA که توسط کنترلکنندههای دیسک هوشمند پیادهسازی میشود این است که اجازه میدهد بر مبنای یک رویکرد استانداد ساده درایورهای مخصوص دیسکها را برای سیستم عامل آماده کرد. آخرین باری که مجبور شدید یک درایور سفارشی برای دیسک درایو تازهای که در سیستم نصب کردید را به کار ببرید را به خاطر میآورید؟ پاسختان منفی است، زیرا شما هنگامی که هارددیسک را به سیستم وصل میکنید بهطور خودکار توسط سیستمعامل شناخته میشود، زیرا هارددیسکها از یک معماری مرجع که برای سیستمعاملها شناخته شده است.
سیستم عامل/درایور به سادگی میتواند درخواستهای خواندن/نوشتن، مشخص کردن آدرسهای LBA را برای دیسک صادر کند و کنترلکننده این دستورات و مکانها را به دستورات جستجوی پیشرفته (Seek)، جستجوی عادی، خواندن و نوشتن اولیه و مکانیابی مبتنی بر CHS تبدیل کند.
Actuator Assembly
مولفه فیزیکی مهم بعدی هارددیسکها، آکتواتور است. هر دیسک درایو دارای یک Actuator Assembly است که وظیفه آن هدایت فیزیکی هدهای R/W به نقطه درست است. نقطهای که سیستم عامل و کنترل کننده دیسک درایو به آن اشاره دارند. هنگامیکه میگوییم هدها جابهجا میشوند، در واقع به حرکت آنها اشاره داریم. هدهای R/W با سرعت بسیار زیادی روی سطح پلاتر به جلو و عقب میچرخند. از آنجایی که یک دیسک درایو تنها یک آکتواتور دارد، همه هدها به صورت هماهنگ حرکت میکنند.
Spindle
هر پلاتر در دیسک درایو به اسپیندل متصل است. وظیفه اسپیندل و موتور اسپیندل، چرخاندن دیسکها (پلاترها) است. شکل زیر این موضوع را نشان میدهد.
هر دیسک درایو فقط یک اسپیندل دارد. جالب آنکه سرعت چرخش موتور اسپیندل صفحات نیز بهطرز شگفتانگیزی سریع است. مرکز هر پلاتر به اسپیندل متصل است و وقتی اسپیندل (دوک) میچرخد، پلاترها نیز همین کار را میکنند. از آنجایی که یک اسپیندل وجود دارد و همه صفحات به آن متصل میشوند، همه صفحات بهطور همزمان شروع به چرخش میکنند و زمانی که اسپیندل (دوک) شروع به کار میکند و متوقف میشود، پلاترها نیز از حرکت بازایستاده یا به کار ادامه میدهند. بنابراین هر پلاتر با سرعت یکسانی میچرخد و با واحد دور در دقیقه (RPM) شناخته میشود. عوامل مختلفی که تا این مرحله بیان شده نقش زیادی در تعیین قیمت لپ تاپ ، قیمت کامپیوتر و یا قیمت ورک استیشن خواهند داشت. بررسی آنها از این جهت نیز اهمیت دارد.
کنترلکننده (Controller)
هر دیسک درایو دارای کنترلر مخصوص به خود است. این کنترلر مانند یک مینی کامپیوتر برای درایو دیسک کار میکند که دارای پردازنده و حافظه است و سیستم عاملی را اجرا میکند که برای کارکرد درایو حیاتی است.
این کنترلکننده است که پیچیدگیهای عملکرد فیزیکی دیسک را پنهان میکند و طرحبندی دادههای درایو را به شکل سادهتر LBA که تا سطوح بالاتر مانند بایوی و سیستمعامل انتقال پیدا میکنند انتزاعی میکند. سطوح بالاتر مانند سیستم عامل میتوانند دستورات سادهای مانند خواندن و نوشتن را برای کنترلکننده صادر کنند که سپس آنها را به عملیات پیچیدهتر و تخصصی دیسک درایو ترجمه کند. در اینجا سفتافزار (Firmware) کنترلکننده سلامت درایو را کنترل می کند، مشکلات احتمالی را گزارش میکند و نقشه بلوکهای بد (بدسکتورها) را حفظ میکند.
نقشه بلوک بد (Bad Block Map) اشاره به مجموعهای از بخشهای پنهان دارد که هرگز در دسترس سیستمعامل قرار نمیگیرند. این سکتورهای مخفی در اصطلاح سکتورهای خرابی هستند که نباید هیچگاه اطلاعاتی روی آنها نوشته شود. بنابراین این وظیفه سفتافزار درایو است که مانع انجام اینکار شود. هر درایو دارای تعدادی بدسکتور است که باید از دید سیستمعاملها مخفی بمانند.
در شماره آینده مبحث فوق را ادامه میدهیم.