تفاوت بین Thin Provision و Thick Provision چیست؟

سلام و احترام دوستان.

حتما زمانی که دارین به یه ماشین هارد میدین به این گزینه های Thick Provision Lazy Zeroed, Eager Zeroed, Thin Provision برخورد کردین. این گزینه ها مربوط به نحوه ی اختصاص هارد به ماشین هست و خیلی مهم هستن. پس اگه درموردشون چیزی نمیدونین بهتره ادامه پست را بخونین.

حالت Thick Provisioning :

در این حالت کل فضایی که برای ماشین لازم دارین رزرو میشه حتی اگه داخلش دیتایی نباشه. یعنی اگه شما به ماشین ۳۰GB فضا اختصاص بدین و فقط ۱۰GB دیتا بریزین کل ۳۰GB فضا از storage برای ماشین قفل میشه و بقیه ماشین ها نمی تونن از این فضا استفاده کنن. این حالت خودش به ۲ حالت دیگه تقسیم میشه:

  1. Lazy Zeroed: در این حالت زمان ایجاد هارد برای ماشین کل فضا اختصاص پیدا میکنه ولی امکان داره روی اون فضا از قبل دیتا باشه و در این حالت اون دیتاها پاک نمیشه و لازمه زمان ریختن دیتای جدید “zeroed out” بشه. این حالت سرعت خوبی در زمان ایجاد هارد داره یعنی سرعت ایجاد ماشین زیاده ولی performance خود ماشین در زمان اولین بار نوشتن دیتای جدید پایین میاد.
  2. Thick Provision Eager Zeroed: در حالت هم علاوه بر اینکه زمان ایجاد ماشین کل فضا برای ماشین رزرو میشه کل فضا wipe میشه و اگه قبلا دیتایی روش بوده پاک میشه. ساخت disk به این روش زمان بیشتری می بره ولی performance ماشین در اولین باری که روش دیتا ریخته میشه بیشتره. علاوه بر این از قابلیت های کلاسترینگ مثل fault tolerance هم پشتیبانی میکنه.

نکته: به دلایل امنیتی هم استفاده از روش Thick Provision Eager Zeroed بهتره چون اگه دیسک wipe نشه امکان recover کردن دیتای قبلی وجود داره.

حالت Thin Provisioning:

در این حالت کل فضایی که به ماشین میدین رزرو نمیشه و به مرور که شما دیتا میریزین هارد ماشین بزرگ میشه مثلا اگه شما به ماشین ۳۰GB فضا بدین ولی ۱۰GB بیشتر دیتا نریزین حجم vdmk ماشین فقط ۱۰GB هست.

این حالت برای استفاده ی بهینه از storage خیلی خوبه چون امکان داره مثلا اون ۲۰GB ماشین دیگه اصلا استفاده نشه و اینجوری به مرور با کمبود فضای storage نمی خورین یا خیلی دیرتر می خورین.

اما این روش یه بدی هایی هم داره:

  1. Performance این روش نسبت به روش lazy zeroed thick-provisioned پایین تره چون باید زمان ذخیره دیتا باید عملیات “zeroed out” هم انجام بشه.
  2. پراکندگی دیتای ذخیره شده در storage پیش میاد چون ماشین ها محل ذخیره دیتای مشخص ندارن و اگه دیتای ماشین ها به مرور زمان ریخته بشه دیتای ماشین ها روی storage پراکنده میشن و این خودش باعث کاهش performance میشه. اگه با قابلیت defragment ویندوز کار کرده باشین منظور منو بهتر متوجه میشین. این قابلیت پراکندگی دیتای روی هارد را رفع میکنه و باعث افزایش performance میشه.
  3. مدیریت فضای storage سخت تر میشه چون امکان داره شما بیشتر از حجم storage به ماشین ها فضا بدین که در این صورت امکان داره بعد یه مدت فضای storage پر بشه و اگه ماشین ها بخوان دیتایی روی هاردشون بریزن به خطا بخورن و ماشین ها down بشن. اینجور مواقع مجبور میشین فضای storage را اضافه کنین یا یه ماشین یا فقط هاردشو به یک سرور یا storage دیگه منتقل کنین. البته اگه می تونین datastore cluster داشته باشین می تونین با قابلیت DRS این مشکل را مدیریت کنین.
  • وقتی شما یه دیتایی از روی هارد ماشین پاک می کنین فقط Indexهای اون دیتا پاک میشه و واقعا دیتا پاک نمیشه. برای همین اگه دوباره دیتا بریزین روی فضای delete شده ریخته نمیشه. که همین موضوع باعث میشه فضای هارد ماشین بزرگ بشه.

برای رفع این موشکل باید هارد ماشین را shrink کرد که این کار هم باید با دقت و در زمان غیر پیک کاری ماشین انجام بشه. همچنین ماشین نباید Snapshot داشته باشه و وقبل از shrink باید یه backup ازش داشته باشین تا اگه مشکلی پیش آمد restore کنین.

توجه: این مطلب از تجربیات و Research های خودمه و امکان داره توش اشکالاتی باشه یا بشه کاملترش کرد. خوشحال میشم اگه از من انتقاد کنین و اگه چیزی یاد دارین کامنت بزارین تا منم استفاده کنم.

متشکرم

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

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