লিনাক্সে ইউএসবি স্টিকের শারীরিক স্বাস্থ্য কীভাবে পরীক্ষা করবেন?


85

কীভাবে একটি ইউএসবি স্টিকের স্বাস্থ্যের স্থিতি পরীক্ষা করবেন?

আমি কীভাবে জানতে পারি যে কোনও ইউএসবি মেরামত ছাড়াই ভেঙে গেছে, বা মেরামতযোগ্য?


12
এটা বর্জন. আপনার বিনিয়োগকৃত সময়টি একটি নতুন কেনার চেয়ে ব্যয়বহুল।
মেলকিউ

1
আমাকে @ মেলেকের সাথে একমত হতে হবে। আপনি আজকাল GB 2.00 এর জন্য একটি শালীন 4 জিবি থাম্ব ড্রাইভ কিনতে পারেন।
iglvzx

17
@iglvzx ঠিক আছে, প্রশ্নটি বলে না, এটি কোনও সস্তা, বা কিছু +
32 জিবি

উত্তর:


69

স্মার্ট-জাতীয় পরামিতিগুলির জন্য কোনও ইউএসবি মেমরি স্টিকের অনুসন্ধানের কোনও উপায় নেই; আমি এমন কোনও মেমরি লাঠি সম্পর্কে অবগত নই যা সর্বজনীনভাবে উপলভ্য মালিকানাধীন সফ্টওয়্যার এর মাধ্যমে এমনটি সমর্থন করে। আপনি যা করতে পারেন তা হ'ল আপনি ব্যবহার করে পুরো ডিভাইসে সফলভাবে + লিখতে পারেন কিনা তা পরীক্ষা করা badblocks

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

আপনি একটি রাইটিং পরীক্ষার নির্দিষ্ট করতে চান, যা স্টিকের সমস্ত ডেটা মুছবে; প্রথমে একটি ব্যাকআপ তৈরি করুন।

dmesgইউএসবি স্টিকটি প্লাগ ইন করার পরে ডিভাইসটি সন্ধান করুন ; আপনি একটি ডিভাইসের নাম (সম্ভবত সম্ভবত sd_, অর্থাত্ এসডিসি, এসডিডি, ইত্যাদি) এবং প্রস্তুতকারকের তথ্য দেখতে পাবেন। আপনি সঠিক ডিভাইসটি ব্যবহার করছেন তা নিশ্চিত করুন!

যদি কাঠিটি কোনও বৈধ ফাইল সিস্টেমের সাথে ফর্ম্যাট হয় unmountতবে আপনার প্রথমে এটি থাকতে পারে ।

ডেটা- ডিস্ট্রাকটিভ রাইটিং টেস্ট এবং ইউএসবিস্টিক.লগে লিখিত ত্রুটি লগ সহ, ইউএসবি স্টিকের / dev / sdz হিসাবে গণনা করা, অগ্রগতির তথ্য আউটপুট প্রদানের জন্য সিনট্যাক্সের উদাহরণ :

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

আপনার লাঠিটি পেরিয়ে যাওয়ার পরে ধরে নিয়ে পুনরায় বিভাজন এবং পুনরায় ফর্ম্যাট করতে হবে; এই পরীক্ষা লাঠি সবকিছু মুছে ফেলবে। কোনও ব্যর্থতা ডিভাইসের মেমরি নিয়ামকের একটি ব্যর্থতা নির্দেশ করে বা এটি ব্যর্থ ব্লকগুলিকে পুনর্নির্মাণের জন্য অতিরিক্ত ব্লকগুলির বাইরে চলে গেছে। সেক্ষেত্রে ডিভাইসের কোনও ক্ষেত্রেই বিশ্বাস করা যায় না।


