FAST VP در ذخیره سازی Unity: چگونه کار می کند

امروز در مورد یک فناوری جالب پیاده سازی شده در سیستم های ذخیره سازی Unity/Unity XT - FAST VP صحبت خواهیم کرد. اگر این اولین باری است که درباره Unity می شنوید، می توانید با استفاده از پیوند انتهای مقاله، ویژگی های سیستم را بررسی کنید. من بیش از یک سال روی FAST VP در تیم پروژه Dell EMC کار کردم. امروز می خواهم در مورد این فناوری با جزئیات بیشتری صحبت کنم و برخی از جزئیات اجرای آن را فاش کنم. البته فقط آنهایی که اجازه آشکار شدن دارند. اگر به مسائل مربوط به ذخیره سازی داده های کارآمد علاقه مند هستید یا به سادگی اسناد را به طور کامل درک نکرده اید، این مقاله مطمئنا مفید و جالب خواهد بود.

FAST VP در ذخیره سازی Unity: چگونه کار می کند

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

طبقه بندی ذخیره سازی. اهداف و اهداف FAST VP

FAST VP مخفف عبارت Fully Automated Storage Tiering for Virtual Pool است. کمی سخت است؟ مشکلی نیست، ما اکنون آن را مشخص می کنیم. Tiering روشی برای سازماندهی ذخیره سازی داده ها است که در آن چندین سطح (سطح) وجود دارد که این داده ها در آن ذخیره می شوند. هر کدام ویژگی های خاص خود را دارند. مهم ترین: عملکرد، حجم و قیمت ذخیره سازی یک واحد اطلاعات. البته بین آنها رابطه وجود دارد.

یکی از ویژگی های مهم ردیف بندی این است که دسترسی به داده ها بدون توجه به سطح ذخیره سازی که در حال حاضر در آن قرار دارد، به طور یکسان ارائه می شود و اندازه استخر برابر با مجموع اندازه منابع موجود در آن است. این همان جایی است که تفاوت‌های حافظه نهان نهفته است: اندازه حافظه پنهان به حجم کل منبع اضافه نمی‌شود (در این مورد مخزن)، و داده‌های کش بخشی از داده‌های رسانه اصلی را کپی می‌کنند (یا اگر داده های کش هنوز نوشته نشده است). همچنین توزیع داده ها بر اساس سطوح از دید کاربر پنهان است. به این معنا که او دقیقاً نمی بیند که چه داده هایی در هر سطح قرار دارند، اگرچه می تواند به طور غیرمستقیم با تنظیم خط مشی ها (در ادامه در مورد آنها بیشتر) تأثیر بگذارد.

حال بیایید ویژگی های پیاده سازی ردیف بندی ذخیره سازی در یونیتی را بررسی کنیم. یونیتی دارای 3 سطح یا ردیف است:

  • عملکرد فوق العاده (SSD)
  • عملکرد (SAS HDD 10k/15k RPM)
  • ظرفیت (NL-SAS HDD 7200 RPM)

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

رسانه های ذخیره سازی از همان سطح و اندازه یکسان در یک آرایه RAID ترکیب می شوند و یک گروه RAID را تشکیل می دهند (گروه RAID، به اختصار RG). شما می توانید در مورد سطوح RAID موجود و توصیه شده در اسناد رسمی بخوانید. استخرهای ذخیره‌سازی از گروه‌های RAID از یک یا چند سطح تشکیل می‌شوند که سپس فضای آزاد از آن‌ها توزیع می‌شود. و از فضای استخر برای فایل سیستم ها و LUN ها اختصاص داده شده است.

FAST VP در ذخیره سازی Unity: چگونه کار می کند

چرا به Tiering نیاز دارم؟

به طور خلاصه و انتزاعی: برای دستیابی به نتایج بیشتر با استفاده از حداقل منابع. به طور خاص، نتیجه معمولاً به عنوان مجموعه ای از ویژگی های سیستم ذخیره سازی - سرعت و زمان دسترسی، هزینه ذخیره سازی و موارد دیگر درک می شود. حداقل منابع به معنای کمترین هزینه است: پول، انرژی و غیره. FAST VP مکانیسم هایی را برای توزیع مجدد داده ها در سطوح مختلف در سیستم های ذخیره سازی Unity/Unity XT پیاده سازی می کند. اگر به من اعتقاد دارید، می توانید پاراگراف بعدی را رد کنید. برای بقیه، کمی بیشتر به شما می گویم.

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

  • نیاز به زمان و توجه مدیر دارد.
  • همیشه نمی‌توان منابع ذخیره‌سازی را «باز ترسیم» کرد تا متناسب با شرایط متغیر باشد.
  • یک مزیت مهم ناپدید می شود: دسترسی یکپارچه به منابع واقع در سطوح مختلف ذخیره سازی.

