سیستم فایل GFS- قسمت اول

Facebooktwittergoogle_pluspinterestlinkedinmail
Print Friendly, PDF & Email

خلاصه

GFS برای سیستم های فایل توزیع شده بسیاربزرگ طراحی و پیاده سازی شده است. GFS تحمل خطای بالایی را ارائه می کند هرچندکه روی سخت افزارهای ارزان پیاده سازی می شود و عملکرد بسیار بالایی به مشتریان خود می دهد. GFS بر اساس تجربه های سیستم فایل های گذشته گوگل و همچنین در نظر گرفتن محیط تکنولوژیکی و بار پردازشی برنامه های بزرگ طراحی شده است.

این سیستم فایل با موفقیت نیازهای ذخیره سازی ما را برطرف کرده است. GFS بطور گسترده توسط گوگل بعنوان پلتفرم ذخیره سازی برای تولید و پردازش داده های مورد استفاده سرویس های ما همچنین در زمینه تحقیقات و توسعه که نیازمند داده های بسیار بزرگ هستند مورد استفاده قرار گرفته است. بزرگترین کلاستر داده ای ما دارای صدها ترابایت فضای ذخیره سازی بر روی هزاران دیسک موجود در هزاران ماشین می باشد که هم اکنون در حال سرویس دادن به صدها مشتری می باشد.

مقدمه

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

فایل ها دارای حجم های بسیار بالایی هستند. فایل های چند گیگابایتی در این سیستم ها عادی هستند. هرفایل معمولا بطور معمول شامل ابجکت های مختلف از نرم افزارها مثل صفحات وب و غیره می باشد. وقتیکه با فایل های با حجم بالا بطور مداوم درحال رشد هستند، کار درستی نیست که به فایل های چند کیلوبایتی تقسیم بندی شوند تا با آن ها کار کنیم. هرچند که ماشین های با چنین قابلیتی هم داشته باشیم. بنابراین بایستی بر روی اندازه بلاک های داده ای و اعمال I/O تصمیمات جدی اتخاذ شود.

اکثر فایل ها با اضافه شدن به محتوای قبلی سروکار دارند و کمتر با جایگزینی روبرو می شوند. پس از یکبار نوشتن در فایل، فایل فقط تخت خواندن قرار می گیرد. برخی از فایل ها نتیجه پردازش های انجام شده توسط یک ماشین هستند و فقط نیاز به  خوانده شدن دارند. برخی دیگر داده های در جریان هستند که بطور مداوم توسط نرم افزارها درحال تولید هستند و بقیه هم داده های بایگانی شده هستند. در نتیجه تمرکز اصلی این سیستم فایل بر روی Append کردن به فایل ها می باشد.

طراحی نرم افزارها بر اساس API سیستم فایل GFS  باعث بالارفتن عملکرد کلی سیستم و قابلیت انعطاف سیستم فایل می شود. برای مثال سیستم فایل GFS طوری طراحی شده است تا فشار زیادی بر روی نرم افزارها اعمال نکند. همچنین امکان Append کردن به یک فایل توسط چند کاربر بطور همزمان نیز درنظر گرفته شده است. چندین کلاستر GFS برای اهداف مختلف درنظر گرفته شده اند. بزرگترین آن ها شامل 1000 گره ذخیره سازی بالغ بر 300 ترابایت دیسک ذخیره سازی بطور سنگین توسط صدها کاربر از ماشین های مختلف با فاصله های متفاوت تحت دسترسی هستند می باشد.

Design Overview

Assumptions

