در دنیای مجازی سازها ویژگی وجود دارد به نام Nested Virtualization که امروزه بیشتر Hypervisor ها از این ویژگی پشتیبانی می کنند.
البته شرط لازم برای فعال کردن Nested Virtualization در Hypervisor وجود قابلیت پشتیبانی سخت افزاری CPU از مجازی سازی سخت افزاری می باشد که در CPU های Intel به آن Intel-VT و در CPU های AMD به آن AMD-V گفته می شود.
بطور خلاصه ویژگی Nested Virtualization این امکان را فراهم می کند که بتوانیم درون یک ماشین مجازی (Virtual Machine) که خودش بر روی یک Hypervisor سطح صفر یا همان L0 می باشد، یک Hypervisor دیگر نصب کنیم و باز بر روی آن ماشین های مجازی (VM) دیگری اجرا کنیم.
فعال سازی Nested Virtualization در VirtualBox:
VirtualBox یکی از نرم افزارهای مجازی ساز می باشد که بیشتر برای کاربران خانگی و دسکتاپ کاربرد دارد. برای فعال سازی قابلیت Nested Virtualization در VirtualBox باید پیش نیازهای زیر فراهم باشند.
- داشتن نسخه ی VirtualBox 6.1 به بالا
- داشتن CPU با پشتیبانی از قابلیت مجازی سازی سخت افزاری (Intel-VT / AMD-V)
ما فرض می کنیم که اکنون VirtualBox 6.1 نصب می باشد (برای آموزش نصب VirtualBox 6.1 می توانید مطلب «آموزش نصب مجازی ساز VirtualBox 6.1 در لینوکس فدورا ۳۱» را مطالعه کنید.) و یک ماشین مجازی با سیستم عامل لینوکس بر روی آن ایجاد شده است. در این مثال یک ماشین مجازی فدورا ۳۱ بر روی ویرچال باکس نصب شده است. اکنون برای بررسی فعال بودن Nested Virtualization از درون آن ماشین مجازی کافیست تا دستور زیر را بر روی آن اجرا کنید:
$ grep -E --color 'vmx|svm' /proc/cpuinfo
اگر در خروجی دستور گفته شده چیزی نمایش داده نشد بدان معناست که Nested Virtualization برای آن ماشین مجازی فعال نمی باشد. یک نمونه اجرای دستور گفته شده را در تصویر پایین مشاهده می کنید:
اکنون برای فعال سازی Nested Virtualization کافیست تا یک بار ماشین مجازی را خاموش کنید و سپس دستور زیر را بر روی سیستم خود اجرا کنید.
$ VBoxManage modifyvm <VM-Name> --nested-hw-virt on
نکته اینکه بجای <VM-Name> باید نام ماشین مجازی خود را بنویسید. برای لیست کردن ماشین های مجازی در مجازی ساز VirtualBox می توانید دستور زیر را اجرا کنید:
$ VBoxManage list vms
پس از اجرای دستور گفته شده ماشین مجازی را روشن کنید و یکبار دیگر دستور زیر را اجرا کنید:
$ grep -E --color 'vmx|svm' /proc/cpuinfo
یک نمونه از اجرای دستور گفته شده را در تصویر پایین مشاهده می کنید:
همانطور که در تصویر بالا مشاهده می کنید اکنون Nested VT-x/AMD-v بر روی ماشین مجازی fedora31 فعال شده است.
از این پس نیز می توانید Nested VT-x/AMD-v را از طریق رابط گرافیکی ویرچال باکس نیز فعال و یا غیرفعال کنید. برای اینکار مانند تصویر زیر ابتدا ماشین مجازی مورد نظر خود را انتخاب کنید و سپس به قسمت تنظیمات (Settings) آن بروید. اکنون از منوی سمت چپ گزینه ی System را انتخاب کنید و سپس از سربرگ Processor گزینه ی Enable Nested VT-x/AMD-V را جهت فعال کردن تیک بزنید و برای غیر فعال کردن تیک آن را بردارید.
امید است تا با استفاده از این مطلب اکنون توانایی فعال کردن قابلیت Nested VT-x / AMD-v را بر روی Oracle VM VirtualBox داشته باشید.