ISMدانشنامهمجازی سازی

Block-based Storage System

استوریج Block Level چیست؟

یک استوریج Block Level این امکان را برای سرورها فراهم می کند که در سطح بلاک به volume های ساخته شده در دیسک ها دسترسی پیدا کنند. در این محیط، فایل سیستم های تمام Volume ها از روی سرور ساخته می شوند و در سطح بلاک در شبکه قابل دسترس هستند. به راحتی می توان بلاک استوریج ها را به فایل سیستم دلخواه خود مانند NTFS، XFS، EXT4 یا غیره فرمت کرد.

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


بیشتر بدانید:


شبکه ای که در داخل آن از این نوع استوریج استفاده می شود، به شبکه SAN یا Storage Area Network معروف است.

نمونه ای از پرکاربردترین پروتکل های انتقال دیتا در این شبکه عبارتند از FC، FCoE و IP SAN است که IP SAN نیز دارای ۲ پروتکل iSCSI و FCIP می باشد.

 یک Block-Level Storage دارای دو مولفه اصلی کنترولر و استوریج است، که این دو را با جزئیات مورد بررسی قرار می دهیم:

عکس 55

Controller

همانطور که در شکل بالا مشاهده می نمایید، یک کنترولر دارای سه جزء با نام های Cache، Front end و Back end است.

وقتی یک درخواست I/O (خواندن/نوشتن) از سمت سرور ارسال می شود، از قسمت Front End که به شبکه متصل است، دریافت می شود سپس به Cache رفته و در نهایت از طریق Back End که به دیسک های موجود در استوریج متصل است، به بخش دیسک درایوها می رود. در صورتی که درخواست خواندن از سمت سرور ارسال شود و دیتای مربوطه در Cache موجود باشد، دیگر آن درخواست از Back End خارج نمی شود. در استوریج های امروزی معمولا هر سه جز کنترولر در درون یک بورد قرار گرفته اند و به مانند شکل جدا از هم نیستند ولی بطور کلی عملکرد آنها به این ترتیبی که گفته شد، می باشد.

Front End

بخش Front End رابط بین سیستم استوریج و سرور می باشد که خود دارای دو قسمت پورت و کنترولر است. معمولا یک Front end دارای دو کنترولر برای high availability است و هر کنترولر دارای چندین پورت است که امکان اتصال سرورها را به استوریج فراهم می کند. کنترولرها دارای یک منطق پردازش برای اجرای پروتکل های انتقال دیتا مانند FC، iSCSI، FCOE، FICON می باشند و همچنین این کنترولرها دیتا را به سمت Cache و یا از سمت Cache ، از طریق Data bus های خود مسیر دهی می کنند. وقتی Cache دیتایی را برای نوشتن در استوریج دریافت می کند، این کنترولر است که پیغام Acknowledgment به سمت سرور ارسال می کند.

Cache

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

یکی از قابلیت های استوریج های امروزی، امکان prefetch یا همان از پیش واکشی کردن اطلاعات است. نحوه عملکرد آن بدین شکل است که وقتی یک درخواست خواندن اطلاعات از سمت سرور به استوریج می رسد و این درخواست اشاره به یک بلاک مشخصی دارد که مطمئنا درخواست سایر بلاک های آن نیز بصورت پی در پی از سمت سرور خواهد رسید، استوریج این موضوع را تشخیص داده و سایر بلاک های مربوطه را قبل از اینکه درخواست آن برسد، به حافظه Cache منتقل می کند. بدین صورت سرعت دسترسی به سایر بلاک ها بسیار بالاتر رفته و باعث افزایش کارایی سیستم می شود. البته یک محدودیت حداکثری برای این واکشی وجود دارد که از این طریق انجام این فرآیند باعث مشغول شدن کامل I/O های استوریج نشود.