در طراحی یک سیستم فایل بر اساس نیازمندی های خود، از فرضیات بهره می بریم که به ما چالش ها و موقعیت ها را نشان داد. در بالا به تعدادی از شواهد خود اشاره کردیم ولی در زیر به بیان جزئیات بیشتر می پردازیم.

  • این سیستم از تعداد زیادی سخت افزار ارزان قیمت که امکان از کار افتادن آن ها وجود دارد تشکیل شده است. این سیستم باید بطور مداوم تحت مرافقبت و نظارت بر مولفه های خود باشد تا در مواقع بروز مشکل آن را شناسایی و ترمیم کند تا به حالت عادی خود برگردد.
  • سیستم به ذخیره تعداد نسبتا کمی فایل بسیار بزرگ می پردازد. چیزی که ما برای آن درنظر گرفته ایم شامل چندین میلیون فایل هرکدام به اندازه حداکثر 100 مگابایت می باشد. فایل های چندگیگی هم ممکن است وجود داشته باشند که باید بصورت بهینه مدیریت شوند. فایل های کوچک نیز باید پشتیبانی شوند اما نیازی به بهینه سازی آن ها نیست.
  • کارهای اصلی سیستم بطور اصلی شامل دو نوع خواندن می باشند. خواندن جریانی بزرگ از فایل ها و خوندان تصادفی فایل های کوچک. در خواندن های بزرگ معمولا خواندن های چندصد کیلوبایتی تا نهایتا 1 مگابایتی صورت می گیرد. عملیات های پیوسته درخواست شده از سمت یک کاربر معمولا در رابطه با خواندن متوالی از یک منطقه از فایل ما می باشد. خواندن تصادفی هم معمولا چند کیلوبایت از فایل ها را با بک آفست مشخص می خواند. نرم افزارهایی که عملکرد سیستم برایشان مهم است معمولا خواندن های کوچک خود را بصورت دسته ای انجام می دهند و پس از مرتب سازی به سرور ارسال می کنند و در هر بار خواندن نیازمند بازگشت مجدد به فایل ندارند.
  • از دیگر کارهای اصلی در این سیستم ها وجود write های بسیار بزرگ بصورت سریال در انتهای فایل ها می باشد. سایزهای عملیات در نوشتن نیز هم اندازه با حالت read می باشد. پس از نوشتن فایل ها بصورت تصادفی و خیلی کم مورد خواندن تغییر می گیرند. Write های کوچک در سیستم فایل قابل قبول است اما بهینه نیست.
  • سیستم باید روش های مدیریتی مناسبی بر روی فایل هایی که بطور همزمان توسط چند کاربر در حال تغییر هستند پیاده سازی کند. اکثر فایل های ما برای درخواست های فروشنده مشتری می باشند. صدها تولید کننده که هرکدام بر روی یک ماشین اجرا می شوند بطور همزمان به فایل ها اضافه می کنند. وجود atomicity به همراه کمترین سربار همزمان  یک ویژگی ضروری است.
  • پهنای باند تقویت شده مهمتر از تاخیر کوتاه است. اکثر برنامه های ما نیازمند پردازش داده ها بصورت bulk با سرعت بالاتر هستند درصورتیکه تعداد کمی نیازمند زمان پاسخ سریع برای یک read/write می باشند.

Interface

GFS یک رابط سیستم فایل ساده و کاربردی ارائه می دهد که از یک استاندارد مثل Posix استفاده نمی کند. فایل ها بصورت سلسله مراتبی در دایرکتوری ها ذخیره شده اند و از طریق نام مسیر ها شناسایی می شوند. GFS از عملیات های create, delete, open, close, read, write پستیبانی می کند.

بعلاوه GFS از Snapshot و record append نیز پستیبانی می کند. Snapshot ها یک کپی از فایل یا درخت دایرکتوری ها ایجاد می کند (با هزینه کم). Record append به کاربران اجازه اضافه کردن همزمان اطلاعات به انتهای یک فایل را می دهد. این ویژگی برای پیاده سازی نتایج بصورت multi-way merge مفید می باشد که در آن کاربران متعددی می توانند بدون مواجهه با قفل بودن منبع داده، اضافات خود را وارد کنند. ما این نوع فایل ها را از بهترین نوع فایل برای گسترش نرم افزارهای توزیع شده بزرگ می دانیم. درباره snapshot و record append در ادامه توضیح می دهیم.

این مطلب ادامه دارد. در پست های بعدی ادامه این مطلب را پیگیری کنید.

مطالعه قسمت اول مطلب سیستم فایل GFS

مطالعه قسمت دوم مطلب سیستم فایل GFS

شما احتمالا این مطالب را نیز دوست دارید...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *