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