اصطلاح دیگری با نام hit rate وجود دارد که بصورت درصدی بیان می شود. این نرخ به عنوان تعداد درخواست های خواندن یک بلاک با توجه به کل درخواست های خواندن دریافتی توسط استوریج می باشد. به عبارت دیگر هر چه hit rate یک بلاک بالاتر باشد یعنی درخواست واکشی آن زیادتر بوده و در نتیجه استوریج تشخیص می دهد آنها را در حافظه Cache قرار دهد تا سرعت دسترسی به آنها بالاتر رود. بطور کلی زمانی که درخواست خواندن اطلاعات به استوریج می رسد، اگر آن بلاک در حافظه Cache وجود داشته باشد در اصطلاح گفته می شود Read hit و اگر وجود نداشته باشد گفته می شود Read miss که در شکل زیر بطور کامل این روند نشان داده شده است.

عکس 56

وجود حافظه Cache برای عملیات نوشتن نیز مزیت های زیادی دارد که سرعت انجام کار را بسیار بالا می برد. در این رابطه دو نوع عملیات نوشتن وجود دارد. راه اول Write-through cache است که در آن ابتدا دیتا درون کش قرار گرفته و سپس بلافاصله به دیسک های استوریج منتقل می گردد و در پایان یک Acknowledgment به سمت سرور ارسال می شود. در این حالت زمان بیشتری برای انجام عملیات مورد نیاز است امام ریسک از بین رفتن دیتا را بسیار پایین می آورد. در روش دوم که Write-back cache نام دارد، زمانی که دیتا در حافظه Cache قرار گرفت یک Acknowledgment به سمت سرور ارسال می شود و بعدا دیتا برای کپی شدن به سمت دیسک های استوریج ارسال می شود. زمان پاسخگویی در این روش بسیار کمتر از روش قبل می باشد اما در صورت هرگونه خرابی در حافظه Cache تمامی دیتا از دست خواهد رفت.

در استوریج ها گزینه ای وجود دارد در رابطه با حذف مرحله کپی کردن دیتا در حافظه Cache در صورتی که حجم دیتا از مقدار مشخص شده تجاوز نماید. در این صورت دیگر دیتا مستقیم بر روی دیسک های استوریج کپی می گردد و حافظه کش Bypass می شود.

حافظه Cache، حافظه بسیار گرانقیمتی است، به همین دلیل مدیریت نحوه استفاده از آن، از اهمیت بسزایی برخوردار است. الگوریتم های مختلفی در این زمینه وجود دارند که هر کدام با روش خود این حافظه را مدیریت می کنند. نحوه عملکرد دو نمونه از این الگوریتم ها را مورد بررسی قرار می دهیم:

Least Recently Used (LRU):

در این الگوریتم آیتم هایی که اخیرا استفاده شده اند به قسمت های بالایی Cache منتقل می شوند. زمانی که این حافظه به مرز پر شدن برسد، آنهایی که تاریخ آخرین استفاده شان قدیمی تر است، پاک می شوند، به همین دلیل در این الگوریتم نیاز است که یک پارامتر با نام Age bits نیز برای هر آیتم نگه داشته شود، که نشاندهنده زمان آخرین باریست که آن آیتم مورد درخواست قرار گرفته است.

Most Recently Used (MRU):

این الگوریتم برعکس LRU عمل می کند، در واقع آن آیتم هایی که اخیرا استفاده شده اند با این توجیه که احتمالا دیگر در آینده ای نزدیک دیگر درخواست نشوند، از حافظه پاک می شوند.

در مبحث مدیریت حافظه Cache روش علامت گذاری و یا Watermarking نیز بسیار مهم است. وقتی درخواست نوشتن به استوریج می رسد، ابتدا این دیتا در حافظه Cache قرار می گیرد تا زمانی که استوریج درخواست بدهد که آن را به دیسک ها منتقل کند. این درخواست، ممکن است در زمان های مختلفی انجام گردد. مطابق شکل زیر، ۳ علامت گذاری برای حافظه کش تعیین می شود. اندازه LWN یا Low Watermark که میزان حداقل را تعیین می کند. اندازه HWN یا High Watermark که میزان حداکثر را تعیین می کند و در نهایت میزان ۱۰۰% که بدان معنی است که حافظه کامل پر شده است.