21
ব্যাডব্লক সম্ভবত সেরা বিকল্প। "এটি মূল্যহীন" বলে মন্তব্য করা মন্তব্যগুলি সম্পূর্ণরূপে মিস করে যখন এটি খুব প্রয়োজন হতে পারে (উদাহরণস্বরূপ, কোনও সংস্থা মার্চেন্ডাইজ ফ্ল্যাশড্রাইভ কিনে থাকতে পারে এবং তারা কীভাবে খারাপভাবে
কেলেঙ্কারী হয়েছে

2
লিঙ্কযুক্ত উইকিপিডিয়া নিবন্ধে ইশারা করা আছে, এমনও রয়েছে e2fsck -cযে badblocksফাইল ব্যাবস্থা থেকে এই ব্যাডব্লকগুলি কার্যকরভাবে এবং কার্যকরভাবে লুকায়, যাতে দুর্নীতিগ্রস্থ লেখাগুলি এড়ানো যায়। তবে এটি লক্ষ করা উচিত যে, যদি ডিস্কটি নতুন ব্যাডব্লকগুলি পেয়ে থাকে তবে সম্ভবত এটি ক্ষতিগ্রস্থ হচ্ছে এবং নতুনগুলি পরে দেখা দিতে পারে যার অর্থ এর জীবন সংক্ষিপ্ত হচ্ছে এবং আপনি এটি প্রতিস্থাপনের বিষয়টি বিবেচনা করা উচিত।
igorsantos07

1
আমি -v পতাকা যুক্ত করার পরামর্শ দিই পাশাপাশি টার্মিনাল উইন্ডোতে ত্রুটিটি দেখতে পাচ্ছি। (যদি আপনি উদাহরণস্বরূপ রাতারাতি এটি
লগফাইলে

@ বিডি, আমাদের কি পুরো ডিভাইসটি ব্যবহার করা উচিত বা কিছু বিভাজন বা এটি কোনও ব্যাপার নয়? মানে / dev / sdz বা / dev / sdz1?
মিঃ পি

1
@ পিসেক আপনার পুরো ডিভাইসটি ব্যবহার করা উচিত, কারণ এটি ডিভাইসটি শুধুমাত্র একটি পার্টিশন নয়, ব্যর্থ।
হাই-এঞ্জেল

21

[উবুন্টু] মাধ্যমে ত্রুটি ইউএসবি ফ্ল্যাশ ড্রাইভ পরীক্ষা করে দেখুন , অবশেষে এটি আমি পেয়েছি, যা সহায়ক হতে পারে:

আমি ফাইট ফ্ল্যাশ জালিয়াতি এবং এসওএসফেকফ্লেশ ব্লগগুলিতে পৌঁছেছি, যা ফ্ল্যাশ স্মৃতি পরীক্ষা করার জন্য এইচ 2 টেস্টউ (এখানে বা এখানে দেখুন) সফটওয়্যারটি পুনরায় পেশ করে। আমি এইচ 2 টেস্টউ ডাউনলোড করেছি এবং এর সাথে দুটি সমস্যা পেয়েছি: (1) এটি কেবল উইন্ডোজের জন্য, এবং (2) এটি মুক্ত উত্স নয়। যাইহোক, এর লেখক এমন একটি টেক্সট ফাইল অন্তর্ভুক্ত করার জন্য যথেষ্ট দয়া করেছিলেন যা এটি কী তা ব্যাখ্যা করে; এই পৃষ্ঠাটি আমার সেই এলগরিদমটির GPLv3 বাস্তবায়ন সম্পর্কে।
আমার বাস্তবায়ন সহজ এবং নির্ভরযোগ্য এবং আমি জানি না ঠিক কীভাবে F3 H2testw এর সাথে তুলনা করে যেহেতু আমি কখনও H2testw চালিয়েছি না। আমি আমার বাস্তবায়ন এফ 3, ফাইট ফ্ল্যাশ জালিয়াতির জন্য সংক্ষিপ্ত বা ফেক ফ্ল্যাশকে ফাইট বলি।

@Pbhj দ্বারা অ্যাডেনডাম: F3 উবুন্টু ভাণ্ডারে রয়েছে। এর দুটি অংশ রয়েছে, f3writ ডিভাইসে 1 জিবি ফাইল লিখে এবং f3read পরে সেগুলি পড়ার চেষ্টা করে। এইভাবে ডেটা লেখার এবং কার্যকরভাবে পড়ার ক্ষমতা এবং ক্ষমতা পরীক্ষা করা হয়।


4
এফ 3 ওভারের কোনও সুবিধা আছে কি badblocks?
জাজ


14

এটি ব্যর্থতা মোডের উপর নির্ভর করে, আমি মনে করি। তারা একটি কারণে সস্তা।

একটি ইউএসবি ডিভাইস হিসাবে, উইন্ডোতে ডিভাইস ম্যানেজারের মাধ্যমে বাস বা লিনাক্সে ডেমসগের আউটপুট আপনাকে দেখাবে যে ডিভাইসটি প্লাগ ইন করা হচ্ছে কিনা তা স্বীকৃত কিনা তা যদি না হয়, তবে বোর্ডে থাকা নিয়ামক বা শারীরিক সংযোগগুলি ভেঙেগেছে.

যদি ডিভাইসটি প্লাগ ইন করা হিসাবে স্বীকৃত হয় তবে এটি কোনও ডিস্ক নিয়ামক হিসাবে চিহ্নিত না হয় (এবং আমি জানি না কীভাবে এটি ঘটতে পারে তবে ...) তবে নিয়ন্ত্রণকারীটি গুলি করা হয় is

যদি এটি একটি ডিস্ক ড্রাইভ হিসাবে স্বীকৃত হয় তবে আপনি এটি মাউন্ট করতে পারবেন না, আপনি এটি fdisk এর মাধ্যমে মেরামত করতে এবং পার্টিশন টেবিলটি পুনরায় লিখতে সক্ষম হতে পারেন, তারপরে অন্য একটি ফাইল সিস্টেম তৈরি করুন।

আপনি যদি স্মার্টের সমতুল্য সন্ধান করেন তবে আপনি এটি পাবেন না। থাম্বড্রাইভ নিয়ন্ত্রণকারীরা সস্তা cheap এগুলি পণ্য স্টোরেজ এবং আধুনিক ড্রাইভগুলির যে সাধারণ ব্যর্থতা এবং বুদ্ধি রয়েছে তা বোঝাতে নয়।


2

আজকের পথে, এই থ্রেডটি কিছু প্রশ্ন উত্থাপন করেছিল।

- এটি কতক্ষণ সময় নেবে (এটি রাতারাতি চালিয়ে যাওয়ার আলোচনার দ্বারা বোঝানো হয়েছে)।

আমি বর্তমানে একটি ইউএসবি 3.0 128 জি সানডিস্কটি ব্যবহার করে পরীক্ষা করছি sudo badblocks -w -s -o, এটি আমার ইউএসবি 3 / ইউএসবিসি পিসিআই কার্ডের সাথে পুরানো অ্যাথলন 64৪x2 এর সাথে সংযুক্ত। সুতরাং, পিসিআই-তে ইউএসবি 3 ইউএসবি 3 বেশ দ্রুত হওয়া উচিত।

এখানে 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)

এই প্রক্রিয়াটি অক্সা, তারপরে 0x55, 0xff এবং অবশেষে 0x00 দিয়ে পুনরাবৃত্তি করে।

আর্কলিনাক্স একটি অযোগ্য বিবৃতি দিয়েছেন:

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

নোট: পরের দিন সকাল সাড়ে ৮ টার দিকে টেস্টিং শুরু হয়েছিল, পরদিন সকাল ৮ টা ৪৫ মিনিটের আগে পরীক্ষাটি শেষ হয়েছিল, আমার পরিস্থিতির জন্য প্রায় 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 Use non-destructive read-write mode. By default only a non- destructive read-only test is done.

এবং অবশেষে যে এটি মূল্য নয়। বিবৃতি।

ফ্ল্যাশ চিপে কোটি কোটি স্মৃতি সাইটের পরিস্থিতির উপর ভিত্তি করে একটি সংক্ষিপ্ত বিবৃতি, একটি ব্যর্থতা এমন একটি ঘর যা ইতিমধ্যে কয়েক হাজার বার লেখা এবং মুছে ফেলা হয়েছে এবং এখন ব্যর্থ হচ্ছে। এবং যখন একটি পরীক্ষা দেখায় একটি ঘর ব্যর্থ হয়েছে, মনে রাখবেন যে আপনি যুক্ত এবং মুছে ফেলা প্রতিটি ফাইল সেই চক্রটি চালাচ্ছে।

এখানে ধারণাটি হ'ল যখন 1 টি সেল ব্যর্থ হয়, তখন আরও অনেক কোষ একই ব্যর্থতার পয়েন্টে পৌঁছায়। একটি কক্ষটি আজ ব্যর্থ হয়েছে, তবে আপনি এটিকে কিছু সময়ের জন্য স্বাভাবিকভাবে ব্যবহার করেন, তারপরে আরও 3 টি কোষ ব্যর্থ হয়, তারপরে আরও 24 টি ব্যর্থ হয়, তারপরে 183 এবং আপনি এটি জানার আগে, মেমরি অ্যারেটি খারাপ দাগগুলিতে ছাঁটাই হয়ে যায়। কেবলমাত্র এতগুলি কোষ রয়েছে যা আপনার ব্যবহারযোগ্য ক্ষমতা হ্রাস শুরু হওয়ার আগে অবশেষে দ্রুত হ্রাস পেতে পারে। আপনি কীভাবে জানবেন যে আরও কোষ ব্যর্থ হচ্ছে? সুতরাং, এখানে পোস্টগুলি একবার আপনার খারাপ সেল হয়ে যাওয়ার পরে আপনার ডেটা সুরক্ষিত করে চলেছে, আপনি বিশ্বাসযোগ্য স্টোরেজ সম্পর্কিত অনেকটাই সম্পন্ন করেছেন। আপনার ব্যবহার আপনাকে এখনও কয়েক মাস সময় দিতে পারে।

এটা আপনার তথ্য।

আছে HTH


1

অনেকগুলি ব্যর্থতা হয় সম্পূর্ণ হয় বা এক স্থানকে একাধিক অবস্থানকে সমর্থন করার অনুমতি দেয়। আমি কিছুটা এলোমেলো লেখার জন্য পঠন প্রোগ্রাম লিখেছিলাম যা সিউডো-এলোমেলো সংখ্যা জেনারেটরের জন্য নিদর্শন এবং ঠিকানা উভয়ের জন্য একটি প্রাথমিক সংখ্যা ব্যবহার করে। আমি সিস্টেমে র‌্যাম ক্যাশে পরীক্ষা করছি না তা নিশ্চিত করার জন্য পর্যাপ্ত পৃষ্ঠাগুলি দ্বারা রাইডগুলি লেখার পিছনে স্তব্ধ হয়ে যায়। এটি এখনও প্যারামিটারাইজড হয়নি, কেবল 8G র্যাম সহ আমার সিস্টেমে একটি 64G ডিভাইস সেট আপ করুন। সমালোচনা, প্যারামিটারাইজেশন, বুদ্ধিমান করে তুলতে নির্দ্বিধায়।

এটি একটি শক্তিশালী চেক এবং প্রতিটি বাইট নীচে থেকে উপরে করার চেয়ে দ্রুত, তবে এটি একটি দুর্দান্ত অদলবদ জেনারেটর (প্রায় সব কিছু রোল করে দেয়)। আমি অস্থায়ীভাবে 1 এ স্বাচ্ছন্দ্যতা রেখেছি এবং এটি অন্যান্য অ্যাপ্লিকেশনগুলিতে ধীর হলেও বেশি সহনীয় হয়ে উঠেছে। অদলবদলের বিরুদ্ধে টিউন করার জন্য যে কোনও টিপসও প্রশংসিত হবে:

$ sudo ksh -c 'প্রতিধ্বনি 1> / proc / sys / vm / অদলবদল'

$ 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 ;
        }
}

