انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

اكتشاف وحل مشاكل بطء إدخال/إخراج القرص

اكتشاف وحل مشاكل بطء I/O القرص على خوادم Linux باستخدام iotop وiostat وتقنيات التحسين.

وقت القراءة: 14 دقيقة استكشاف الأخطاء وإصلاحها
قرصI/Oiotopiostatأداءlinuxتخزين
الكاتب
REXE Teknoloji Network & Security Team
المحرر
REXE Teknoloji Technical Editorial
أول نشر
آخر تحديث

مقدمة

بطء إدخال/إخراج القرص مشكلة شائعة تؤثر بشكل كبير على أداء الخادم. تتباطأ استعلامات قاعدة البيانات، وتتوقف تطبيقات الويب عن الاستجابة، ويبدو النظام بطيئاً بشكل عام. يغطي هذا الدليل كيفية اكتشاف وحل مشاكل بطء I/O القرص.

الأعراض

علامات نموذجية لبطء I/O القرص:

  • تتوقف الأوامر لفترة طويلة (خاصة ls وfind وقراءة/كتابة الملفات)
  • استعلامات قاعدة البيانات أبطأ بكثير من المعتاد
  • قيمة wa (انتظار I/O) مرتفعة في top أو htop
  • أخطاء انتهاء المهلة في سجلات التطبيقات

الخطوة 1: فحص انتظار I/O

hljs bash
# فحص انتظار I/O باستخدام top
top
# انظر إلى عمود 'wa' — فوق 5% يشير إلى مشكلة

# حالة I/O الفورية مع vmstat
vmstat 1 10

# إحصائيات القرص مع iostat
iostat -x 1 5
# %util فوق 80% يعني أن القرص مشبع

الخطوة 2: أي عملية تستخدم القرص؟

hljs bash
# مراقبة I/O القرص في الوقت الفعلي مع iotop
sudo apt install iotop -y
sudo iotop -o

# I/O لكل عملية مع pidstat
sudo apt install sysstat -y
pidstat -d 1 5

الخطوة 3: اختبار أداء القرص

hljs bash
# اختبار كتابة بسيط
dd if=/dev/zero of=/tmp/test_write bs=1M count=1024 oflag=direct

# اختبار شامل مع fio
sudo apt install fio -y
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread \
    --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 \
    --group_reporting --filename=/tmp/fio_test

rm /tmp/fio_test /tmp/test_write

الخطوة 4: فحص صحة القرص

hljs bash
# حالة SMART
sudo apt install smartmontools -y
sudo smartctl -a /dev/sda

# أخطاء القرص
dmesg | grep -i -E '(error|fail|bad|ata|scsi|disk)'

إذا كان Reallocated_Sector_Ct أو Pending_Sector_Count أكبر من 0، فالقرص على وشك الفشل. قم بالنسخ الاحتياطي فوراً.

الخطوة 5: تحسين نظام الملفات

hljs bash
# استخدام القرص
df -h

# تنظيف السجلات
sudo journalctl --vacuum-size=500M

# إضافة noatime إلى /etc/fstab
# UUID=xxx / ext4 defaults,noatime 0 1

# جدولة I/O لـ SSD
echo 'none' | sudo tee /sys/block/sda/queue/scheduler

الخطوة 6: استخدام tmpfs لتقليل I/O

hljs bash
# tmpfs لـ /tmp
echo 'tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=2G 0 0' | sudo tee -a /etc/fstab
sudo mount -a

الخلاصة

لحل مشاكل بطء I/O القرص، حدد أولاً باستخدام iotop وiostat أي عملية تضغط على القرص، ثم تحقق من صحة القرص باستخدام SMART. يمكن لتحسينات نظام الملفات (noatime، جدولة I/O) واستخدام tmpfs تحسين الأداء بشكل كبير. في حالة الأعطال المادية للقرص، قم بالنسخ الاحتياطي فوراً واتصل بـ دعم REXE.

الأسئلة الشائعة

ما هي القيمة الطبيعية لانتظار I/O؟

في الظروف الطبيعية، يجب أن يكون انتظار I/O أقل من 5%. 10-20% يتطلب الانتباه، وفوق 20% يشير إلى اختناق خطير في القرص.

هل يمكن أن تعاني أقراص SSD أيضاً من بطء I/O؟

نعم. يمكن لأقراص SSD أيضاً أن تعاني من بطء I/O: عندما يتجاوز استخدام القرص 90%، أو عند استخدام جدولة I/O خاطئة، أو عند استنفاد عمر الكتابة لـ SSD. تحقق باستخدام SMART.

هل خيار التحميل noatime آمن؟

نعم، آمن لمعظم التطبيقات. يمنع noatime تحديث 'وقت آخر وصول' عند كل وصول للملف، مما يقلل بشكل كبير من عمليات الكتابة على القرص.

هل أحتاج إلى إعادة تشغيل الخادم لإصلاح مشاكل I/O القرص؟

بشكل عام لا. تغييرات جدولة I/O وخيارات التحميل وإدارة العمليات لا تتطلب إعادة تشغيل. لتغييرات fstab، يكفي الأمر 'mount -a'.

مقالات ذات صلة

حركة الشبكةالداخل Gbpsالخارج Gbps