بررسی روند خرابی بیش از صد هزار هارددیسک در گوگل و نتایج آن

مقدمه

همه ما هر روز با هارددیسک سر و کار داریم. برای بیشتر ما، هارد دیسک سیستم عامل، اطلاعات شخصی و کاری و اطلاعات کاری مجموعه های ما را در خود نگاه می دارد. حدس زده می شود حدود 90 درصد اطلاعات دنیا روی مدیاهای مغناطیسی، که بخش عمده ای از آن هارددیسک ها هستند، نگهداری می شود.

اما با این وجود اطلاعات کمی در مورد هارد دیسک ها وجود دارد. به عنوان مثال واقعا یک هارددیسک چقدر عمر می کند؟ یا اینکه عمر آن وابسته به چه پارامترهایی است؟ آیا زیاد استفاده کردن از هارد باعث کاهش عمر آن می شود؟ یا اینکه باید هارد را در محیط خنکی نگه داشت تا عمر بیشتری داشته باشد؟ یا اینکه سازنده با کیفیت ترین هارددیسک ها چه شرکتی است؟

بیشتر اطلاعاتی که ما در مورد هارد می دانیم، اطلاعاتی است که سازنده ها در مورد آن می دهند، و بصورت اغراق آمیزی در مورد آن مبالغه شده است. یک دلیل این مبالغه این است که بیشتر اعدادی که توسط سازنده ها ارائه می شود ناشی از تست های تسریع شده است (یعنی اینکه به جای اینکه عمر یک هارددیسک در عمل طی پنج سال تست شود، در آزمایشگاه طی پنج ساعت ولی با تغییر شرایط محیطی تست می شود)، که نمی تواند عمر واقعی هارد را نشان دهد. یک منبع دیگر این اطلاعات هم دیتابیس این سازندگان از یونیت های مرجوعی آنهاست که در مورد آنها هم مشخص نیست هارد واقعا در چه شرایطی کار کرده است که دچار مشکل شده است.

هاردها مجموعه های تکنولوژی پیچیده ای هستند که به ندرت دچار مشکل می شوند، ولی وقتی دچار مشکل می شوند دلائل این مشکل می تواند بسیار زیاد باشد، بنابراین برای پی بردن به پارامترهای واقعی که روی یک هارد تاثیر می گذارد، باید هاردهای واقعی را در عمل زیر نظر گرفت، و این نیاز به یک کار آماری دقیق دارد. اما متاسفانه ما در سازمان های خود، با وجود تعداد هاردهای زیادی که مصرف می کنیم، هیچ آماری از اینکه متوسط عمر یک هارد چقدر است، یا اینکه هاردهای سازنده های مختلف با چه کیفیتی کار می کنند نداریم، چون اصولا ما تجربه و همت کافی برای کار آماری نداریم، اما جای نگرانی نیست، چون مثل بقیه موارد، بقیه دنیا به فکر این مشکل بوده اند!
یکی از کارهای آماری خیلی خوب که در زمینه هارددیسک ها انجام شده است، تحقیقی از گوگل به نام Failure Trends in a Large Disk Drive Population است که در سال 2007 منتشر شده است و در آن عملکرد بیش از صد هزار هارددیسک زیر نظر قرار گرفته شده و تجزیه و تحلیل شده است.

پایه تحقیق گوگل

در این تحقیق محققان یک جمعیت آماری بیش از صد هزار دیسک را در یک دوره زمانی نه ماهه در نظر گرفته اند که هر چند دقیقه یکبار پارامترهای مختلف آن، مثل دمای کاری، مقدار فعالیت، پارامترهای S.M.A.R.T آن ها را ذخیره می کند. این سیستم بخشی از System Health infrastructure است که یک سیستم نرم افزاری distributed است که تعداد زیادی از پارامترهای سرورهای گوگل را در خود نگه می دارد. این سیستم یک تعداد data collector نرم افزاری دارد که پارامترهای مختلف هزاران سرور را در یک دیتابیس BigTable (نوعی دیتابیس که خود گوگل برای کار خود توسعه داده است) نگهداری می کنند و سپس یکسری جاب Map/Reduce این اطلاعات را تجزیه تحلیل کرده و نمودارهای آماری مورد نظر را ارائه می کنند. این data collector ها در واقع یک daemon نرم افزاری سبک است که روی خود سرور سوار است و پارامترهای سرور را گزارش می کند. اطلاعات ذخیره شده در دیتابیس BigTable ذخیره می شوند و با یکسری جاب که به زبان برنامه نویسی Sawzall (یکی از زبان های برنامه نویسی داخلی خود گوگل) نوشته شده اند روی آنها کار می شود. خود BigTable روی فایل سیستم GFS (Google File System) (فایل سیستم distributed گوگل که خودش آنرا نوشته است) سوار است.