1024 এর মতো 2 পাওয়ারের ইনক ব্যবহার করা আরও ভাল পরীক্ষা বা মৃত উচ্চ অ্যাড্রেস বিটগুলিকে মঞ্জুরি দেয়, যদিও কেবল প্রতি হ্যাপে 8 বাইট পরীক্ষা করা হয়।
ডেভিড পিকেট

হ্যাঁ, এটি মৃত উচ্চ বিটের ক্ষেত্রে মিস করবে। একই পাসে পড়া এবং লেখার
কাজটিও

0

ইউএসবি ড্রাইভগুলি বেশ প্রারম্ভিক, এমন কোনও কিছুই নেই যা তাদের ভুল হতে পারে! সাধারণত, যদি এটি কোনও ড্রাইভ হিসাবে প্রদর্শিত হয় এবং আপনি এটি ফর্ম্যাট করতে পারেন তবে এটি কার্যকর হয়। ক্রিস্টালডিস্কইনফোর পোর্টেবল সংস্করণটি একবার দেখার চেষ্টা করতে পারেন কারণ এটি একটি দ্রুত হালকা ওজন বিশ্লেষণকারী সরঞ্জাম। খুব কম সংখ্যক ইউএসবি স্টিক স্মার্ট তথ্য এবং এই জাতীয় মত ফিরে আসে।


1
রেফারেন্সের জন্য, এখানে ইংরেজিতে ক্রিস্টাল ডিস্ক তথ্য ম্যানুয়াল: crystalmark.info/software/CrystalDiskInfo/manual-en
ম্যাট সিমন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.