أمر dd
هو أداة قوية ومتعددة الاستخدامات في لينكس يمكن استخدامها لمهام مختلفة، بما في ذلك نسخ البيانات الاحتياطية، ونسخ الأقراص، واختبار أداء الأقراص. في هذه المقالة، سوف نركز على كيفية استخدام dd
لاختبار أداء القراءة والكتابة على قرصك.
قبل أن نغوص في التفاصيل، لنفهم بإيجاز ما هو dd
وماذا يفعل.
يقف أمر dd
على “منسخ البيانات” أو “تحويل ونسخ”. إنه أداة منخفضة المستوى يمكنها نسخ البيانات من مكان إلى آخر، مع إجراء أي تحويلات أو تغييرات ضرورية أثناء سيرها. يتم استخدام الأمر بشكل شائع لمهام مثل إنشاء صور الأقراص، ونسخ الأقراص، وإنشاء أقراص USB قابلة للتشغيل.
اختبار أداء القرص باستخدام dd
لاختبار أداء القرص باستخدام dd
، سوف نقوم بإجراء اختبارين منفصلين: واحد للقراءة وواحد للكتابة. يتضمن كلا الاختبارين نسخ البيانات من مكان إلى آخر، وقياس الوقت المستغرق لإكمال العملية.
قبل أن نبدأ، من المهم أن نلاحظ أن هذه الاختبارات يمكن أن تكون مكثفة الموارد وقد تؤثر على أداء النظام. يوصى بتشغيل هذه الاختبارات عندما لا يكون النظام تحت حمل كبير، وتوخي الحذر عند إجراء الاختبارات على أنظمة الإنتاج.
اختبار أداء القراءة
لاختبار أداء القراءة على قرصك، سوف نستخدم dd
لنسخ البيانات من القرص إلى جهاز عدمي (/dev/null
). الجهاز العدمي هو ملف جهاز خاص يتجاهل جميع البيانات المكتوبة إليه، فيعمل بشكل أساسي كـ “ثقب أسود”.
هذا هو الأمر لاختبار أداء القراءة:
$ dd if=/path/to/file of=/dev/null bs=1M count=1024 status=progress
لنفصل الأمر:
dd
: يستدعي أمرdd
.if=/path/to/file
: يحدد ملف الإدخال (if
تعني “input file”). استبدل/path/to/file
بالمسار الفعلي للملف أو الجهاز الذي تريد اختباره. على سبيل المثال، لاختبار أداء القراءة لقرص مضغوط في/mnt/data
، ستستخدمif=/mnt/data/large_file.dat
.of=/dev/null
: يحدد ملف الإخراج (of
تعني “output file”). في هذه الحالة، نستخدم الجهاز العدمي (/dev/null
) كإخراج، مما يعني أن البيانات ستتم تجاهلها.bs=1M
: يُحدد حجم الكتلة إلى 1 ميغابايت. هذا يحدد كمية البيانات التي سيقرأها ويكتبهاdd
في كل عملية.count=1024
: يحدد عدد الكتل المراد نسخها. في هذه الحالة، نحن ننسخ 1024 كتلة، مما يؤدي إلى إجمالي 1 غيغابايت من البيانات يتم قراءتها من القرص.status=progress
: يعرض تقدم العملية، ويظهر عدد البايتات المنسوخة، ومعدل نقل البيانات، والوقت المنقضي.
عند تشغيل هذا الأمر، سيبدأ dd
في قراءة البيانات من الملف أو الجهاز المحدد وتجاهلها في الجهاز العدمي. ستعرض خيار status=progress
تقدم العملية، بما في ذلك معدل نقل البيانات، والذي يعكس أداء القراءة من قرصك.
اختبار أداء الكتابة
لاختبار أداء الكتابة على قرصك، سوف نستخدم dd
لنسخ البيانات من الجهاز العدمي (/dev/zero
) إلى ملف على القرص.
هذا هو الأمر لاختبار أداء الكتابة:
$ dd if=/dev/zero of=/path/to/output_file bs=1M count=1024 status=progress
لنفصل الأمر:
dd
: يستدعي أمرdd
.if=/dev/zero
: يحدد ملف الإدخال (if
تعني “input file”). في هذه الحالة، نستخدم الجهاز العدمي (/dev/zero
) كإدخال، مما يعني أنه سيولد تيارًا مستمرًا من البايتات الصفرية (الأصفار).of=/path/to/output_file
: يحدد ملف الإخراج (of
تعني “output file”). استبدل/path/to/output_file
بالمسار الفعلي للملف أو الجهاز الذي تريد كتابة البيانات إليه. على سبيل المثال، لاختبار أداء الكتابة على قرص مضغوط في/mnt/data
، ستستخدمof=/mnt/data/test_file.dat
.bs=1M
: يُحدد حجم الكتلة إلى 1 ميغابايت. هذا يحدد كمية البيانات التي سيقرأها ويكتبهاdd
في كل عملية.count=1024
: يحدد عدد الكتل المراد نسخها. في هذه الحالة، نحن ننسخ 1024 كتلة، مما يؤدي إلى إجمالي 1 غيغابايت من البيانات يتم كتابتها إلى القرص.status=progress
: يعرض تقدم العملية، ويظهر عدد البايتات المنسوخة، ومعدل نقل البيانات، والوقت المنقضي.
عند تشغيل هذا الأمر، سيبدأ dd
في توليد تيار مستمر من البايتات الصفرية من الجهاز العدمي (/dev/zero
) وكتابتها إلى ملف أو جهاز الإخراج المحدد. ستعرض خيار status=progress
تقدم العملية، بما في ذلك معدل نقل البيانات، والذي يعكس أداء الكتابة على قرصك.
تفسير النتائج
بعد تشغيل اختبارات أداء القراءة والكتابة، ستרى خرجًا مشابهًا لما يلي:
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.12345 s, 344 MB/s
أهم معلومات هنا هي معدل نقل البيانات، والذي يظهر في الجزء الأخير من الخرج (344 MB/s
في هذا المثال). هذا يمثل سرعة القراءة أو الكتابة على قرصك، مقاسة بالميغابايت في الثانية (MB/s).
كلما ارتفع معدل نقل البيانات، كان أداء القرص أفضل. ومع ذلك، تذكر أن أداء القرص يمكن أن يتأثر بعوامل مختلفة، مثل نوع القرص (HDD، SSD، NVMe)، وواجهة القرص (SATA، SAS، PCIe)، ونظام الملفات، وحمل النظام.
كما تجدر الإشارة إلى أن هذه الاختبارات تقيس أداء القراءة والكتابة التسلسلية لقرصك. بالنسبة لأحمال العمل التي تنطوي على قراءات وكتابات عشوائية، قد تحتاج إلى استخدام أدوات أو أوامر اختبار أداء مختلفة.
نصائح واعتبارات إضافية
- اختبر عدة مرات: من الممارسات الجيدة تشغيل الاختبارات عدة مرات وحساب معدل نقل البيانات المتوسط. هذا يساعد على مراعاة أي تقلبات أو اختلافات محتملة في أداء القرص.
- استخدم ملف أو جهاز كبير: عند اختبار أداء القراءة، تأكد من استخدام ملف أو جهاز كبير (على الأقل عدة غيغابايت). قد لا تعكس الملفات الصغيرة الأداء الحقيقي للقرص بدقة، لأنه يمكن تخزينها مؤقتًا في ذاكرة التخزين المؤقت للنظام.
- تجنب ذاكرة التخزين المؤقت للنظام: للحصول على نتائج دقيقة، من المهم تجنب ذاكرة التخزين المؤقت للنظام قدر الإمكان. يمكنك محاولة تشغيل أمر
sync
قبل الاختبارات لتفريغ ذواكر التخزين المؤقت للنظام، أو يمكنك استخدام خيارdirect
معdd
لتجاوز ذاكرة التخزين المؤقت تمامًا (conv=direct
). - تشغيل كمستخدم root: في بعض الحالات، قد تحتاج إلى تشغيل أمر
dd
كمستخدم root (باستخدامsudo
) للوصول إلى بعض الملفات أو الأجهزة. - توخ الحذر مع اختبارات الكتابة: عند تشغيل اختبارات أداء الكتابة، تأكد من الكتابة في مكان يمكن فيه الكتابة فوق البيانات أو حذفها بأمان. قد يؤدي الكتابة فوق البيانات المهمة عن غير قصد إلى فقدان البيانات.
- النظر في أدوات اختبار الأداء الأخرى: على الرغم من أن
dd
أداة بسيطة وفعالة لاختبار أداء الأقراص الأساسي، إلا أن هناك أدوات اختبار أداء أكثر تقدمًا مثلfio
، وiozone
، وbonnie++
. توفر هذه الأدوات خيارات اختبار أكثر شمولاً وقد تكون أكثر ملاءمة للسيناريوهات المعقدة.
الخلاصة
اختبار أداء الأقراص هو مهمة مهمة لضمان أداء النظام الأمثل، وخاصة في أحمال العمل التي تنطوي على استخدام كثيف للقرص. توفر أمر dd
وسيلة بسيطة ومباشرة لاختبار أداء القراءة والكتابة على أقراصك في أنظمة لينكس.
من خلال اتباع الخطوات الموضحة في هذا الدليل، يمكنك بسهولة إجراء اختبارات أداء أقراص أساسية وتفسير النتائج. تذكر أخذ عوامل مثل نوع القرص، والواجهة، وحمل العمل في الاعتبار عند تقييم الأداء، وتوخي الحذر دائمًا عند تشغيل اختبارات الكتابة لتجنب فقدان البيانات عن غير قصد.
على الرغم من أن dd
أداة قوية، من المهم ملاحظة أنها أداة منخفضة المستوى، وقد يؤدي سوء استخدامها إلى تلف البيانات أو فقدانها. تأكد دائمًا من مراجعة أوامرك بعناية وفهم آثارها قبل تنفيذها.
إذا كنت بحاجة إلى اختبارات أداء أقراص أكثر تقدمًا أو اختبار أداء، فكر في استكشاف أدوات اختبار الأداء المخصصة مثل fio
، و iozone
، و bonnie++
، والتي توفر ميزات وخيارات إضافية مصممة لتحليل أداء الأقراص بشكل شامل.