با درایورهای Virtio در لینوکس آشنا شوید

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

درایورهای 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 در هسته سیستم­‌عامل در حال اجرا اطمینان پیدا می‌کنیم.

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

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

مقالات مرتبط

راه‌حل شما اینجاست.

فقط کافیست شروع کنید

کشف کنید

در صفحه دمو با امکانات و راهکارهای ما بیشتر آشنا شوید و انتخابی آگاهانه داشته باشید.

مشاوره بگیرید

در یک جلسه رایگان، کارشناسان ما به شما کمک می‌کنند تا راهکار مناسب را انتخاب کنید.

شروع کنید

با اولین قدم، مسیر موفقیت را هموار کنید. با ما تماس بگیرید تا همراهتان باشیم.

Go to Top