برای اینکه مدیران ذخیره سازی کمتر نگران امنیت شغلی باشند، اضافه می کنم که برنامه ریزی منابع شایسته در اینجا نیز ضروری است. اکنون که وظایف لایه‌بندی به طور خلاصه بیان شد، بیایید نگاهی به انتظارات شما از FAST VP بیندازیم. اکنون زمان بازگشت به تعریف است. دو کلمه اول - کاملاً خودکار - به معنای واقعی کلمه به عنوان "کاملاً خودکار" ترجمه می شود و به این معنی است که توزیع بین سطوح به طور خودکار انجام می شود. خب، Virtual Pool یک مخزن داده است که شامل منابعی از سطوح مختلف ذخیره سازی است. این چیزی است که به نظر می رسد:

FAST VP در ذخیره سازی Unity: چگونه کار می کند

با نگاهی به آینده، می گویم که FAST VP داده ها را فقط در یک استخر جابجا می کند و نه بین چندین استخر.

مشکلات حل شده توسط FAST VP

بیایید ابتدا به صورت انتزاعی صحبت کنیم. ما یک استخر و مکانیسمی داریم که می تواند داده ها را در این استخر توزیع مجدد کند. با یادآوری اینکه هدف ما دستیابی به حداکثر بهره وری است، از خود بپرسیم: از چه راه هایی می توانیم به آن دست یابیم؟ ممکن است چندین مورد از آنها وجود داشته باشد، و در اینجا FAST VP چیزی برای ارائه به کاربر دارد، زیرا این فناوری چیزی فراتر از طبقه بندی فضای ذخیره سازی است. در اینجا چند روش FAST VP می تواند عملکرد استخر را افزایش دهد:

  • توزیع داده ها در انواع مختلف دیسک، سطوح
  • توزیع داده ها بین دیسک هایی از همان نوع
  • توزیع داده هنگام گسترش استخر

قبل از اینکه به چگونگی حل این وظایف نگاه کنیم، باید حقایق لازم را در مورد نحوه عملکرد FAST VP بدانیم. FAST VP با بلوک هایی با اندازه معین - 256 مگابایت کار می کند. این کوچکترین "تکه" پیوسته داده ای است که می توان منتقل کرد. در مستندات این چیزی است که آنها به آن می گویند: برش. از نقطه نظر FAST VP، همه گروه های RAID از مجموعه ای از این "قطعه ها" تشکیل شده اند. بر این اساس، تمام آمارهای ورودی/خروجی برای چنین بلوک‌های داده جمع‌آوری می‌شوند. چرا این اندازه بلوک انتخاب شد و آیا کاهش می یابد؟ بلوک بسیار بزرگ است، اما این یک مصالحه بین دانه بندی داده ها (اندازه بلوک کوچکتر به معنی توزیع دقیق تر) و منابع محاسباتی موجود است: با توجه به محدودیت های شدید موجود در RAM و تعداد زیادی بلوک، داده های آماری ممکن است اشغال شوند. بیش از حد، و تعداد محاسبات به نسبت افزایش خواهد یافت.

چگونه FAST VP داده ها را به استخر اختصاص می دهد. سیاستمداران

برای کنترل قرار دادن داده ها در یک استخر با فعال FAST VP، سیاست های زیر وجود دارد:

  • بالاترین سطح موجود
  • لایه خودکار
  • شروع به بالا سپس Auto-Tier (پیش فرض)
  • پایین ترین سطح موجود

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

Highest Available Tier سعی می کند یک بلوک جدید را در بالاترین سطح عملکرد قرار دهد. اگر فضای کافی بر روی آن وجود نداشته باشد، در بالاترین سطح بعدی قرار می گیرد، اما سپس داده ها را می توان به سطح سازنده تر (در صورت وجود فضا یا با جابجایی داده های دیگر) منتقل کرد. Auto-Tier داده های جدید را بسته به میزان فضای موجود در سطوح مختلف قرار می دهد و بسته به تقاضا و فضای آزاد دوباره توزیع می شود. Start High سپس Auto-Tier خط مشی پیش فرض است و همچنین توصیه می شود. هنگامی که در ابتدا قرار می گیرد، به عنوان بالاترین سطح موجود کار می کند، و سپس داده ها بسته به آمار استفاده از آن جابجا می شوند. خط‌مشی کمترین سطح موجود به دنبال این است که داده‌ها را در کمترین سطح تولید قرار دهد.

