دليل أمر dd في أوبونتو: التطبيق العملي واختبار سرعة القرص

نظرة عامة

يُعدّ الأمر dd أحد أقوى الأدوات المتاحة في بيئة لينكس للتعامل المباشر مع وسائط التخزين، سواء لإنشاء ملفات اختبار وهمية، أو أخذ نسخ احتياطية متكاملة، أو استنساخ الأقراص بدقة فائقة. نستعرض في هذا الدليل التطبيقي أهم المعاملات البرمجية الشائعة مثل bs وcount وstatus=progress وconv وoflag، مع تحليل وظائفها عملياً عبر تجارب مباشرة من سطر أوامر أوبونتو.

1. أساسيات استخدام dd: ضبط مسارات الدخل والخرج والتحكم في حجم الكتلة (bs وcount)

لتفادي أي تأثير غير مقصود على الملفات الأساسية أثناء التجربة، نبدأ بإنشاء بيئة عمل مؤقتة ومعزولة ثم الدخول إليها عبر تشغيل الأمر mkdir -p /tmp/dd_demo && cd /tmp/dd_demo.

إنشاء مجلد العمل المؤقت والانتقال إليه

تعتمد آلية dd على قراءة تدفقات البيانات وكتابتها على هيئة كتل محددة الحجم بين الملفات أو الأجهزة الفيزيائية مع إمكانية تحويلها أثناء النقل. على سبيل المثال، يمكن توليد ملف تجريبي باسم sample_10m.img بحجم إجمالي قدره 10 ميغابايت عن طريق سحب أصفار خام من /dev/zero وتكرار عملية كتابة كتلة بحجم 1 ميغابايت 10 مرات متتالية.
⚙️ [أهم الخيارات والمعاملات]

if=FILE : يحدد مسار المصدر (ملف أو قرص تخزين) المراد قراءة سيل البيانات منه.
of=FILE : يحدد مسار الوجهة المستهدفة لكتابة البيانات الناتجة إليها.
bs=BYTES : يعين حجم الكتلة الواحدة المنقولة في دورة القراءة والكتابة بالبايت.
count=N : يضبط العدد الإجمالي للكتل المطلوب استخراجها من المصدر.
status=LEVEL : يتحكم في مدى ظهور معلومات التقدم والبيانات الإحصائية في الطرفية (مثل progress).
conv=CONVS : يحدد عمليات التحويل أو معايير المزامنة المراد تطبيقها أثناء النسخ (مثل sync أو fdatasync).

توليد ملف وهمي بحجم 10 ميغابايت باستخدام أمر dd

للتحقق من سلامة بناء الملف الجديد ومطابقة حجمه على وسيط التخزين للقيمة المطلوبة، ننفذ الأمر ls -lh sample_10m.img.

التحقق من مواصفات وحجم الملف الناتج

2. متابعة معدل الإنجاز أثناء معالجة البيانات الكبيرة: خيار status=progress

لضمان التواجد داخل مسار التدريب السابق، نقوم بتنفيذ الأمر cd /tmp/dd_demo.

الرجوع إلى مسار الاختبار

عند التعامل مع مهام نقل ضخمة قد يستغرق الأمر زمناً ملحوظاً دون ردود فعل بصرية؛ لذا يوفر status=progress حلاً مثالياً بإظهار شريط لحظي يوضح كمية البيانات المكتوبة وسرعة النقل الحالية أثناء توليد ملف sample_100m.img بسعة 100 ميغابايت، وهي ميزة أساسية عند استنساخ محركات الأقراص بأكملها.

متابعة مؤشر التقدم الحي أثناء كتابة ملف بحجم 100 ميغابايت

للتأكد من استقرار الملف sample_100m.img واكتمال كتابته بالحجم المطلوب بدقة، نستعرض بياناته عبر الأمر ls -lh sample_100m.img.

معاينة الحجم النهائي للملف المتولد

3. معالجة بنية البيانات وضمان النقل الآمن: توظيف خيار conv

لإتمام التدريبات البرمجية، نتأكد من التواجد في مجلد العمل بتنفيذ cd /tmp/dd_demo.

الانتقال إلى مجلد العمليات

يتعدى دور dd مجرد النسخ المباشر؛ إذ يمكنه تحويل صيغ النصوص والمحتويات أثناء تدفقها. ننشئ ملفاً نصياً تجريبياً input.txt يحتوي على جملة باللغة الإنجليزية بحروف صغيرة عبر الأمر echo 'hello linux ubuntu dd command tutorial' > input.txt.

إنشاء ملف نصي اختباري بالأحرف الصغيرة

بتعيين المعامل conv=ucase، يقوم dd بتحويل الحروف اللاتينية الصغيرة تلقائياً إلى حروف كبيرة أثناء حفظها في الملف output_upper.txt. كما ندمج الخيار status=none لإخفاء الإحصائيات التلقائية والحصول على تنفيذ صامت دون تشويش.

تحويل الحروف إلى صيغة كبيرة وكتم مخرجات الحالة

للتأكد من نجاح عملية التحويل وصحة النص النهائي المكتوب بأحرف كبيرة كلياً، نستعرض محتوى الملف عبر الأمر cat output_upper.txt.

استعراض محتوى الملف بعد التحويل للأحرف الكبيرة

4. قياس سرعة الكتابة المباشرة على الأقراص: خيار oflag=direct ومسح المخلفات

للبدء في قياس معدل الإدخال والإخراج لوحدة التخزين، ننتقل إلى مجلد العمل عبر cd /tmp/dd_demo.

الدخول إلى مجلد الاختبار لقياس الأداء

غالباً ما تتدخل الذاكرة المخبأة للنظام (Buffer Cache) فتعطي قراءات مضللة لسرعة التخزين الحقيقية. لتجاوز ذلك، نستعين بالمعامل oflag=direct لفرض كتابة البيانات مباشرة على وسيط التخزين الفيزيائي لإنشاء ملف بحجم 50 ميغابايت باسم bench_test.img. يتيح إرفاق هذا الخيار مع status=progress قياس معدل الكتابة الفعلي لوحدة التخزين دون أي تداخل من الذاكرة العشوائية.

قياس سرعة الكتابة المباشرة على التخزين وتجاوز الكاش

بعد الانتهاء من كافة الاختبارات، نقوم بحذف مجلد التجارب المؤقت وجميع الملفات المنشأة لتوفير المساحة وتنظيف النظام عبر الأمر rm -rf /tmp/dd_demo.

حذف مجلد التجارب المؤقت بالكامل

تناول هذا الدليل استعراضاً عملياً لأبرز استخدامات أداة dd في نظام أوبونتو، شمل ذلك التحكم بأحجام الكتل، ومتابعة النقل اللحظي، وتحويل المحتوى، واختبار سرعة وحدات التخزين. وبالنظر إلى الطبيعة الحساسة لهذه الأداة وقدرتها على التعامل منخفض المستوى مع الأقراص، نؤكد دائماً على ضرورة التدقيق التام في مسار وسيط الخرج (of) قبل التنفيذ لتفادي الكتابة فوق أقراص أخرى بطريق الخطأ.