سؤال

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

أنا وجدت Linux قرص فشل محاكاة القرص مما يسمح بإنشاء واجهة يمكن تكوينها لإنشاء أخطاء عند قراءة بعض النطاقات من الكتل، ولكنها مخصصة ل 2.4 Linux Kernel ولم يتم تحديثها لمدة 2.6.

سيكون ما سيكون مثاليا هو برنامج تشغيل Losetup وحلقة حلقة سمح لك أيضا بتكوينه لإرجاع أخطاء القراءة عند محاولة القراءة من مجموعة معينة من الكتل.

هل كانت مفيدة؟

المحلول

انها ليست جهاز الاسترجاع الذي تبحث عنه، بل مخطط الجهاز بالأحرى.

يستخدم dmsetup لإنشاء جهاز مدعوم به هدف "الخطأ". سوف تظهر في /dev/mapper/<name>.

صفحة 7 من عرض Mapper الجهاز (PDF) لديه بالضبط ما تبحث عنه:

dmsetup create bad_disk << EOF
  0 8       linear /dev/sdb1 0
  8 1       error
  9 204791 linear /dev/sdb1 9
EOF

أو ترك sdb1 أجزاء TO ووضع هدف "الخطأ" كجهاز للكتل 0 - 8 (بدلا من sdb1) لجعل قرص خطأ نقي.

أنظر أيضا mapper الجهاز الملحق من "RHEL 5 إدارة وحدة التخزين المنطقية".

نصائح أخرى

يبدو أن إمكانيات حقن الأخطاء المدمجة Linux ستكون فكرة جيدة للاستخدام.

مقالات: http://blog.wpkg.org/2007/11/08/using-fault-injection/
مرجع: https://www.kernel.org/doc/documentation/fault-injection/fault-inject.txt.

أسهل طريقة اللعب مع أجهزة كتلة تستخدم NBD..

قم بتنزيل مصادر UserLand من git: //github.com/yoe/nbd.git. وتعديل nbd-server.c للفشل في القراءة أو الكتابة على أي مجالات تريد أن تفشل عليها، أو الفشل في نمط عشوائي محكم، أو أي شيء أساسا تريده.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top