انتقال داده با اولویت کم انجام می شود تا در عملکرد مفید سیستم ذخیره سازی تداخل ایجاد نشود، با این حال، یک تنظیم "نرخ جابجایی داده" وجود دارد که اولویت را تغییر می دهد. در اینجا یک ویژگی وجود دارد: همه بلوک های داده ترتیب توزیع مجدد یکسانی ندارند. به عنوان مثال، بلوک هایی که به عنوان ابرداده علامت گذاری شده اند ابتدا به سطح سریع تری منتقل می شوند. فراداده، اصطلاحاً «داده درباره داده» است، برخی اطلاعات اضافی که داده‌های کاربر نیستند، اما شرح آن را ذخیره می‌کنند. به عنوان مثال، اطلاعات موجود در سیستم فایل در مورد اینکه یک فایل خاص در کدام بلوک قرار دارد. این بدان معناست که سرعت دسترسی به داده ها به سرعت دسترسی به ابرداده بستگی دارد. با توجه به اینکه ابرداده معمولاً از نظر اندازه بسیار کوچکتر است، انتظار می رود مزایای انتقال آن به دیسک های با کارایی بالاتر بیشتر باشد.

معیارهایی که Fast VP در کار خود استفاده می کند

معیار اصلی برای هر بلوک، تقریباً، ویژگی "تقاضا" داده است که به تعداد عملیات خواندن و نوشتن یک قطعه داده بستگی دارد. ما این ویژگی را "دما" می نامیم. داده های درخواستی (گرم) وجود دارد که نسبت به داده های ادعا نشده «داغ تر» است. به صورت دوره ای، به طور پیش فرض در فواصل زمانی یک ساعت محاسبه می شود.

تابع محاسبه دما دارای ویژگی های زیر است:

  • در غیاب I/O، داده ها در طول زمان "خنک می شوند".
  • تحت بار کم و بیش مساوی در طول زمان، دما ابتدا افزایش می یابد و سپس در یک محدوده مشخص تثبیت می شود.

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

FAST VP در ذخیره سازی Unity: چگونه کار می کند

اما بیایید به وظایف برگردیم. بنابراین، می‌توانیم شروع کنیم به تجزیه و تحلیل آنچه که برای حل مشکلات FAST VP انجام می‌شود.

الف. توزیع داده ها در انواع مختلف دیسک، سطوح

در واقع، این وظیفه اصلی FAST VP است. بقیه به تعبیری مشتقات آن هستند. بسته به خط مشی انتخاب شده، داده ها در سطوح مختلف ذخیره سازی توزیع می شوند. اول از همه، سیاست قرار دادن در نظر گرفته می شود، سپس دمای بلوک و اندازه / سرعت گروه های RAID.

برای سیاست های بالاترین/پایین ترین سطح موجود همه چیز بسیار ساده است. برای دو مورد دیگر این مورد است. داده ها در سطوح مختلف با در نظر گرفتن اندازه و عملکرد گروه های RAID توزیع می شوند: به طوری که نسبت کل "دما" بلوک ها به "حداکثر عملکرد مشروط" هر گروه RAID تقریباً یکسان است. بنابراین، بار کم و بیش به طور مساوی توزیع می شود. داده‌های مورد تقاضا بیشتر به رسانه‌های سریع منتقل می‌شوند و داده‌هایی که به ندرت استفاده می‌شوند به رسانه‌های کندتر منتقل می‌شوند. در حالت ایده آل، توزیع باید چیزی شبیه به این باشد:

FAST VP در ذخیره سازی Unity: چگونه کار می کند

ب. توزیع داده ها بین دیسک هایی از همان نوع

به یاد داشته باشید، در ابتدا من آن رسانه ذخیره سازی را نوشتم یکی یا بیشتر سطوح در یک استخر ترکیب می شوند؟ در مورد یک سطح، FAST VP نیز کارهایی برای انجام دارد. برای دستیابی به حداکثر عملکرد در هر سطح، توصیه می شود که داده ها به طور مساوی بین دیسک ها توزیع شود. این (در تئوری) به شما امکان می دهد حداکثر مقدار IOPS را دریافت کنید. داده های درون یک گروه RAID را می توان به طور مساوی در بین دیسک ها توزیع کرد، اما این همیشه بین گروه های RAID صدق نمی کند. در صورت عدم تعادل، FAST VP داده ها را بین گروه های RAID متناسب با حجم و «عملکرد مشروط» (به صورت عددی) منتقل می کند. برای وضوح، یک طرح تعادل مجدد را در بین سه گروه RAID نشان خواهم داد:

FAST VP در ذخیره سازی Unity: چگونه کار می کند

ب. توزیع داده ها هنگام گسترش استخر

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