حال اگر استوریج از روش Idle flushing استفاده کند، اگر دیتای مربوطه به میزانی بین LWN و HWN برسد، استوریج شروع به کپی کردن دیتا از حافظه کش به دیسک کرده و سپس آنها را از کش پاک می کند.

اگر روش High watermark flushing فعال باشد، زمانی که دیتای مربوطه از مرز HWN گذشت، عملیات کپی با اختصاص منابع بیشتر انجام می شود. و در نهایت در روش Forced flushing زمانی که حافظه کش بصورت صد در صدی پر شد، این عملیات با اولویت بالا شروع به کپی کردن اطلاعات می کند.

عکس 57

با توجه به اینکه حافظه Cache از نوع Volatile memory است و در صورت قطع شدن برق، تمام دیتای داخل آن پاک می شود. به همین دلیل تکنیک هایی برای حل ریسک ایجاد شده طراحی شده است که آنها را مورد بررسی قرار می دهیم:

Cache Mirroring

هر عملیات نوشتنی که بر روی حافظه کش انجام می شود، در یک حافظه دیگر نیز که کاملا مجزا عمل می کند، ذخیره می گردد. اگر حافظه اصلی دچار مشکل شود، حافظه دوم وارد مدار شده و در نتیجه هیچگونه دیتایی از بین نمی رود.

Cache Vaulting

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

Back End

این قسمت رابط بین Cache و دیسک درایوها است که خود شامل دو قسمت کنترولر و پورت می باشد. دیسک ها به پورت ها متصل می شوند و کنترولر وظیفه مسیردهی دیتا را به دیسک ها و یا برعکس بر عهده دارد. همچنین برای high availability در این قسمت دو کنترولر طراحی شده است.

Storage

تمامی دیسک درایوهای موجود در استوریج در این بخش قرار دارند که از طریق پورت های موجود بر روی Back end به کنترولر متصل می شوند. استوریج های مدرن امروزی رنج وسیعی از انواع دیسک ها با سرعت های مختلف را پشتیبانی می کنند، مانند FC، NL و SSD ، و حتی می توانیم ترکیبی از این دیسک ها را در یک استوریج استفاده نماییم. همچنین می توانیم با افزودن محفظه های بیشتر که Enclosure نامیده می شوند، این قسمت را توسعه دهیم. این محفظه ها می توانند با توجه به نیاز برای انواع دیسک ها انتخاب شوند.

در رابطه با این دسته از استوریج ها باید با اصطلاحات DAE و DPE نیز آشنا شویم. 

عبارت DAE که مخفف Disk Array Enclosure است، محفظه هایی هستند که محل مخصوص دیسک های فیزیکی هستند. این محفظه ها در شکل ها و اندازه های مختلفی ارائه می شوند که می بایست با توجه به نیاز سازمان انتخاب شوند. 

عبارت DPE که مخفف Disk Processor Enclosure است، محفظه ای است که کنترولر اصلی استوریج در آن قرار دارد. این شاسی همچنین محل قرارگیری دیسک های Vault نیز می باشد، نرم افزار (OE (Operating Environment که به عنوان سیستم عامل استوریج های block-level شناخته می شود، در دیسک های Vault قرار می گیرند.

در شکل زیر پشت و روی یک رک که در آن یک DPE و دو DAE وجود دارد را مشاهده می نمایید. بالاترین محفظه DAE که ۲ یونیت فضا در رک اشغال می کند، مخصوص دیسک های ۲.۵ اینچی است و محفظه دوم DAE که ۳ یونیت فضا اشغال می کند، مخصوص دیسک های ۳.۵ اینچی است. همچنین در این شکل یک Data mover نیز وجود دارد که در واقع تجهیزاتی هستند که به استوریج های block-level قابلیت file-level را نیز می دهند به عبارت بهتر از آنها به عنوان NAS نیز می توانیم استفاده کنیم. این مفهوم در قسمت استوریج های File-Level بیشتر توضیح داده خواهند شد. 

عکس 58
نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

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

همچنین ببینید
بستن
دکمه بازگشت به بالا