درایورهای Virtio در لینوکس چگونه عمل می‌کنند؟

در مجازی‌­سازی Full Virtualization امکان اجرای هر یک از سیستم­‌عامل­‌ها به ­صورت مجازی وجود دارد. با این حال در این نوع مجازی­‌سازی، Hypervisor از دستگاه­‌های فیزیکی واقعی مانند کارت شبکه RTL8139 استفاده می­‌کند.

استفاده از این دستگاه‌­ها، پیچیده و ناکارآمد تشخیص داده شده است. در مقابل در مجازی‌سازی Para Virtualization در KVM از یک استاندارد مجازی­‌سازی با عنوان Virtio استفاده می­‌شود.

Virtio یک لایه انتزاعی از دستگاه­‌های فیزیکی است و از آن به ­عنوان درایور دستگاه­‌های کارت شبکه و دیسک نام برده می­‌شود. در این استاندارد، درایور دستگاه میهمان از اجرا در محیط مجازی مطلع بوده و با Hypervisor همکاری می­‌کند.

این موضوع باعث می‌شود سیستم میهمان از کارت­‌های شبکه و دیسک­‌های با عملکرد بالا بهره‌مند شده و از مزایای عملکرد Para Virtualization استفاده کند.

درایورهای Virtio چه مواردی را شامل می‌شوند؟

درایورهای Virtio شامل موارد زیر هستند:

  • Block Device Driver: که در هسته سیستم­‌عامل با عنوان Vitrio_blk شناخته می­‌شوند.
  • Nic Driver: که در هسته سیستم‌عامل با عنوان Virtio_net شناخته می‌­شوند.

برای اجرای درایورهای Virtio در ماشین­‌های مجازی ابتدا باید یک هسته وجود داشته باشد تا از این درایورها پشتیبانی کند. شکل زیر ساختار درایورهای Virtio را نمایش می‌دهد.

Checking_Virtio_Drivers_In_Linux

سیستم­‌عامل CentOs

در ادامه از سیستم­‌عامل CentOs به­ عنوان یک نمونه جهت توصیف چگونگی بررسی پشتیبانی هسته سیستم­‌عامل از درایور Virtio استفاده می­‌شود.

مرحله 1: بررسی پشتیبانی هسته سیستم‌­عامل از درایور Virtio

جهت بررسی پشتیبانی هسته سیستم‌­عامل در حال اجرا از درایور Virtio از دستور زیر استفاده می‌شود:

grep -i virtio /boot/config-$(uname -r)

پاسخ برگشتی به شرح زیر است:

  • درصورتیکه مقدار CONFIG_VIRTIO_BLK و CONFIG_VIRTIO_NET در پاسخ برگشت داده شده برابر با m باشد، به مرحله 2 رفته و وجود درایورهای Virtio در سیستم فایل موقت را بررسی می­‌کنیم.
  • درصورتیکه مقدار CONFIG_VIRTIO_BLK و CONFIG_VIRTIO_NET در پاسخ برگشت داده شده برابر با y باشد، بدین معنی است که سیستم‌­عامل در حال اجرا، شامل درایورهای Virtio است.
  • درصورتیکه پارامترهای CONFIG_VIRTIO_BLK و CONFIG_VIRTIO_NET در پاسخ برگشت داده شده مشاهده نشود، بدین معنی است که سیستم­‌عامل در حال اجرا، از درایورهای Virtio پشتیبانی نمی‌­کند.

مرحله 2: بررسی وجود و یا عدم وجود درایورهای Virtio در سیستم فایل موقت

درصورتی که مقدار پارامترهای برگشتی CONFIG_VIRTIO_BLK و CONFIG_VIRTIO_NET در مرحله 1 برابر با m باشند، نیاز است وجود و یا عدم وجود درایورهای Virtio در پارامترهای Initramfs و یا Initrd موجود در سیستم فایل موقت بررسی شوند. بدین جهت دستورات زیر را مطابق با نوع سیستم‌­عامل اجرا می‌­کنیم:

  • دستور اجرایی در سیستم‌­عامل CentOs 6/CentOs 7/RedHat 6/RedHat 7:

lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

  • دستورات اجرایی در سیستم‌­عامل CentOs 5/RedHat 5:

mkdir -p /tmp/initrd && cd /tmp/initrdzcat /boot/initrd-$(uname -r).img | cpio -idmvfind . -name “virtio*”

  • دستور اجرایی در سیستم‌­عامل Debian/Ubuntu:

lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio

پاسخ برگشتی مورد انتظار به شرح زیر است:

  • درصورتی­که نتیجه‌ای مانند بالا برگردانده شود، بدین معنی است که پارامتر Initramfs شامل درایورهای virtio_blk، ko، virtio_pci.ko و virtio_ring.ko است.
  • درصورتی­که پارامترهای initramfs یا initrd شامل درایورهای Virtio نباشند به مرحله 3 رفته و سیستم فایل موقت را مجدداً تنظیم می­‌کنیم.

مرحله 3:  تنظیم و پیکربندی مجدد سیستم فایل موقت

در صورتی که پس از اجرای دستورات در مرحله 2 ، پارامترهای Initramfs و یا Initrd شامل درایورهای Virtio نباشند، نیاز به تنظیم مجدد سیستم فایل موقت می‌باشد. این کار جهت اطمینان از وجود و یا عدم وجود درایورهای Virtio است. بدین جهت دستورات زیر را مطابق با نوع سیستم‌­عامل اجرا می‌کنیم:

  • دستورات اجرایی در سیستم­‌عامل CentOs 6/CentOs 7/RedHat 6/RedHat 7:

cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bakmkinitrd -f –with=virtio_blk –with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)

  • دستورات اجرایی در سیستم­‌عامل CentOs 5/RedHat 5:

cp /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bakmkinitrd -f –with=virtio_blk –with=virtio_pci /boot/initrd-$(uname -r).img $(uname -r)

  • دستورات اجرایی در سیستم‌­عامل Debian/Ubuntu:

echo -e “virtio_pcinvirtio_blk” >> /etc/initramfs-tools/modulesupdate-initramfs  -u

پس از اعمال پیکربندی و تنظیمات بالا مجدداً دستورات موجود در مرحله 2 را انجام داده و از وجود و یا عدم وجود درایورهای Virtio در هسته سیستم­‌عامل در حال اجرا اطمینان پیدا می‌کنیم.

به اشتراک بگذارید.

بیشتر بخوانیم

مقالات مرتبط

5/5 - (1 امتیاز)
1400-4-10 14:10:22 +00:00

Leave A Comment

Go to Top