وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چطور فضای دیسک را در دیسک Thin Esxi آزاد کنیم ( لینوکس و ویندوز )

0 ۱۵۰
زمان لازم برای مطالعه: 4 دقیقه

وقتی ماشین های مجازی داشته باشید که دیسک آنها بصورت thin باشد ( Thin Provisioned Disks ) احتما توجه کرده اید که سایز آنها همیشه با افزایش داده ها رشد میکند اما با پاک کردن اطلاعات مجدد کوچک نمی شود ! در حال حاظر vmware روش خودکاری برای Space Reclamation یا آزاد سازی مجدد فضا ندارد اا خوشبختانه ابزارهایی وجود دارند که با استفاده از آنها میتوانید فضای آزاد شده روی دیسک سرور مجازی را مجدد به فضای استفاده نشده Datastore خود اضافه کنید،

یکی از نقاط منفی روش ذکر شده در این مطلب این است که باید ماشین مجازی مد نظر را خاموش کنید ( که البته فکر نمیکنم راه دیگری در حال حاظر وجود داشته باشد)

 

بروزرسانی : در نسخه 6 ESX دستوری به نام unmap به مجموعه دستورات esxcli اضافه شده است که به شما امکان صدور دستور آزاد سازی فضا در کل یک volume را میدهد

فرمت کلی آن به شکل زیر است که در مطلب دیگری به آن خواهم پرداخت ، البته بصورت پیشفرض در صورتی که سرور جدید نصب کرده باشید و نسخه VMFS6 باشد آزاد سازی خودکار فضا با اولویت پائین ( 25MB تا 50MB در ثانیه ) که البته در CLI میتوانید آن را تا 3 برابر ( high ) افزایش بدهید


 

خوب برای شروع باید فضای آزاد روی دیسک های ماشین مجازی را با 0 پر کنیم ، اما ابتدا اطلاعاتی در خصوص محیط سرور و volume ها نیاز داریم

گام 1: دستور زیر را برای بررسی اطلاعات datasoreای که ماشین روی آن در حال اجراست بدست بیاوریم ، اطلاعات اصلی که ممکن است نیاز داشته باشیم را bold کرده ام .



همانطور که مشاههد میکنید این دیوایس برای Thin بودن ست شده و VAAI هم پشتیبانی می کند . حالا میتوانیم دستوری که برای بدست آوردن پارامترهای VAAI در کنترلر دیسک ها اجرا کنیم ، بصورت کلی با اجرای این دستور باید ببینم آیا کنترل دیسک از UNMAP کردن پشتیبانی می کند و متیواند فضاهای مرده را مجدد آزاد کند

هماطنور که مشاهده میکنید Device از حذف Delete پشتیبانی میکندبنابران قابلیت ارسال دستورات UNMAP اسکازی را زمانی که عملیات آزاد سازی فضا درخواست شود را دارد

 

گام دوم  : “واقعا ” ، فضای آزاد را پاک کنیم

آزاد سازی فضای دیسک در فایل سیستم ها زمانی میتواند اتفاق بی افتد که  دیسک های مجازی واقعا خالی باشند ، همانطور که میدانید پاک کردن داده فقط اطلاعات آن را از file allocation table پاک میکند ، اما بلاک آزاد شده را 0 نمیکند .در نتیجه ESXi همچنان فکر میکند که آن بلوک داده همچنان در حال استفاده است .

برای آزاد کردن فضا ( نوشتن ضفر روی دیسک ) در ویندوز و لینوکس ابزارهایی وجود دارد

آزاد کردن فضای بلا استفاده دیسک ماشین مجازی در Windows

برنامه SDelete را دانلود کنید ، این دستور امکانات قدرتمندی دارد که میتواند فضای های خالی را ردیابی و پاک سازی کند ، شما متوجه فضای قابل استفاده در داخل VM خود نمی شوید ، اما این به vmware این قابلیت را میدهد که فضای های بلااستفاده را شناسایی کرده و فضای های بلا استفاده را آزاد کند و مجدد  در datastore قابل استفاده کند

 

CMD را As Administrator (elevated) اجرا کنید و Sdelete را اجرا کنید


عبارت [drive:] را با پارتیشن مد نظر خود جایگزین کنید ، توجه کنید که شما میتوانید روی یک دیسک چندین پارتیشن داشته باشید ، و باید این عملیات را برای همهپارتیشن ها اجرا کنید تا بصورت کامل موثر باشد.

پیشنهاد می‎کنیم بخوانید:
آموزش فعال‎سازی پروتکل SNMP روی vmware ESXi

آزاد کردن فضای بلا استفاده دیسک ماشین مجازی در Windows

لینوکس روش متفاوتی برای دستیابی به هدف فوق دارد ، بسته به فایل سیستمی که داریم ابزارهای متفاوتی برای این کار وجود دارد اما یکی از آنها که همیشه برای خالی کردن فضا با یک فایل پر از صفر کار خواهد کرد dd است !

ابتدا مطمئن شوید که همه سرویس هایی که ممکن است اطلاعاتی روی دیسک بنویسند را متوقف کنید تا مشکلی به جهت پر شدن کامل آن پارتیشن ایجاد نشود ، سپس مطابق دستور زیر از dd استفاده کنید تا کل فضا را با صفر پر کنید


عبارت [mounted-volume] را با مسیر مانت شده دیسک خود جایگزین کنید مثلا / یا /home ، و باز مانند ویندوز اگر روی فقط یک دیسک جنیدن پارتیشن دارید باید برای همه آنها دستور را اجرا کنید، در غیر این صورت همه بلوک ها با صفر پر نخواهند شد و نتیجه دلخواه و کامل حاصل نمی شود .

گام 3 : اجرای reclaim در ESX

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

ابتدا ماشین مجازی مد نظر را خاموش کنید و با ssh به کنسول سرور ESXi خود متصل شوید ، سپس با دستور cdبه مسیر و سپس دستور vmkfstools را با پارامترهای زیر اجرا کنید


عبارت [disk] را با اسم فایل دیسک ماشین مجازی خود جایگرین کنید ، این فایل معمولا flat VMDK آدرس دهی میشود ، شما باید فایل Descriptor را که بدون -flat است را قرار بدهید یعنی اگر اسم دیسک شما هست

rasanegar-vm-flat.vmdk باید فایل rasanegar-vm.vmdk را در آدرس فوق قرار بدهید

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


نکته مهم :
همانطور که حتما متوجه شده اید ، اقدامات فوق روی دیسک های ایجاد شده بصورت thin کار میکند و در صورتی که دیسکی را بصورت Thick ایجاد کرده باشید با خطای زیر مواجه خواهید شد

موفق باشید

دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید