بطور خلاصه ویژگی Nested Virtualization این امکان را فراهم می کند که بتوانیم درون یک ماشین مجازی (Virtual Machine) که خودش بر روی یک Hypervisor سطح صفر یا همان L0 می باشد، یک Hypervisor دیگر نصب کنیم و باز بر روی آن ماشین های مجازی (VM) دیگری اجرا کنیم.
جهت اطلاعات بیشتر در مورد Nested Virtualization می توانید مطلب «ویژگی Nested Virtualization در دنیای مجازی سازها» را مطالعه کنید. برای بررسی اینکه سیستم از ویژگی Nested Virtualization پشتیبانی می کند روش های گوناگونی وجود دارد که بر اساس مدل CPU متفاوت می باشد.
برای CPU های Intel فایل زیر را بررسی کنید:
/sys/module/kvm_intel/parameters/nested
برای CPU های AMD فایل زیر را بررسی کنید:
/sys/module/kvm_amd/parameters/nested
اگر در خروجی 1 یا Y را مشاهده کردید به این معنی می باشد که nested virtualization پشتیبانی می شود. اگر در خروجی 0 یا N مشاهده کردید به این معنی می باشد که nested virtualization پشتیبانی نمی شود.
یک نمونه خروجی بر روی CPU Intel را در تصویر پایین مشاهده می کنید:
فعال کردن nested virtualization:
برای فعال کردن nested virtualization در Intel processors کارهای زیر را به ترتیب انجام دهید.
۱- تمام VM هایی که در حالت اجرایی (روشن) هستند را Shut down کنید و ماژول kvm_probe را unload کنید:
# modprobe -r kvm_intel
۲- ویژگی nested را با استفاده از دستور زیر فعال کنید:
# modprobe kvm_intel nested=1
۳- اکنون ویژگی nested تا زمانی که سیستم reboot نشود فعال است. برای ذخیره ی تغییرات به صورت دائمی فایل زیر را باز کنید:
# vi /etc/modprobe.d/kvm.conf
اکنون خط زیر را به فایل اضافه و ذخیره کنید:
options kvm_intel nested=1
برای فعال کردن nested virtualization در AMD processors کارهای زیر را به ترتیب انجام دهید.
۱- تمام VM هایی که در حالت اجرایی (روشن) هستند را Shut down کنید و ماژول kvm_amd را unload کنید:
# modprobe -r kvm_amd
۲- ویژگی nested را با استفاده از دستور زیر فعال کنید:
# modprobe kvm_amd nested=1
۳- اکنون ویژگی nested تا زمانی که سیستم reboot نشود فعال است. برای ذخیره ی تغییرات به صورت دائمی فایل زیر را باز کنید:
# vi /etc/modprobe.d/kvm.conf
اکنون خط زیر را به فایل اضافه و ذخیره کنید:
options kvm_amd nested=1
پیکربندی nested virtualization در virt-manager :
اگر بخواهید که VM مورد نظر خود از ویژگی nested virtualization استفاده کند. کارهای زیر را به ترتیب انجام دهید.
۱- برنامه virt-manager که یک نرم افزار دسکتاپی جهت کنترل و مدیریت KVM Server می باشد را اجرا کنید. بر روی VM مورد نظر خود که قصد دارید تا nested virtualization را برای آن فعال کنید دو بار کلیک کنید. اکنون در پنجره ی VM بر روی آیکون Show virtual hardware details کلیک کنید.
۲- از منوی کناری گزینه ی CPUs را انتخاب کنید و سپس در قسمت Configuration و در جلوی قسمت Model می توانید host-passthrough را تایپ کنید و یا اینکه گزینه ی Copy host CPU configuration را تیک دار کنید که در واقع مقدار host-model را در قسمت Model خواهد نوشت.
۳- اکنون برای ذخیره ی تغییرات روی دکمه ی Apply کلیک کنید.
یک نمونه از کارهای گفته شده را در تصویر پایین مشاهده می کنید:
نکته اینکه استفاده از host-passthrough برای استفاده ی عمومی پیشنهاد نمی شود و بهتر است فقط برای اهداف nested virtualization استفاده شود.
آزمایش nested virtualization:
همانطور که در ابتدای مطلب گفته شد، روش های گوناگونی برای بررسی nested virtualization وجود دارد. اکنون ما فرض می کنیم که شما یک VM با سیستم عامل لینوکس فدورا دارید که nested virtualization را برای آن فعال کرده اید. برای آزمایش nested virtualization کافیست به VM مورد نظر login کنید. اکنون مجازی ساز KVM را به همراه بسته های مورد نیاز نصب کنید:
# dnf group install virtualization
اکنون برای بررسی اینکه مجازی ساز به درستی بر روی VM نصب شده است، کافیست تا دستور زیر را اجرا کنید:
# virt-host-validate
یک نمونه از خروجی دستور گفته شده را در تصویر پایین مشاهده می کنید:
امید است تا از این مطلب استفاده لازم را برده باشید.