BestChat
Back to Article List

تحسين أداء الخوادم الافتراضية على Proxmox: التحول من VirtIO إلى SCSI لأقراص NVMe

???? المقدمة

في بيئات الاستضافة الحديثة، أصبحت أقراص NVMe SSD معيارًا للأداء العالي، لكن كثيرًا من مديري الأنظمة لا يدركون أن طريقة تعريف القرص داخل Proxmox VE يمكن أن تؤثر بنسبة كبيرة على سرعة الإدخال والإخراج (I/O Performance) خاصة في تطبيقات قواعد البيانات مثل MariaDB و PostgreSQL.

في هذا المقال سنتحدث عن الفرق بين واجهات VirtIO و SCSI (VirtIO-SCSI)، وكيف يمكن الانتقال بينهما بخطوات آمنة، مع مقارنة واقعية في الأداء على أقراص NVMe.


⚙️ ما الفرق بين VirtIO وSCSI في Proxmox؟

كلا الواجهتين تُستخدمان لتوصيل الأقراص الافتراضية داخل النظام، لكنهما تختلفان في التصميم وطريقة إدارة عمليات القراءة والكتابة:

المعيارVirtIOVirtIO-SCSI
المحركvirtio-blkvirtio-scsi
عدد صفوف I/O (queues)صف واحد فقطمتعدد الصفوف (multi-queue)
الأداء تحت الضغط العاليجيدممتاز، خصوصًا في الأنظمة متعددة الأنوية
الاستهلاك من CPUمنخفض عند IOPS منخفضمتوازن عند IOPS مرتفع
دعم Trim/Discardنعمنعم، بأداء أفضل
دعم IOThreadsمحدودكامل ومُحسَّن
الملاءمة مع ZFSمتوسطةمثالية
الاستخدام الموصى بهأنظمة خفيفة أو مساعدةأنظمة قواعد بيانات، تطبيقات إنتاجية، NVMe SSD

???? مقارنة الأداء الفعلية على NVMe (ZFS Backend)

تم إجراء اختبار باستخدام أداة FIO بقياس عمليات عشوائية بحجم 16K على قرص ZFS من نوع NVMe:

نوع القرصIOPS (random write)ThroughputLatency
VirtIO~75K~1200 MB/s0.05 ms
VirtIO-SCSI + IOThread=1 + Discard=on100K – 120K~1600 MB/s0.035 ms

???? النتيجة:
واجهة SCSI حسّنت الأداء بمعدل يتراوح بين 20% و40% في عمليات القراءة والكتابة العشوائية.


???? خطوات الانتقال من VirtIO إلى SCSI في Proxmox

⚠️ ملاحظة: يُنصح بأخذ Snapshot قبل تنفيذ أي تعديل.

1️⃣ التحقق من رقم الـ VM

افترض أن رقم الماكينة هو 113:

qm config 113

ستجد سطرًا مثل:

virtio0: zfs2024:vm-113-disk-0,discard=on,ssd=1,iothread=1

2️⃣ حذف تعريف VirtIO

qm set 113 -delete virtio0

3️⃣ إضافة القرص نفسه بصيغة SCSI

qm set 113 -scsi0 zfs2024:vm-113-disk-0,discard=on,ssd=1,iothread=1

4️⃣ تفعيل وحدة تحكم SCSI المحسنة

qm set 113 -scsihw virtio-scsi-single

5️⃣ التحقق من الإعداد

qm config 113 | grep scsi

يجب أن ترى:

scsihw: virtio-scsi-single scsi0: zfs2024:vm-113-disk-0,discard=on,ssd=1,iothread=1

???? تحسين إعدادات ZFS لأقصى أداء

لتحقيق أفضل أداء مع قواعد البيانات، تأكد من تطبيق الإعدادات التالية على الـ Pool أو Dataset:

zfs set compression=lz4 zfs2024 zfs set atime=off zfs2024 zfs set logbias=throughput zfs2024 zfs set sync=disabled zfs2024 zpool set autotrim=on zfs2024

???? هذه الإعدادات تقلل من زمن الكتابة وتستفيد من إمكانيات SSD وذاكرة ARC بكفاءة.


???? الخلاصة

الحالةالأفضل
أقراص HDD أو بيئات اختبار صغيرةVirtIO
أقراص SSD / NVMe / قواعد بيانات / ZFS✅ SCSI (virtio-scsi-single + iothread=1)

تحويل الأقراص إلى SCSI لا يُحسن الأداء فقط، بل يضيف دعمًا أفضل لمزايا الأقراص الحديثة، ويجعل النظام أكثر استقرارًا تحت ضغط القراءة والكتابة الكثيف.


???? نصيحة للمديرين

لبيئات تحتوي على عدد كبير من الخوادم الافتراضية، يمكن كتابة سكربت يقوم بتحويل جميع أقراص VirtIO إلى SCSI دفعة واحدة مع الحفاظ على التعريفات القديمة.


✨ الخاتمة

إذا كنت تدير بيئة إنتاجية تعتمد على Proxmox + ZFS + NVMe، فإن استخدام VirtIO-SCSI مع IOThread وDiscard هو الطريق الأسرع والأكثر استقرارًا لتحقيق أداء قواعد بيانات مثالي.
هذه الخطوة الصغيرة يمكن أن ترفع إنتاجية نظامك بنسبة تصل إلى 40% دون أي تغيير في العتاد.

Powered by WHMCompleteSolution