سؤال كيف تتحقق من الصحة البدنية لعصا USB في لينكس؟


كيف تتحقق من الحالة الصحية لعصا USB؟

كيف أعرف أن USB مكسور بشكل لا يمكن إصلاحه ، أو قابل للإصلاح؟


70
2018-01-08 23:26


الأصل


ارمها بعيدا. وقتك المستثمر هو أكثر تكلفة من شراء واحدة جديدة. - mailq
يجب أن أتفق معmailq. يمكنك شراء محرك أقراص أصبع مناسب 4 غيغابايت ل 2.00 دولار في هذه الأيام. - iglvzx
iglvzx حسنا لا يقول السؤال ، إذا كان هو واحد رخيص ، أو بعض + 32Gb تشفير واحد سريع ... - varesa


الأجوبة:


لا توجد طريقة للاستعلام عن شريحة ذاكرة USB لمعلمات تشبه SMART ؛ لست على علم بأية بطاقات ذاكرة تدعم القيام بذلك حتى من خلال البرمجيات المسجلة الملكية المتاحة للجمهور. أفضل ما يمكنك فعله هو التحقق من أنه يمكنك قراءة + الكتابة بنجاح على الجهاز بأكمله باستخدام badblocks.

https://en.wikipedia.org/wiki/Badblocks

أنت تريد تحديد أحد اختبارات الكتابة ، والتي ستقوم بمسح جميع البيانات الموجودة على العصا ؛ عمل نسخة احتياطية أولاً.

ابحث عن الجهاز من خلال النظر إليه dmesg بعد توصيل عصا USB ؛ سترى اسم الجهاز (على الأرجح sd_ ، أي sdc ، sdd ، إلخ) ومعلومات الشركة المصنعة. تأكد من أنك تستخدم الجهاز المناسب!

إذا تم تنسيق العصا مع نظام ملفات صالح ، فقد تضطر إلى ذلك unmount أولا.

مثال لبناء جملة ، لعصا USB تعداده / dev / sdz ، إخراج معلومات التقدم ، مع البيانات المدمرة كتابة اختبار وسجل خطأ مكتوب على usbstick.log:

sudo badblocks -w -s -o usbstick.log /dev/sdz

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


62
2018-01-09 03:58