این هارددیسک ها با سرعتهای 5400 و 7200 rpm و همه بعد از سال 2001 بوده اند. نکته جالبی که این گزارش به آن اشاره می کند، این است که همه این دیسک ها قبل از اینکه در محیط کاری قرار بگیرند، یک تست short burn in می شوند، که در واقعی نوعی stress test است که دیسک در آن به شدت زیر بار خواندن و نوشتن قرار می گیرد که در این مرحله خیلی خطاهایی که ممکن است در قطعات هارددیسک، یا مراحل ساخت و مونتاژ آن وجود داشته باشد ظاهر می شوند.

نتایج تحقیق گوگل

این تحقیق نتایج جالبی داشته است که خیلی از فرضیات ذهنی ما را در هم می ریزد. به عنوان مثال، دراین تحقیق مشخص شده است که کارکردن هارد دیسک در دمای بالا باعث زودتر خراب شدن آن نمی شود. یا اینکه بیشتر کارکردن دیسک باعث زودتر خراب شدن آن نمی شود.

یکی از پارامترهایی که این گزارش تعریف می کند، Annualized Failure Rates است که نشان دهنده مقدار خرابی دیسک در سال است. سپس گزارش مقدار AFR بر اساس سن دیسک را توضیح می دهد. این گزارش نشان می دهد آمار خرابی دیسک در سه ماهگی بیشتر از آمار خرابی آن در یک سالگی است. به عبارت دیگر اگر درایوی دوره شش ماهه اول را بدون مشکل طی کند، احتمال خرابی آن در طول دوره عمرش خیلی پایین تر می آید. (این شبیه پدیده infant mortality phenomena در نوزاد انسان است که اگر 6 ماه اول را به سلامت طی کند، احتمال مرگ او بعد از آن خیلی کم می شود)

علاوه بر این AFR در دیسک های با عمر یک سال 2 درصد، ولی در دیسک های با عمر دو و سه سال حدود 8 درصد است، یعنی احتمال خرابی در دیسک های با عمر دو و سه سال خیلی بیشتر است. (البته این بستگی به مدل و سازنده هم دارد، چون گوگل هر سری یکسری مدل جدید از vendor های مختلف دیسک های خود را انتخاب می کند)
گزارش گوگل مشخص می کند که مقدار خرابی به مدل و سازنده دیسک وابسته است، اما متاسفانه، شاید به دلائل تجاری، مشخص نمی کند که این مقدار برای سازندگان هارددیسک مختلف چقدر است.

نکته جالب دیگر این است که این گزارش نشان می دهد بر خلاف تصور متداول، بین درایوهایی که به شدت زیر بار هستند و بین درایوهایی که کمتر زیر بار هستند تفاوت زیادی در مقدار خرابی وجود ندارد. به عبارت دیگر مقدار خرابی به خاطر کار بیشتر، فقط روی درایوهایی که عمر آنها زیر شش ماه، یا بالای پنج سال (خیلی پیر یا خیلی جوان) هستند تاثیر میگذارد، و در غیر اینصورت زیر بار بودن درایو باعث خرابی زودتر آن نمی شود.