SSD Wear Leveling

با استفاده از سایش سطح، FAST VP می تواند عمر یک SSD را افزایش دهد، اگرچه این ویژگی مستقیماً با Storage Tiering مرتبط نیست. از آنجایی که داده های دما از قبل در دسترس هستند، تعداد عملیات نوشتن نیز در نظر گرفته شده است، و ما می دانیم که چگونه بلوک های داده را جابجا کنیم، منطقی است که FAST VP این مشکل را حل کند.

اگر تعداد ورودی‌های یک گروه RAID به‌طور قابل‌توجهی از تعداد ورودی‌های گروه دیگر بیشتر شود، FAST VP داده‌ها را مطابق با تعداد عملیات نوشتن دوباره توزیع می‌کند. از یک طرف، این باعث کاهش بار و صرفه جویی در منابع برخی از دیسک ها می شود، از سوی دیگر، "کار" را برای دیسک های کم بار اضافه می کند و عملکرد کلی را افزایش می دهد.

به این ترتیب، FAST VP چالش های سنتی Storage Tiering را بر عهده می گیرد و کمی بیشتر از آن انجام می دهد. همه اینها به شما امکان می دهد تا داده ها را کاملاً کارآمد در سیستم ذخیره سازی Unity ذخیره کنید.

چند راهنمایی

  1. از خواندن مستندات غافل نشوید. بهترین روش‌ها وجود دارد و کاملاً خوب کار می‌کنند. اگر آنها را دنبال کنید، به عنوان یک قاعده، هیچ مشکل جدی ایجاد نمی شود. بقیه توصیه ها اساساً آنها را تکرار یا تکمیل می کند.
  2. اگر FAST VP را پیکربندی و فعال کرده اید، بهتر است آن را فعال بگذارید. اجازه دهید داده ها را در زمان تعیین شده خود و کم کم سالی یک بار توزیع کند و تأثیر جدی بر عملکرد سایر وظایف داشته باشد. در چنین مواردی، توزیع مجدد داده ها ممکن است زمان زیادی طول بکشد.
  3. در انتخاب پنجره جابجایی دقت کنید. اگرچه این امر بدیهی است، اما سعی کنید زمانی را با کمترین بار روی یونیتی انتخاب کنید و مدت زمان کافی را اختصاص دهید.
  4. برای گسترش سیستم ذخیره سازی خود برنامه ریزی کنید، این کار را به موقع انجام دهید. این یک توصیه کلی است که برای FAST VP نیز مهم است. اگر مقدار فضای آزاد بسیار کم باشد، حرکت داده ها کند می شود یا غیرممکن می شود. به خصوص اگر نکته 2 را نادیده گرفته باشید.
  5. هنگام گسترش یک استخر با فعال کردن FAST VP، نباید با کندترین دیسک ها شروع کنید. یعنی یا همه گروه های RAID برنامه ریزی شده را به یکباره اضافه می کنیم یا ابتدا سریع ترین دیسک ها را اضافه می کنیم. در این مورد، توزیع مجدد داده ها به دیسک های "سریع" جدید، سرعت کلی استخر را افزایش می دهد. در غیر این صورت، شروع با دیسک های "آهسته" می تواند به وضعیت بسیار ناخوشایندی منجر شود. ابتدا داده‌ها به دیسک‌های جدید و نسبتاً کند منتقل می‌شوند و پس از افزودن دیسک‌های سریع‌تر، در جهت مخالف. در اینجا تفاوت های ظریف مربوط به سیاست های مختلف FAST VP وجود دارد، اما به طور کلی، وضعیت مشابهی ممکن است.

اگر به دنبال این محصول هستید، می توانید با دانلود ابزار مجازی Unity VSA، Unity را به صورت رایگان امتحان کنید.

FAST VP در ذخیره سازی Unity: چگونه کار می کند

در پایان مطالب، چندین پیوند مفید را به اشتراک می گذارم:

نتیجه

من دوست دارم در مورد چیزهای زیادی بنویسم، اما می دانم که همه جزئیات برای خواننده جالب نخواهد بود. به عنوان مثال، می توانید با جزئیات بیشتری در مورد معیارهایی که FAST VP در مورد انتقال داده تصمیم می گیرد، در مورد فرآیندهای تجزیه و تحلیل آمار I/O صحبت کنید. همچنین مبحث تعامل با استخرهای پویا، و این سزاوار یک مقاله جداگانه است. حتی می توانید در مورد توسعه این فناوری خیال پردازی کنید. امیدوارم خسته کننده نبوده و شما را خسته نکرده باشم دوباره می بینمت!

منبع: www.habr.com

اضافه کردن نظر