badblocks هو على الارجح افضل خيار. التعليقات التي تقول "لا يستحق كل هذا العناء" يغيب تماما عن العديد من الحالات عندما تكون هناك حاجة ماسة للغاية (على سبيل المثال ، قد تكون الشركة قد اشترت سواقات محمولة ، وترغب في معرفة مدى سوء خداعهم ...) - Richlv
كما أشار في مقالة ويكيبيديا المرتبطة ، هناك أيضا e2fsck -c الذي يستخدم badblocks ويخفي بشكل فعال تلك badblocks من نظام الملفات ، وبالتالي تجنب الكتابة الفاسدة. ومع ذلك ، تجدر الإشارة إلى أنه إذا حصل القرص على عوائق جديدة ، فمن المحتمل أن يكون قد تعرض للتلف ، وأن البعض الآخر قد يتأخر في وقت لاحق ، مما يعني أن حياته تقصر ويجب عليك التفكير في استبدالها. - igorsantos07
أقترح إضافة علم -v وكذلك رؤية الخطأ في النوافذ الطرفية. (إذا سمحت بتشغيله طوال الليل على سبيل المثال. لم يكن ملف التسجيل مفيدًا لعرض سريع كم هو سيئ. - Tilo
BeeDee ، يجب أن نستخدم الجهاز كله أو مجرد بعض التقسيم أو لا يهم؟ أعني / dev / sdz أو / dev / sdz1؟ - Mr. P
@ Pisek يجب عليك استخدام الجهاز كله ، لأنه فشل الجهاز ، وليس مجرد التقسيم. - Hi-Angel


بواسطة [أوبونتو] خطأ في التحقق من محرك أقراص فلاش USB، وجدت في نهاية المطاف هذا ، والتي يمكن أن تكون مفيدة:

وصلت إلى المدونات مكافحة فلاش الاحتيال و SOSFakeFlash ، التي نوصي برمجيات H2testw (انظر هنا أو هنا) لاختبار ذكريات فلاش. لقد قمت بتنزيل H2testw ووجدت مشكلتين به: (1) هو لنظام التشغيل Windows فقط ، و (2) أنه ليس مفتوح المصدر. ومع ذلك ، كان مؤلفها طيبًا بما يكفي ليشمل ملفًا نصيًا يشرح ما يفعله ؛ هذه الصفحة تدور حول تنفيذ GPLv3 لهذه الخوارزمية.
  تنفيذي بسيط وموثوق به ، ولا أعرف بالضبط كيف يقارن F3 بـ H2testw بما أنني لم أقم بتشغيل H2testw. أسمي تنفيذ F3 ، ما هو اختصار لـ Fight Flash Fraud ، أو Fight Fake Flash.

إضافة بواسطةpbhj: F3 في repos Ubuntu. لديه جزءان ، يكتب f3write ملفات 1GB إلى الجهاز ومحاولات f3read لقراءتها بعد ذلك. يتم اختبار هذه الطريقة القدرة والقدرة على الكتابة وقراءة البيانات بشكل فعال.


18
2018-04-29 06:20



هل هناك أي ميزة ل F3 أكثر badblocks؟ - Zaz
Zaz كما أفهمها ، badblocks ليست مصممة للكشف عن محركات أقراص فلاش وهمية و قد لا تبلغ عن أي أخطاء بالنسبة لهم. - bmaupin


هذا يعتمد على وضع الفشل ، على ما أظن. انهم رخيصة لسبب ما.

وباعتبارك جهاز USB ، فإن مشاهدة الحافلة عبر مدير الجهاز في نظام Windows أو إخراج dmesg في نظام التشغيل Linux سوف يخبرك ما إذا كان الجهاز قد تم التعرف عليه على أنه موصِّل. وإذا لم يكن كذلك ، فإما أن تكون وحدة التحكم على اللوحة أو الاتصالات الفعلية مكسورة.

إذا تم التعرف على الجهاز بأنه متصل ، ولكن لا يتم التعرف عليه على أنه وحدة تحكم القرص (ولا أعرف كيف يمكن أن يحدث ذلك ، ولكن ...) ثم يتم اطلاق النار على وحدة تحكم.

إذا تم التعرف عليه كمحرك أقراص ، ولكن لا يمكنك تثبيته ، فقد تتمكن من إصلاحه عبر fdisk وإعادة كتابة جدول الأقسام ، ثم إنشاء نظام ملفات آخر.

إذا كنت تبحث عن ما يعادل ذكي.لن تجدها. وحدات تحكم Thumbdrive رخيصة. إنها عبارة عن مخزن للسلع ، وليس المقصود منها أن يكون لديها عمليات الفشل العادية والذكاء الذي تمتلكه المحركات الحديثة.


14
2018-01-08 23:33





تكون العديد من حالات الفشل كاملة أو تسمح لموقع واحد بدعم مواقع متعددة. لقد كتبت برنامجًا للقراءة والكتابة عشوائيًا صغيرًا يستخدم رقمًا أوليًا لمولد رقمي زائف عشوائي لكل من الأنماط والعناوين. تتراكم القراءات وراء ما يكتب من صفحات كافية للتأكد من أنني لا تختبر ذاكرة الوصول العشوائي ذاكرة التخزين المؤقت على النظام. لم يتم إضفاء طابع للمعلمات حتى الآن ، تم إعداده للتو لجهاز 64G على نظامي مع ذاكرة 8G ram. لا تتردد في انتقاد ، بارامترات ، وجعلها أكثر ذكاء.

هذا هو فحص قوي وأسرع من القيام به كل أسفل البايت إلى أعلى ، ولكن أيضا مولد مبادلة كبيرة (لفات كل شيء آخر تقريبا). أضع swapiness على 1 مؤقتًا وأصبح أبطأ ولكن أكثر احتمالا للتطبيقات الأخرى. أي نصائح حول كيفية ضبط مقابل swapout سيكون موضع تقدير أيضًا:

$ sudo ksh -c 'echo 1> / proc / sys / vm / swappiness'

$ cat mysrc/test64g.c

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main( int argc, char **argv ){

        long long int mask = 0xFFFFFFFF8L ;    // 64Gb word
        long long int stag = 8413257 ;  // 8G / 1021
        long long int inc = 1021L ;     // prime < 1024

        long long int w_addr = 0L ;
        long long int r_addr = 0L ;
        long long int w_ct = 0L ;
        long long int r_ct = 0L ;
        long long int w_patt = 0xFEDCBA9876543210L ;
        long long int r_patt = 0xFEDCBA9876543210L ;
        long long int r_buf ;
        int fd, ret ;

        if ( argc < 2
          || argv[1] == NULL
          || 0 > ( fd = open( argv[1], O_RDWR ))){
                printf( "Fatal: Cannot open file $1 for RW.\n" );
                exit( 1 );
        }

        while ( 1 ){
                if ( (off_t)-1 == lseek( fd, w_addr & mask, SEEK_SET )){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Seek failed" );
                        exit( 2 );
                }

                if ( 8 != ( ret = write( fd, (void*)&w_patt, 8 ))){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Write failed" );
                        exit( 3 );
                }

                w_ct++ ;
                w_addr += inc ;
                w_patt += inc ;

                if ( ( w_ct - r_ct ) < stag ){
                        continue ;
                }

                if ( (off_t)-1 == lseek( fd, r_addr & mask, SEEK_SET )){
                        printf( "Seek to %llX\n", r_addr & mask );
                        perror( "Fatal: Seek failed" );
                        exit( 4 );
                }

                if ( 8 != ( ret = read( fd, (void*)&r_buf, 8 ))){
                        printf( "Seek to %llX\n", w_addr & mask );
                        perror( "Fatal: Read failed" );
                        exit( 5 );
                }

                if ( ( ++r_ct & 0XFFFFF ) == 0 ){
                        printf( "Completed %lld writes, %lld reads.\n", w_ct, r_ct );
                }

                if ( r_buf != r_patt ){
                        printf( "Data miscompare on read # %lld at address %llX:\nWas: %llX\nS/B: %llX\n\n", r_ct, r_addr & mask, r_buf, r_patt );
                }

                r_addr += inc ;
                r_patt += inc ;
        }
}

1
2017-08-14 19:56



باستخدام طاقة من 2 مثل 1024 من شأنه أن يسمح بالتحقق الأفضل أو بتات العناوين عالية الميت ، على الرغم من التحقق فقط 8 بايت لكل قفزة. - David Pickett
نعم ، هذا سوف يغيب عن حالة بتات عالية القتلى. أيضا القيام بقراءة ويكتب في نفس المسار يمكن أن يغيب عن ذلك ، - user313114


محركات أقراص USB بدائية جدًا ، وليس هناك الكثير الذي يمكن أن يحدث خطأً فيها! عموما ، إذا كان يظهر كمحرك ويمكنك تنسيقه ثم يعمل. يمكنك محاولة إلقاء نظرة على النسخة المحمولة من CrystalDiskInfo لأن هذه أداة تحليل سريعة وخفيفة الوزن. عدد قليل جدا من USB sticks تقرير العودة S.M.A.R.T. المعلومات وما شابه ذلك على الرغم من.


0
2018-01-08 23:30



كمرجع ، إليك دليل معلومات قرص Crystal باللغة الإنجليزية: crystalmark.info/software/CrystalDiskInfo/manual-en - Matt Simmons


على طول الطريق إلى اليوم ، أثار هذا الموضوع بعض الأسئلة.

-كم سيستغرق هذا (ينطوي على مناقشة السماح لها بتشغيل بين عشية وضحاها).

أنا حاليا اختبار USB 3.0 128G سانديسك باستخدام sudo badblocks -w -s -oوهي متصلة ببطاقتي USB 3 / USBC PCIe في نظام Athlon 64x2 الأقدم. لذا ، يجب أن يكون USB3 إلى USB3 على PCIe سريعًا جدًا.

في ما يلي سطر أوامر وحدة التحكم في إنجاز بنسبة 33٪:

Testing with pattern 0xaa: 33.35% done, 49:47 elapsed. (0/0/0 errors)

ومرة أخرى في وقت لاحق:

Testing with pattern 0xaa: 54.10% done, 1:17:04 elapsed. (0/0/0 errors)

التالي جاء هذا الجزء:

Reading and comparing: 43.42% done, 2:23:44 elapsed. (0/0/0 errors)

تتكرر هذه العملية مع oxaa ، ثم 0x55 ، 0xff ، وأخيراً 0x00.

أعطى ArchLinux بيانًا غير مؤهل:

For some devices this will take a couple of days to complete.

ملحوظة: بدأ الاختبار حوالي الساعة 8:30 مساءً ، وكان الاختبار قد اكتمل قبل الساعة 8:45 من صباح اليوم التالي ، واستكماله 12 ساعة لحالتي.

-الاختبار المدمر ليس الطريقة الوحيدة الممكنة.

قدمت ويكيبيديا هذا البيان:

badblocks -nvs /dev/sdb This would check the drive "sdb" in non-destructive read-write mode and display progress by writing out the block numbers as they are checked.

تؤكد صفحة توزيبي الحالية الخاصة بي أن -n غير تدميري.

-n Use non-destructive read-write mode. By default only a non- destructive read-only test is done.

وأخيرا هذا لا يستحق كل هذا العناء. بيان.

بيان تلخيصي ، يستند إلى وضع مليارات من مواقع الذاكرة في شريحة فلاش ، الفشل عبارة عن خلية تمت كتابتها بالفعل ومحو عشرات الآلاف من المرات ، وهي الآن تفشل. وعندما يظهر اختبار واحد فشلت إحدى الخلايا ، تذكر أن كل ملف قمت بإضافته ومحوه يعمل على تشغيل هذه الدورات.

تكمن الفكرة هنا في أنه عند فشل إحدى الخلايا ، تصل العديد من الخلايا أيضًا إلى نفس نقطة الفشل. فشلت إحدى الخلايا اليوم ، ولكنك تستخدمها عادة لفترة أطول ، ثم تفشل 3 خلايا أخرى ، ثم تفشل أكثر من ذلك ، ثم 183 ، وقبل أن تعرفها ، تكون مجموعة الذاكرة مليئة بالبقع السيئة. لا يوجد سوى عدد كبير من الخلايا التي يمكن أن تموت قبل أن تبدأ السعة القابلة للاستخدام في السقوط ، وفي النهاية تنخفض بسرعة. كيف يمكنك معرفة المزيد من الخلايا الفاشلة؟ لذا ، فإن المشاركات هنا تحرس بياناتك بالقول أنه بمجرد أن تكون لديك خلية سيئة ، يتم تنفيذها كثيرًا في ما يتعلق بالتخزين الموثوق به. قد لا يزال استخدامك يوفر لك بضعة أشهر.

انها البيانات الخاصة بك.

HTH


0
2018-06-07 01:01