منابع سخت افزاری ماشین مجازی
هر ماشین مجازی مجموعه ای از منابع دارد که توسط لایه ی زیرساخت ارائه شده اند، و معمولا در یک مجموعه از منابع سازمان دهی شده اند و به صورت داینامیک (یا در بعضی مواقع به صورت استاتیک) به هر ماشین مجازی داده شده اند.
هر ماشین مجازی یک زیر مجموعه از منابع فیزیکی را به شکل ابزار های سخت افزاری مجازی که معمولا توسط حداقل نیاز های زیر تعریف شده است می بیند:
- نوع پلتفرم سخت افزار (x86 برای ماشین مجازی 32 بیتی یا x64 برای ماشین مجازی 64 بیتی)
- نوع سخت افزار مجازی (به لایه مجازی سازی بستگی دارد)
- CPU مجازی (و شاید سوکت های مجازی و هسته های مجازی)
- RAM مجازی ( و شاید یک Persistent RAM)
- دیسک مجازی متصل شده به یک کنترلر مجازی
- کارت شبکه مجازی
همچنین کامپوننت های سخت افزاری دیگری هم می تواند باشد که اجباری نیستند ولی در موارد خاص می توانند مفید باشند. یا برای یک سری عملیات پایه مورد نیاز هستند، برای مثال، نصب سیستم عامل مهمان جایی که یک درایور ویدیو، یک صفحه کلید و یک موس نیاز دارند که از remote console استفاده کنند.
در VMware vSphere امکان اضافه کردن تعداد زیادی دیوایس های سخت افزاری به یک VM وجود دارد:
همچنین دیوایس های PCI، SCSI ، پورت های FC مجازی، و چندین نوع دیگر از تجهیزات ذخیره سازی (مانند NVMe و SATA based) نیز وجود دارند.
به تازگی استفاده GPU های مجازی نیز به دلیل نیاز به برخی محاسبات خاص که توسط GPU های general purpose بهتر انجام می شوند در حال افزایش است (توجه کنید که vSphere 6.7U1 قابلیت vMotion VMs را با GPU مجازی اضافه کرده است).
تغییرات منابع سخت افزاری ماشین مجازی بدون خاموش کردن سیستم (hot-changing)
ولی کدام نوع از منابع امکان این را دارند که روی یک ماشین مجازی در حال اجرا تغییر داده بشوند.
این کاملا به hypervisor و نسخه آن بستگی دارد ، اما امکانات های زیادی وجود دارد.
در جدول زیر خلاصه ی عملیات مختلف روی یک ماشین مجازی در حال اجرا با یک سیستم عامل میهمان (guest OS) جدید آورده شده است:
نوع منبع | افزایش منبع بدون نیاز به خاموش کردن سیستم (hot-increasing) | کاهش منبع بدون نیاز به خاموش کردن سیستم (hot-decreasing) |
CPU (socket) | امکان پذیر است | امکان پذیر است |
CPU (core) | به دلیل محدودیت های سیستم عامل امکان پذیر نیست | به دلیل محدودیت های سیستم عامل امکان پذیر نیست |
RAM | امکان پذیر است | امکان پذیر است، اما معمولا انجام نمی شود |
Disk (device) | امکان پذیر است (غیر از IDE) | امکان پذیر است (غیر از IDE) |
Disk (space) | امکان پذیر است (غیر از IDE) | امکان پذیر است (غیر از IDE)، اما معمولا انجام نمی شود |
Storage controller | امکان پذیر است | امکان پذیر است، اما معمولا انجام نمی شود |
Network controller | امکان پذیر است | امکان پذیر است |
PCI device | امکان پذیر است | امکان پذیر است، اما معمولا انجام نمی شود |
USB device | امکان پذیر است | امکان پذیر است |
Serial or parallel device | امکان پذیر نیست | امکان پذیر نیست |
GPU general purpose | امکان پذیر است | امکان پذیر است، اما معمولا انجام نمی شود |
حالا اجازه دهید اطلاعات بیشتری درباره ی بعضی منابع مختلف ارائه بدهیم و چند نکته درباره ی چگونگی تغییر دادن منابع سخت افزاری روی یک ماشین مجازی در حال اجرا بیان کنیم.
برای اینکه مثال واضح تر و مشخص تر باشد، ما یک ماشین مجازی را در نظر می گیریم که روی vSphere 6.7 Update 1 در حال اجرا است.
Hot-add کردن و hot-remove کردن CPU
به صورت پیش فرض، زمانی که ماشین مجازی در حال اجرا است نمی توانید به آن CPU اضافه کنید. گزینه ی hot-add کردن CPU به شما این امکان را می دهد که منابع CPU را به یک ماشین مجازی در حال اجرا اضافه کنید.
چند شرط نیاز است تا گزینه ی hot-add کردن CPU فعال شود، شما باید مطمئن شوید که VM در حال اجرا است و به صورت زیر پیکربندی شده است:
- ماشین مجازی خاموش شده است.
- سازگاری (compatibility) ماشین مجازی ESX/ESXi 4.x و یا بالاتر است.
- آخرین نسخه ی VMware Tools نصب شده است.
- سیستم عامل میهمان که از CPU hot plug پشتیبانی می کند.
برای فعال کردن گزینه ی hot-add کردن CPU مراحل زیر را دنبال کنید:
- روی ماشین مجازی در فهرست ماشین های مجازی راست کلیک کنید و گزینه ی Edit Settings را انتخاب کنید.
- در برگه (tab) Virtual Hardware، روی CPU کلیک کنید تا گزینه های آن ظاهر شود و سپس گزینه ی Enable CPU Hot Add را انتخاب کنید.
- روی گزینه ی OK کلیک کنید.
هم اکنون می توانید یک سوکت جدید را به یک VM در حال اجرا hot-add کنید. توجه کنید که تنها hot-add کردن سوکت جدیدی که تعداد هسته های آن برابر با تعداد هسته های سوکت در حال اجرا است امکان پذیر است. تعداد هسته ها در یک VM در حال اجرا تغییر پذیر نمی باشد.
در Windows Server Datacenter edition امکان hot-remove کردن سوکت ها نیز وجود دارد. برای دیگر سیستم عامل ها نیاز است که برای حذف سوکت ها VM را خاموش کنید.
این ویژگی تنها برای نسخه های Standard و Enterprise Plus در دسترس است و همچنان یکی از ویژگی های منحصر به فرد vSphere در مقایسه با hypervisor های دیگر به حساب می آید. (در حقیقت Microsoft Hyper-V این ویژگی را ندارد، ولی برای مثال Nutanix AHV این ویژگی را دارد).
چند نکته و توصیه برای مدیریت CPU hot-add و CPU hot-remove وجود دارد:
- برای گرفتن بهترین نتیجه، از ماشین های مجازی استفاده کنید که با ESXi 5.0 و یا بالاتر سازگاری دارند.
- برای استفاده از ویژگی CPU hot plug برای ماشین های مجازی که با ESXi 4.x و بعد از آن سازگار هستند، تعداد هسته به ازای هر سوکت را 1 قرار دهید.
- NUMA مجازی تنها با vSphere 6.x زمانی که یک سوکت جدید اضافه کنید به درستی کار می کند.
- تمام سیستم عامل های میهمان از hot-add کردن CPU پشتیبانی نمی کنند. اگر سیستم عامل از این ویژگی پشتیبانی نکرد می توانید این ویژگی را غیر فعال کنید. همچنین VMware KB 2020933 را نگاه کنید.(ویژگی های CPU Hot Plugin Enable و Disable به برای ماشین های مجازی به رنگ طوسی درآمده اند (غیر فعال). )
- زمانی که یک CPU را به یک VM با تنها یک CPU، hot-add می کنید ممکن است به یک سری مشکل بربخورید، مثلا در سیستم ویندوز task manager نتیجه را فورا نشان نمی دهد…. کافی است آن را ببندید و دوباره باز کنید.
- روند را قبل از اینکه آن را در محیط واقعی کار اجرا کنید روی VM تست کنید…. برخی از Windows Server های 2016 ممکن است با یک BSOD هنگام hot-add کردن CPU متوفف شوند. ( لینک https://vinfrastructure.it/2018/05/windows-server-2016-reboot-after-hot-adding-cpu-in-vsphere-6-5/ را مشاهده کنید، همین در vSphere 6.7 هم ممکن است اتفاق بیفتد.)
- اضافه کردن منابع CPU به یک ماشین مجازی در حال اجرا با CPU hot plug enable تمام USBهای متصل به دستگاه را که به ماشین مجازی متصل هستند disconnect می کند و دوباره ان ها را connect می کند.
- Hot-adding کردن CPU به یک ماشین مجازی با NVIDIA vGPU مستلزم این است که هاست ESXi یک اسلات خالی vGPU داشته باشد.
Hot-plug کردن RAM مجازی
Hot-add کردن حافظه به شما این امکان را می دهد که منابع حافظه را به یک ماشین مجازی در حال اجرا اضافه کنید.
برای فعال کردن گزینه ی RAM hot plug یک سری ملزومات لازم است، باید تایید کنید که VM در حال اجرا است و به صورت زیر پیکر بندی شده است:
- ماشین مجازی خاموش شده است.
- سازگاری (compatibility) ماشین مجازی ESX/ESXi 4.x و یا بالاتر است.
- آخرین نسخه ی VMware Tools نصب شده است.
- سیستم عامل میهمان که از CPU hot plug پشتیبانی می کند.
- برای یک سیستم پشتیبانی بهتر برای سیستم عامل ویندوز پست موجود در این بلاگ را بخوانید:
https://www.petenetlive.com/KB/Article/0000527
برای فعال کردن ویژگی RAM hot plug مراحل زیر را انجام دهید:
- روی ماشین مجازی در فهرست ماشین های مجازی راست کلیک کنید و گزینه ی Edit Settings را انتخاب کنید.
- در برگه (tab) Virtual Hardware، روی RAM کلیک کنید تا گزینه های آن ظاهر شود و سپس گزینه ی Enable را انتخاب کنید تا اضافه کردن حافظه به ماشین مجازی در حالی که روشن است اضافه شود.
- روی گزینه ی OK کلیک کنید.
این ویژگی تنها برای ادیشن های Standard و Enterprise Plus در دسترس است و تنها اجازه می دهد که RAM را به یک VM در حال اجرا اضافه کنید. توجه کنید در حال حاظر در hypervisor های دیگر نیز پیاده سازی شده است (برای مثال در Microsoft Hyper-V از 2016 به بعد امکان اضافه و حذف RAM وجود دارد.)
نکات و توصیه هایی در رابطه با مدیریت hot-add کردن RAM وجود دارد:
- برای گرفتن بهترین نتیجه، از ماشین های مجازی استفاده کنید که با ESXi 5.0 و یا بالاتر سازگاری دارند.
- فعال کردن ویژگی hot add کردن حافظه یک مقدار سربار اضافه روی هاست ESXi برای ماشین مجازی بوجود میاورد.
- تمام سیستم عامل های میهمان از hot-add کردن RAM پشتیبانی نمی کنند. اگر سیستم عامل از این ویژگی پشتیبانی نکرد می توانید این ویژگی را غیر فعال کنید.
- Hot-adding کردن RAM به یک ماشین مجازی با NVIDIA vGPU مستلزم این است که هاست ESXi یک اسلات خالی vGPU داشته باشد.
- NUMA مجازی تنها با vSphere 6.x زمانی که یک سوکت جدید اضافه کنید به درستی کار می کند.
- روند را قبل از اینکه آن را در محیط واقعی کار اجرا کنید روی VM تست کنید….. من تا به حال با مشکل خاصی برخورد نکردم (مانند hot-add کردن CPU)، اما همیشه ویژگی های جدید را در یک محیط غیر حساس تست کنید.
دیسک های مجازی
زمانی که یک ماشین مجازی ایجاد می کنید، یک هارد دیسک مجازی پیش فرض به آن اضافه شده است. اگر بخواهید یک boot disk اضافه کنید و یا برای دیگر اهداف مدیریت فایل به فضای بیشتری تیاز داشته باشید، می توانید یک هارد دیسک دیگر به آن اضافه کنید.
در VMware vSphere می توانید یک دیسک مجازی را hot-add و یا hot-remove کنید، همچنین می توانید به صورت hot-add به فضای یک دیسک مجازی موجود اضافه کنید. برای دیسک های RDM محدودیت هایی ممکن است وجود داشته باشد، ولی ما در این مقاله این نوع دیسک ها را در نظر نمی گیریم.
اکثر ویژگی ها و عملیات یادشده در hypervisor های دیگر نیز موجود هستند، این ویژگی ها در ESXi از ورژن 3.x به بعد و همچنین برای ادیشن رایگان آن نیز موجود هستند!
در vSphere، فضای دیسک تنها می تواند به یک دیسک موجود اضافه شود. گزینه ی کاهش سایز (shrink) برای کم کردن سایز دیسک مجازی (که برای مثال در Microsoft Hyper-V موجود است) در vSphere وجود ندارد.
توجه کنید که تمام ویژگی های hot-add تنها زمانی که دیسک های مجازی به کنترلر SCSI یا SATA و یا SAS متصل هستند در دسترس هستند. در کنترلر IDE به دلیل محدودیت های IDE/PATA این ویژگی ها در دسترس نیستند.
حداکثر تعداد دیسک ها به نوع کنترل کننده بستگی دارد. در واقع می توانیم موارد زیر را داشته باشیم:
- حداکثر 4 دیسک مجازی در کنترلرهای IDE
- حداکثر 60 دیسک مجازی در کنترلرهای SCSI/SAS (تا 4 کنترلر)
- حداکثر 60 دیسک مجازی در کنترلرهای NVMe (تا 4 کنترلر)
- حداکثر 120 دیسک مجازی و/ یا دیوایس های CDROM در کنترلر های SATA (تا 4 کنترلر)
- جداکثر 256 دیسک مجازی در کنترلر های PVSCI (تا 4 کنترلر). در vSphere 6.7 جدید است
حداکثر مقدار برای ظرفیت هارد دیسک 62 ترابایت است. زمانی که دیسک های مجازی را اضافه و یا پیکربندی می کنید همیشه یک مقدار کوچک برای سربارها کنار بگذارید. برخی از وظایفی که ماشین مجازی انجام می دهد فضای زیادی از دیسک را مصرف می کنند، که اگر فضای کافی برای اختصاص یافتن نداشته باشد از درست انجام شدن آن وظیفه جلوگیری می شود. مثال هایی از این رخداد ها گرفتن snapshot ها و استفاده از linked clone ها است. این عملیات زمانی که حداکثر فضای دیسک تخصیص داده شده است نمی توانند به اتمام برسند. همچنین عملیاتی نظیر snapshot quiescent، cloning، Storage vMotion، یا vMotion در محیط هایی بدون حافظه ی اشتراکی، می تواند بسیار زمانبر باشند.
ماشین های مجازی با ظرفیت هارد دیسک مجازی بالا، یا دیسک های بیشتر از 2 ترابایت، باید الزامات منابع و پیکربندی برای عملکرد بهینه ی ماشین مجازی را رعایت کنند.
در گذشته این دیسک های “jumbo” محدودیت هایی در vSphere داشته اند. (برای اطلاعات بیشتر لینک https://vinfrastructure.it/2017/02/jumbo-disk-vmware-esxi/) را ببینید)، اما اکثر این محدودیت ها با شروع vSphere 6.5 به بعد از بین رفته اند.
VM های با ظرفیت بالای دیسک شرایط و محدودیت های زیر را دارند:
- سیستم عامل میهمان باید از ظرفیت بالای هارد دیسک های مجازی پشتیبانی کند و از یک Table GPT استفاده کند (Table MBR به 2 ترابایت محدود شده است).
- شما دیسک های با ظرفیت بالاتر از 2 ترابایت را می توانید به ESXi 6.0 یا هاست های بالاتر و یا کلاسترهایی که چنین هاست هایی دارند جا به جا و یا clone کنید.
- شما می توانید تنها در vSphere 6.5 و بالاتر به یک دیسک با ظرفیت بالاتر از 2 ترابایت به صورت hot-add فضا اضافه کنید.
- ویژگی Fault Tolerance (تحمل خطا) پشتیبانی نشده است.
- کنترلرهای BusLogic Parallel پشتیبانی نشده اند.
- فرمت datastore باید به صورت یکی از موارد زیر باشد:
- VMFS5 و یا جدیدتر
- یک NFS volume روی یک سرور ذخیره سازی متصل شده به شبکه (NAS server)
- sSAN
- Virtual Flash Read Cache از هارد دیسک با حداکثر اندازه ی 16 ترابایت پشتیبانی می کند.
GPU
اگر یک هاست ESXi یک دیوایس گرافیک NVDIA GRID GPE داشته باشد، می توانید یک ماشین مجازی را طوری پیکربندی کنید که از تکنولوژی NVIDIA GRID virtual GPU (vGPU) استفاده کند.
دیوایس های گرافیکی NVIDIA GRID GPU طوری طراحی شده اند که عملیات پیچیده ی گرافیکی را بهینه سازی کنند و بدون ایجاد سربار برای CPU آن ها را با کارایی بالا اجرا کنند. NVIDIA GRID vGPU عملکرد گرافیکی بی نظیر، مقرون به صرفه و مقیاس پذیری را با به اشتراک گذاری یک GPU فیزیکی بین چندین ماشین مجازی به صورتی که گویا یک vGPU جداگانه به هر کدام متصل است ارائه می دهد.
برخی از الزامات لازم برای پشتیبانی از GPU مجازی عبارتند از:
- تایید کردن اینکه یک دیوایس گرافیکی NVIDIA GRID GPU با درایور مناسب روی هاست نصب شده است. داکیومنت های بروز شده ی vSphere را مشاهد کنید.
- تایید کردن اینکه ماشین مجازی با ESXi 6.0 و یا بالاتر سازگار است.
برای اضافه کردن GPU مراحل زیر را انجام دهید:
- روی ماشین مجازی در فهرست ماشین های مجازی راست کلیک کنید و گزینه ی Edit Settings را انتخاب کنید.
- در برگه (tab) Virtual Hardware، از منوی New device گزینه ی Shared PCI Device را انتخاب کنید.
- روی گزینه ی Add کلیک کنید.
- روی New PCI device کلیک کنید تا گزینه های آن ظاهر شوند، و NVIDIA GRID vGPU را از میان دیوایس هایی که به ماشین مجازی شما متصل هستند انتخاب کنید.
- یک پروفایل GPU را انتخاب کنید. پروفایل GPU نوع vGPU را مشخص می کند.
- روی گزینه ی Reserve all memory کلیک کنید.
- روی گزینه ی OK کلیک کنید.