اگه شما کسی هستید که تو حوزه مجازی سازی کار می کنید احتمالا تا حالا براتون پیش اومده که فضای دخیره سازی به یک vm در esxi دادین و بعد خواستین این فضا رو تغییر بدین و کمش کنید. اما نکته اینجاست برای تغییر یا کم کردن فضای ذخیره سازی  یک vm نمی تونیم  این کار رو از طریق ui مربوط به esxi انجام بدیم. اگه از vcenter استفاده می کنید براحتی این کار قابل انجامه اما تو esxi قضیه کمی متفاوته. تو این پست قرار نحوه انجام این کار رو باهم پیش ببریم.
برای این کار به ترتیب موارد زیر را انجام خواهم داد.
اولین کاری که می کنیم اینه که تو خود vm مقدار فضایی که در نظر داریم رو کم کنیم. مثلا تو ویندوز از طریق  disk management به مقداری که میخوام shrink می کنیم و بعد vm رو خاموش می کنیم.


تو مرحله بعد کافیه از طریق ssh به esxi وصل بشیم و کار هایی که در ادامه اومده رو انجام بدیم.
یه کپی از  فایل باپسوند vmdk به اسم vm که داریم میگیرم.
cp vmname.vmdk vmname-original.vmdk
بعد فایل مزبور رو باز کرده و در بخش Extent description  مقداری که میخوایم vm هارد داشته باشه رو با فرمول زیر وارد می کنیم و فایل رو ذخیره میکنیم.
vmdk_size = [x * (1024*1024*1024)] / 512
200*1024*1024*10204/512=419430400
مثلا برای تنظیم فضای دخیره سازی به 200 گیک باید وارد کنیم
RW 419430400VMFS “vmname-flat.vmdk
بعد از این مرحله باید توسط این فایل یه کلون گرفته بشه.
vmkfstools -i vmname.vmdk vmname-new.vmdk
تو این مرحله دیگه می تونیم وی ام رو استارت کنیم و تغییرات رو ببینیم. بعد از این کار میشه فایل های vmname-flat-old.vmdk رو هم حذف کرد تا فضای بی خودی نگیرن.
نکته اول: که اگه از لینوکس استفاده می کنید که رابط کاربری گرافیکی نداره اون وقت باید با gparted live iso یا Ubuntu live iso وی امی  که می خواید رو بیارید بالا بعد shrink کنید. من با مورد اول تست کردم درست بود.
نکته دوم: اینه که فضای unallocated یی که در لینوکس ایجاد میشه حتما باید در طرف اخر دیسک جمع بشه و الا کار انجام نخواهد شد.