نکته بسیار مهم دیگری که این گزارش نشان میدهد، در مورد تاثیر دما روی دیسک ها است. در اینجا هم بر خلاف تصور متداول، مشخص شده است که وقتی دمای هارددیسک پایین آورده می شود، مقدار خرابی آن بالاتر می رود! به عبارت دیگر، وقتی دیسک در محدوده دمایی 35 تا 45 درجه سانتیگراد کار میکند، کمترین مقدار خرابی را دارد و با کم تر کردن دما، تعداد خرابی ها به شدت بالا می رود. اگر دما از این مقدار به 50 درجه هم برسد تعداد خرابی بیشتر می شود، اما بازهم این مقدار کمتر از خرابی ناشی از کم کردن دما است.
در مورد پارامترهایی هم که سیستم smart دیسک گزارش میکند، تحقیق گوگل نشان می دهد که درایوهایی که سیستم اسمارت آنها Scan Errors را ثبت کرده است، ده برابر بیشتر از درایوهایی که این خطا را نداده اند احتمال fail شدن دارند. به عبارت دیگر وقتی اسمارت خطای scan errors را گزارش می کند، سی درصد این درایو احتمالا در یک فاصله 8 ماهه بعد از ثبت اولین خطا fail می شوند. به عبارت دیگر، با دیده شدن اولین خطای scan errors در اسمارت هارد احتمال از کار افتادن آن در فاصله 60 روز چهل برابر بیشتر از درایوهایی است که این خطا را ندارند.

یک پارامتر دیگر هم Reallocation counts است که نشان می دهد درایو هنگام خواندن اطلاعات با خطا روبرو شده و آنها را به یک سکتور دیگر جابجا کرده است. این پارامتر هم در صورت وجود نشان میدهد که احتمال خراب شدن هارد بسیار بالا است. با دیده شدن اولین ReAllocation Counts، احتمال خراب شدن درایو در یک فاصله 60 روزه 14 برابر بیشتر از درایوی است که این خطا را ندارد.
پارامتر بعدی offline ReAllocations است. این بیشتر وابسته به مدل دیسک است، اما وجود این پارامتر هم می تواند نشان دهنده احتمال خرابی بالاتر دیسک باشد. پارامتر Probational counts هم نقش مشابهی در احتمال خرابی دیسک دارد. در هر دو مورد، اولین وقوع مشکل، به معنی احتمال خرابی بیشتر دیسک بین 16 تا 21 برابر در 60 روز آینده است.

گزارش گوگل نشان می دهد ظاهرا پارامترهای Seek Error, CRC Errors و Power Cycles, Calibration Retries, Spin Retries, Power-on hours, Vibration چندان به پیش بینی خراب شدن هارد کمک نمی کنند.
در مورد قابلیت های پیش بینی کننده smart گزارش گوگل در مجموع نتیجه گیری می کند که نمی توان بر اساس آن یک predictive model ایجاد کرد. در صورتیکه می شد یک مدل پیش بینی خرابی بر اساس گزارش های اسمارت تهیه کرد (چیزی که یکی از اهداف طراحی و گنجاندن اسمارت در هارددیسک ها بوده است)، می شد در هزینه های نگهداری صرفه جویی زیادی کرد. علاوه بر این مشخص شده 56 درصد از درایوهای fail شده در گوگل، هیچ نشانه ای از 4 پارامتر مهم گفته شده اسمارت (scan errors, reallocation count, offline reallocation, probational count) نداشته اند، و بنابراین حتی اگر مدلی بر اساس اسمارت هم تهیه شود بیش از 50 درصد دقت پیش بینی خرابی نخواهد داشت.

نتیجه گیری

لطفا تفکرات منسوخ شده قبلی خود را دور بریزید!!! غولی مانند گوگل از دیسک های consumer (و نه دیسک های گران قیمت enterprise) استفاده می کند، آنها را در 40 درجه گرما نگه می دارد و بصورت غیر معقول آنها را خنک نمی کند، بعد از یک سال هم نمی گوید چون دیسک ها زیاد زیر بار بوده اند عمر دیسک ها تمام شد! ما نیاز داریم که پایه دانش استورج خود را بصورت علمی و عملی با تغییرات روز هماهنگ کنیم، و علاوه بر این باید از الان شروع به ساختن یک دیتابیس از هارددیسک های داخل مجموعه های خود کنیم.
خواندن اصل مقاله را به همه دوستان توصیه میکنم.

Google Failure Trends in a Large Disk Drive Population