???? المقدمة
في بيئات الاستضافة الحديثة، أصبحت أقراص NVMe SSD معيارًا للأداء العالي، لكن كثيرًا من مديري الأنظمة لا يدركون أن طريقة تعريف القرص داخل Proxmox VE يمكن أن تؤثر بنسبة كبيرة على سرعة الإدخال والإخراج (I/O Performance) خاصة في تطبيقات قواعد البيانات مثل MariaDB و PostgreSQL.
في هذا المقال سنتحدث عن الفرق بين واجهات VirtIO و SCSI (VirtIO-SCSI)، وكيف يمكن الانتقال بينهما بخطوات آمنة، مع مقارنة واقعية في الأداء على أقراص NVMe.
⚙️ ما الفرق بين VirtIO وSCSI في Proxmox؟
كلا الواجهتين تُستخدمان لتوصيل الأقراص الافتراضية داخل النظام، لكنهما تختلفان في التصميم وطريقة إدارة عمليات القراءة والكتابة:
| المعيار | VirtIO | VirtIO-SCSI |
|---|---|---|
| المحرك | virtio-blk | virtio-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) | Throughput | Latency |
|---|---|---|---|
| VirtIO | ~75K | ~1200 MB/s | 0.05 ms |
| VirtIO-SCSI + IOThread=1 + Discard=on | 100K – 120K | ~1600 MB/s | 0.035 ms |
???? النتيجة:
واجهة SCSI حسّنت الأداء بمعدل يتراوح بين 20% و40% في عمليات القراءة والكتابة العشوائية.
???? خطوات الانتقال من VirtIO إلى SCSI في Proxmox
⚠️ ملاحظة: يُنصح بأخذ Snapshot قبل تنفيذ أي تعديل.
1️⃣ التحقق من رقم الـ VM
افترض أن رقم الماكينة هو 113:
ستجد سطرًا مثل:
2️⃣ حذف تعريف VirtIO
3️⃣ إضافة القرص نفسه بصيغة SCSI
4️⃣ تفعيل وحدة تحكم SCSI المحسنة
5️⃣ التحقق من الإعداد
يجب أن ترى:
???? تحسين إعدادات ZFS لأقصى أداء
لتحقيق أفضل أداء مع قواعد البيانات، تأكد من تطبيق الإعدادات التالية على الـ Pool أو Dataset:
???? هذه الإعدادات تقلل من زمن الكتابة وتستفيد من إمكانيات SSD وذاكرة ARC بكفاءة.
???? الخلاصة
| الحالة | الأفضل |
|---|---|
| أقراص HDD أو بيئات اختبار صغيرة | VirtIO |
| أقراص SSD / NVMe / قواعد بيانات / ZFS | ✅ SCSI (virtio-scsi-single + iothread=1) |
تحويل الأقراص إلى SCSI لا يُحسن الأداء فقط، بل يضيف دعمًا أفضل لمزايا الأقراص الحديثة، ويجعل النظام أكثر استقرارًا تحت ضغط القراءة والكتابة الكثيف.
???? نصيحة للمديرين
لبيئات تحتوي على عدد كبير من الخوادم الافتراضية، يمكن كتابة سكربت يقوم بتحويل جميع أقراص VirtIO إلى SCSI دفعة واحدة مع الحفاظ على التعريفات القديمة.
✨ الخاتمة
إذا كنت تدير بيئة إنتاجية تعتمد على Proxmox + ZFS + NVMe، فإن استخدام VirtIO-SCSI مع IOThread وDiscard هو الطريق الأسرع والأكثر استقرارًا لتحقيق أداء قواعد بيانات مثالي.
هذه الخطوة الصغيرة يمكن أن ترفع إنتاجية نظامك بنسبة تصل إلى 40% دون أي تغيير في العتاد.