লিনাক্স ব্যবহার করে এসডি কার্ডের স্ট্রেস টেস্টিং


19

আমি এখানে আমার উত্তরটির যুক্তি এবং / বা সত্যতার বিষয়ে গতকাল কারও সাথে সামান্য বিতর্কে জড়িয়ে পড়েছি , ভদ্রতার (জিবি +) আকারের এসডি কার্ডে fs মেটা-ডেটা লগইন করা এবং বজায় রাখা কার্ডটি পরিধানের পক্ষে যথেষ্ট পরিমাণে কখনই তাত্পর্যপূর্ণ হতে পারে না could একটি যুক্তিসঙ্গত পরিমাণ সময় (বছর এবং বছর) আউট। পাল্টা-যুক্তির বক্তব্যটি দেখে মনে হয়েছিল যে এসডি কার্ড পরা লোকদের অনলাইনে প্রচুর গল্প রয়েছে বলে আমার অবশ্যই ভুল হতে হবে।

যেহেতু 24/7 এ বাকি rw রুট ফাইল সিস্টেমগুলি রয়েছে সেগুলিতে আমার এসডি কার্ডগুলির সাথে ডিভাইস রয়েছে, তাই আমি নিজের সন্তুষ্টির আগে ভিত্তিটি পরীক্ষা করেছিলাম। আমি এই পরীক্ষাটি কিছুটা টুইট করেছি, পুনরাবৃত্তি করেছি (একই কার্ডটি ব্যবহার করে, বাস্তবে) এবং এটি এখানে উপস্থাপন করছি। আমার কাছে দুটি কেন্দ্রীয় প্রশ্ন হ'ল:

  1. কার্ডটি নষ্ট করার চেষ্টা করার জন্য আমি যে পদ্ধতিটি ব্যবহার করেছি তা কি মনে রাখা উচিত, অল্প পরিমাণে ডেটা অবিচ্ছিন্নভাবে পুনরায় লেখার প্রভাবগুলি পুনরুত্পাদন করার উদ্দেশ্যে ?
  2. কার্ডটি যাচাই করতে আমি যে পদ্ধতিটি ব্যবহার করেছি তা কি এখনও কার্যকর ছিল?

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

[এটি এমনও হতে পারে যে এসডি কার্ডগুলি কোনও ধরণের স্মার্ট বাফারিং বা ক্যাশে ব্যবহার করে, যেমন একই জায়গায় বার বার লেখার জন্য বাফার / ক্যাশে দেওয়া হবে যেখানে পরতে কম ঝুঁকির আশঙ্কা রয়েছে। আমি এর কোথাও এর কোনও ইঙ্গিত পাইনি, তবে এসইউতে আমি এটি সম্পর্কে জিজ্ঞাসা করছি ]

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

হার্ডওয়্যার থেকে ফ্লাশ করার জন্য, আমি পসআইএক্স লাইব্রেরি কলটিতে নির্ভর করেছি fdatasync():

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>

// Compile std=gnu99

#define BLOCK 1 << 16

int main (void) {
    int in = open ("/dev/urandom", O_RDONLY);
    if (in < 0) {
        fprintf(stderr,"open in %s", strerror(errno));
        exit(0);
    }

    int out = open("/dev/sdb1", O_WRONLY);
    if (out < 0) {
        fprintf(stderr,"open out %s", strerror(errno));
        exit(0);
    }

    fprintf(stderr,"BEGIN\n");

    char buffer[BLOCK];
    unsigned int count = 0;
    int thousands = 0;
    for (unsigned int i = 1; i !=0; i++) {
        ssize_t r = read(in, buffer, BLOCK);
        ssize_t w = write(out, buffer, BLOCK);
        if (r != w) {
            fprintf(stderr, "r %d w %d\n", r, w);
            if (errno) {
                fprintf(stderr,"%s\n", strerror(errno));
                break;
            }
        }
        if (fdatasync(out) != 0) {
            fprintf(stderr,"Sync failed: %s\n", strerror(errno));
            break;
        }
        count++;
        if (!(count % 1000)) {
            thousands++;
            fprintf(stderr,"%d000...\n", thousands);
        }
        lseek(out, 0, SEEK_SET);
    }
    fprintf(stderr,"TOTAL %lu\n", count);
    close(in);
    close(out);

    return 0;
}                                 

পার্টিশনের শুরুতে 2 মিলিয়ন + লেখার আগ পর্যন্ত আমি এটি আট ঘন্টা /dev/sdb1চালিয়েছি। 1 আমি কেবল সহজেই ব্যবহার করতে পারতাম /dev/sdb(কাঁচা ডিভাইস এবং পার্টিশনটি নয়) তবে এটি কী পার্থক্য করতে পারে তা আমি দেখতে পাচ্ছি না।

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

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

[নীচে কনট্রা জেসন সি'র মন্তব্য, এইভাবে ব্যাডব্লকগুলি ব্যবহার করা সম্পর্কে ভুল বা মিথ্যা কিছুই নেই। যদিও এটি এসডি কার্ডগুলির প্রকৃতির কারণে খারাপ ব্লকগুলি চিহ্নিত করার জন্য কার্যকর হবে না, তবে এটি -bএবং -cস্যুইচগুলি ব্যবহার করে একটি স্বেচ্ছাসেবীর আকারের ধ্বংসাত্মক পঠন-লিখন পরীক্ষা করা ভাল, যেখানে সংশোধিত পরীক্ষাটি গেছে (আমার নিজের উত্তর দেখুন )। কার্ডের নিয়ামক দ্বারা কোনও পরিমাণ যাদু বা ক্যাশিং কোনও পরীক্ষা বোকা বানাতে পারে না যার মাধ্যমে বেশ কয়েকটি মেগাবাইট ডেটা হার্ডওয়ারে লেখা যায় এবং আবার সঠিকভাবে পড়তে পারে। জেসনের অন্যান্য মন্তব্যগুলি ভুল প্রবন্ধের উপর ভিত্তি করে মনে হচ্ছে - আইএমও একটি ইচ্ছাকৃত মন্তব্য , যার কারণেই আমি তর্ক করতে বিরত হই নি। মাথাটা উপরে উঠার সাথে সাথে আমি এটি পাঠকের উপর ছেড়ে দিয়েছি কী বোঝায় এবং কোনটি বোঝায় না ।]

1 কার্ডটি পুরানো 4 জিবি স্যান্ডিস্ক কার্ড ছিল (এতে কোনও "শ্রেণি" নম্বর নেই) যা আমি সবে ব্যবহার করেছি। আবারও, মনে রাখবেন যে এটি 2 মিলিয়ন নয় আক্ষরিকভাবে একই শারীরিক স্থানে লিখেছেন; "প্রথম ব্লক" সমতলকরণের কারণে পরীক্ষার সময় নিয়ন্ত্রক নিয়মিতভাবে সরানো হবে, শব্দটি হিসাবে এই শব্দটি পরিধানকে সমতল করে দিয়েছে।


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

/dev/sdb1বনাম হিসাবে /dev/sdbএটি আপনার প্রোগ্রামের জন্য কোনও তাত্পর্যপূর্ণ করে না , তবে কী কী পার্থক্য করে (নীচে বর্ণিত হয়েছে) তা হ'ল আপনার ডিভাইসে অব্যবহৃত ব্লকগুলির অবস্থাটি আপনার পরীক্ষায় অজানা এবং অ্যাকাউন্টহীন নয় এবং আপনি পুরো ডিভাইসটি পূরণ না করে (উদাঃ) /dev/sdb) প্রথমে ডেটা সহ, স্পেস ওয়্যার সমতলকরণের পরিমাণের সাথে কাজ করতে হবে তা একটি প্রধান পরিবর্তনশীল। সুতরাং ডিভাইস বনাম পার্টিশনটি আপনার পরীক্ষার জন্য অপ্রাসঙ্গিক, এটি বেশিরভাগ ক্ষেত্রে ত্রুটিযুক্ত পরীক্ষার ফলস্বরূপ, সঠিকভাবে ডেটা দিয়ে ডিভাইসটি পূরণ করার পরে, পার্টিশনটি কোনও উপলভ্য বিকল্প হতে পারে না (যদি আপনি পরে বিন্যাস না করেন)।
জেসন সি

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

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

1
আমি সেই নির্দিষ্ট কার্ডটি সম্পর্কে জানি না, তবে তাদের বেশিরভাগই কমপক্ষে ইতিমধ্যে কিছুটা হলেও মরে are এই ছেলেরা কমপক্ষে একটি ব্র্যান্ডের এসডি কার্ডে মাইক্রোকন্ট্রোলারটিকে হ্যাক করেছে: বনিস্টুডিওস.com / blog /? p=3554 তারা এই বিষয়টিতে যে ঘন্টা-টক করেছেন তা বেশ ভাল ছিল।
মাইকসার্ভ

উত্তর:


11

আমার মনে হয় একটি এসডি কার্ডের পরীক্ষা করা 2 টি সমস্যা হিসাবে দেওয়া সাধারণ সমস্যাযুক্ত:

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

  2. বিভিন্ন প্রযুক্তি (এমএলসি বনাম এসএলসি) এটির সাথে যে অন্যান্য সমস্যা আমি দেখছি তা হ'ল প্রযুক্তিগুলির পার্থক্য। এসএসডির ধরণের এসএসডি আমি আশা করি এমএলসি বিভিন্ন প্রকারের তুলনায় দীর্ঘতর জীবনকাল থাকতে পারে। এছাড়াও এমএলসিতে অনেক কঠোর সহনশীলতা রয়েছে যা আপনাকে কেবল এসএলসি'র সাথে মোকাবেলা করতে হবে না, বা কমপক্ষে তারা এভাবে ব্যর্থ হওয়ার ক্ষেত্রে আরও বেশি সহনশীল।

    • এমএলসি - মাল্টি লেভেল সেল
    • এসএলসি - একক স্তরের ঘর

এমএলসি'র সমস্যাটি হ'ল একটি প্রদত্ত সেলটি একাধিক মান সংরক্ষণ করতে পারে, বিটগুলি ভোল্টেজ ব্যবহার করে মূলত কেবল একটি শারীরিক + 5 ভি বা 0 ভি হওয়ার পরিবর্তে স্ট্যাক করা হয়, সুতরাং এটি তাদের এসএলসি থেকে অনেক বেশি ব্যর্থতার হারের সম্ভাবনা নিয়ে যেতে পারে সমতুল্য.

আয়ু

আমি এই লিঙ্কটি পেয়েছি যা হার্ডওয়ার কতক্ষণ টিকে থাকতে পারে সে সম্পর্কে কিছুটা আলোচনা করে। এর শিরোনাম: আপনার এসএসডিগুলি জানুন - এসএলসি বনাম এমএলসি

এসএলসি

এসএলসি এসএসডিএস বেশিরভাগ অংশের জন্য, গড় অনুমান অনুসারে 49 বছর থেকে 149 বছরের মধ্যে যে কোনও জায়গায় বাস করার জন্য গণনা করা যেতে পারে। মেমোরাইট টেস্টিং দৈনিক গড়ে 100 গিগাবাইট লেখার সাথে 200 বছরেরও বেশি সময় ধরে লেখার ধৈর্যশীল জীবনকালকে 128 জিবি এসএসডি যাচাই করতে পারে।

MLC

এমিলসি ডিজাইনটি এখানেই পড়ে। এখনও পর্যন্ত কাউকে মুক্তি দেওয়া হয়নি। এমএলসি দিয়ে কী ধরণের আয়ু নিশ্চিত করা হয়েছে তা সত্যই কেউ পরীক্ষা করেনি, এটি যথেষ্ট কম হবে। আমি বেশ কয়েকটি বিভিন্ন বিশ্বাস পেয়েছি যা এসএলসি ডিজাইনের পক্ষে গড়পড়তা 10 থেকে 1 জীবনকাল পর্যন্ত। একটি রক্ষণশীল অনুমান যে প্রতিটি নির্মাতার নিয়ন্ত্রণকারীর মধ্যে 'পরা স্তর সমীকরণের' অগ্রগতির উপর নির্ভর করে সর্বাধিক আজীবন অনুমান 7 থেকে 10 বছরের মধ্যে আসবে।

তুলনা

লেখার চক্রের সাথে তুলনা আঁকতে, একটি স্ল্যাকের জীবনকাল ১০০,০০০ লেখার চক্রের এমএলসি এর সাথে তুলনা করে সম্পূর্ণ লেখার চক্র থাকবে। ব্যবহৃত 'পোশাক সমতলকরণ' এর নকশার উপর নির্ভর করে এটি উল্লেখযোগ্য পরিমাণে বাড়তে পারে।


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

ডাব্লুআরটি # 2, গুণমান এবং প্রযুক্তি অবশ্যই একটি কার্ড অন্যটির থেকে আলাদা করবে। আমার বক্তব্যটি হ'ল, রান-অফ-দ্য মিল সস্তারো সানডিস্ক কার্ডটি এখনও প্রতিদিনের চেয়ে বেশি দীর্ঘতর হবে কারণ যদি প্রতিদিন লিখিত তথ্যের পরিমাণ তুলনামূলকভাবে কম হয়।
স্বর্ণলোকস

@ গোল্ডিলোকস - ঠিক আছে, ঠিক আছে, আমাকে এ সম্পর্কে মারবেন না। 8-), তাই আপনি যা বলছেন তা যদি আমি এই পরিমাণে প্রচুর পরিমাণে ডেটা লিখি যে আমি সমীকরণ থেকে পরিধানের স্তরকে কার্যকরভাবে মুছে ফেলি এবং এর উপর ব্যাডব্লকগুলি চালাই, তবে কি পরিধান সমতলকরণের কার্যকারিতাটি দেখাতে যথেষ্ট?
slm

1
@ গোল্ডিলকস - আমি কি কেবল পান্ডোরার বাক্সটি খুললাম?
slm

1
(উদাহরণস্বরূপ: আপনি যদি কোনও এসডি কার্ডে কোনও চিত্র লিখে ক্লোন করে থাকেন এবং fstrimপরে / নাও করতে পারেন তবে আপনি গতিশীল পরিধান সমতলকরণ সম্পূর্ণরূপে অক্ষম করেছেন [স্থির পরিধানের সমতলকরণ সহ একটি গ্রাহক গ্রেড এসডি কার্ড সন্ধান করতে আপনাকে কঠোর চাপ দেওয়া হবে]] প্রতিটি পৃষ্ঠাকে ব্যবহৃত হিসাবে চিহ্নিত করা হচ্ছে))
জেসন সি

6

আপনার পরীক্ষা নিয়ে বেশ কয়েকটি সমস্যা রয়েছে, কিছু অস্পষ্ট, কিছু নয়। এটি আপনার লক্ষ্যের উপরও নির্ভর করে। দুটি সূক্ষ্ম, ধরণের ধরণের সমস্যাগুলি হ'ল:

  • আপনি যে অঞ্চলে লিখছেন সেখান থেকে আপনি পড়ছেন না, আপনার পাঠ্য পরীক্ষা কার্যকরভাবে করা হচ্ছে, তখন কিছুই করে না (নিয়ন্ত্রক বিরক্তিকর সংশোধন না পড়লে এমন ক্ষেত্রে পৃষ্ঠাটি মাঝে মধ্যে অন্য কোথাও পাঠানো হতে পারে, তবে এটি এখনও করে আপনার পরীক্ষা প্রভাবিত না)।
  • আপনি ধরে নিলেন (এবং এটি সম্ভবত নিশ্চিত তবে গ্যারান্টিযুক্ত নয়) যে কোনও খারাপ ব্লকে একটি পঠন / লিখন সনাক্ত করা যায় এবং নিয়ামক দ্বারা প্রতিবেদন করা হয় - আপনি ডেটা লিখতে চান, এটি আবার পড়তে চান এবং গ্যারান্টিযুক্ত পরীক্ষার জন্য এটি তুলনা করতে চান।

তবে এগুলি তর্কিতভাবে পেডেন্টিক। আরও গুরুতর হ'ল:

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

লেয়ারিং পরুন : মূল বিষয়টি হ'ল পোশাক পরানো আপনার পরীক্ষার একটি প্রধান পরিবর্তনশীল। এটি নিয়ামকের উপর (সাধারণত) ঘটে এবং যে কোনও ক্ষেত্রে এটি স্বচ্ছ এমনকি সরাসরি ডিভাইসেও + পড়ুন / লিখুন। আপনার উদাহরণস্বরূপ, আপনি আসলে পরিধান সমতলকরণের অবস্থা জানেন না (বিশেষত, সম্প্রতি ট্রিম কমান্ডগুলি বিনামূল্যে ব্লকগুলিতে জারি করা হয়েছে?) ...

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

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

... অন্য কথায়, এমন পরিধানের স্তর বিশদ রয়েছে যা আপনার জানার কোনও উপায় নেই এবং অবশ্যই নিয়ন্ত্রণের কোনও উপায় নেই - বিশেষত গতিশীল পরিধান সমতলকরণ ব্যবহৃত হচ্ছে কি না, স্থির পরিধান সমতলকরণ ব্যবহৃত হচ্ছে কি না এবং পরিধান সমতলকরণের জন্য ডিভাইসে সংরক্ষিত পরিমাণের পরিমাণ (যা নিয়ন্ত্রণকারী [বা কিছু ক্ষেত্রে ড্রাইভার যেমন এম-সিস্টেমস পুরানো ডিস্কঅনকিপ]] এর আগে দৃশ্যমান নয়)।

এসএলসি / এমএলসি: এসএলসি বনাম এমএলসি হিসাবে, এটি আপনি যে সীমাটি দেখতে আশা করেছিলেন তার উপর এটির প্রত্যক্ষ প্রভাব রয়েছে, তবে সাধারণ পরিধান সমতলকরণ পদ্ধতি এবং পরীক্ষার পদ্ধতি উভয়ের জন্য একই। অনেক বিক্রেতারা তাদের সস্তার ভোক্তা পণ্যগুলির জন্য তাদের ডিভাইসগুলি এসএলসি বা এমএলসি কিনা তা প্রকাশ করেন না, যদিও যে কোনও ফ্ল্যাশ ড্রাইভ যা প্রতি পৃষ্ঠায় 100k + চক্রের সীমা দাবি করে সেগুলি সম্ভবত এসএলসি (সরলীকৃত ট্রেডঅফ হ'ল এসএলসি = সহনশীলতা, এমএলসি = ঘনত্ব)।

ক্যাচিং: ক্যাশে হিসাবে, এটি কিছুটা iffy। ওএস স্তরে, সাধারণ ক্ষেত্রে অবশ্যই, fsync / fdatasync গ্যারান্টি দেয় না যে ডেটা আসলে লেখা আছে। যাইহোক, আমি মনে করি এটি নিরাপদ যে এটি (বা কমপক্ষে নিয়ামক এটি করার প্রতিশ্রুতি রেখেছেন যেমন লেখাকে ক্যাশে গ্রাস করা হবে না), কারণ অপসারণযোগ্য ড্রাইভগুলি সাধারণত সাধারণ ব্যবহারের প্যাটার্নের জন্য ডিজাইন করা হয়েছে "বের করুন" (আনমাউন্ট> সিঙ্ক) এরপরে (পাওয়ার কাটা) সরান। যদিও আমরা নিশ্চিতভাবে জানি না, একটি শিক্ষিত অনুমান বলে যে এটি সিঙ্ক গ্যারান্টি দেয় যে রচনাটি পুরোপুরি ঘটবে, বিশেষত লেখায় -> সিঙ্ক -> পুনরায় পড়ুন (যদি তা না হয় তবে ড্রাইভগুলি অবিশ্বাস্য হবে ইজেক্ট পরে)। 'সিঙ্ক' এর বাইরে আর কোনও আদেশ নেই যা ইজেক্টে ইস্যু করা যেতে পারে।

নিয়ামকটিতে যে কোনও কিছুই সম্ভব, তবে উপরের অনুমানের মধ্যে এই ধারণাও অন্তর্ভুক্ত থাকে যে নিয়ামক কমপক্ষে কোনও সিঙ্কের পরে ডেটা হ্রাস ঝুঁকির পক্ষে যথেষ্ট "জটিল" কিছু করে না। ধারণা করা যায় যে নিয়ামক, বলা যেতে পারে, বাফার এবং গোষ্ঠী একই তথ্য পুনরায় লেখার জন্য (সীমিত পরিমাণে) ডেটা লিখতে বা লিখতে পারে না। নীচের প্রোগ্রামে, আমরা ডেটা দুটি পৃথক ব্লকের মধ্যে বিকল্প এবং একটি যুক্তিসঙ্গত নিয়ামক ক্যাচিং প্রক্রিয়া পরাস্ত করার জন্য বিশেষত রিড ফিরে আগে একটি সিঙ্ক করা। তবুও, অবশ্যই কোনও গ্যারান্টি নেই এবং জানার কোনও উপায় নেই তবে আমরা এই ডিভাইসগুলির সাধারণ ব্যবহার এবং বুদ্ধিমান / সাধারণ ক্যাশেিং পদ্ধতির ভিত্তিতে যুক্তিসঙ্গত অনুমানগুলি তৈরি করতে পারি।

পরীক্ষামূলক:

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

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

dd if=/dev/urandom bs=512k of=/dev/sdb conv=fsync oflag=sync

আপনি যদি অগ্রগতি বারের ধরণ হন:

pv -pterb -s <device_size> /dev/urandom | dd bs=512k of=/dev/sdb conv=fsync oflag=sync

সম্পাদনা করুন: 4 এমবি মুছে ফেলা কার্ডগুলির জন্য, দ্রুত লেখার জন্য এটি চেষ্টা করুন:

dd if=/dev/urandom bs=4M of=/dev/sdb conv=fsync oflag=direct,sync iflag=fullblock

এর পরে, তারপর, আপনি একটি চক্র পরীক্ষা প্রোগ্রাম নিম্নরূপ লিখতে পারেন, ব্যবহার করে O_DIRECTএবং O_SYNC(এবং এর সম্ভবত ভীতু, অপ্রয়োজনীয় ব্যবহার fsync()) অনেক অপারেটিং সিস্টেম বাফার উপলব্ধ হিসাবে কাটা প্রয়োজন এবং সম্ভব হিসাবে ছবি থেকে বেরিয়ে ক্যাশে এবং, তাত্ত্বিকভাবে, নিয়ামক সরাসরি লেখার এবং অপারেশনটি শেষ হয়ে যাওয়ার খবর পাওয়া পর্যন্ত অপেক্ষা করুন:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <cstdlib>
#include <cstdio>
#include <cstring>

using namespace std;

static const int BLOCK_SIZE = 512;
static const int ALIGNMENT = 512;
static const int OFFSET = 1024 * ALIGNMENT; // 1024 is arbitrary


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

    if (argc != 2) {
        fprintf(stderr, "usage: %s device\n", argv[0]);
        return 1;
    }

    int d = open(argv[1], O_RDWR | O_DIRECT | O_SYNC);
    if (d == -1) {
        perror(argv[1]);
        return 1;
    }

    char *block[2], *buffer;
    int index = 0, count = -1;

    // buffers must be aligned for O_DIRECT.
    posix_memalign((void **)&(block[0]), ALIGNMENT, BLOCK_SIZE);
    posix_memalign((void **)&(block[1]), ALIGNMENT, BLOCK_SIZE);
    posix_memalign((void **)&buffer, ALIGNMENT, BLOCK_SIZE);

    // different contents in each buffer
    memset(block[0], 0x55, BLOCK_SIZE);
    memset(block[1], 0xAA, BLOCK_SIZE);

    while (true) {

        // alternate buffers
        index = 1 - index;

        if (!((++ count) % 100)) {
            printf("%i\n", count);
            fflush(stdout);
        }

        // write -> sync -> read back -> compare
        if (lseek(d, OFFSET, SEEK_SET) == (off_t)-1)
            perror("lseek(w)");
        else if (write(d, block[index], BLOCK_SIZE) != BLOCK_SIZE)
            perror("write");
        else if (fsync(d))
            perror("fsync");
        else if (lseek(d, OFFSET, SEEK_SET) == (off_t)-1)
            perror("lseek(r)");
        else if (read(d, buffer, BLOCK_SIZE) != BLOCK_SIZE)
            perror("read");
        else if (memcmp(block[index], buffer, BLOCK_SIZE))
            fprintf(stderr, "memcmp: test failed\n");
        else
            continue;

        printf("failed after %i successful cycles.\n", count);
        break;

    }

}

মনে রাখবেন যে এর জন্য O_DIRECT, বাফারগুলি অবশ্যই উপযুক্তভাবে প্রান্তিক করা উচিত। 512-বাইট সীমানা সাধারণত পর্যাপ্ত। আপনি এর সাথে সংকলন করতে পারেন:

g++ -O0 test.cpp -o test

যোগ -D_POSIX_C_SOURCE=200112Lপ্রয়োজনে।

তারপরে, ডিভাইসটি উপরের মত পুরোপুরি পূরণ করার পরে, এটি কেবল রাতের উপর দিয়ে চলতে দিন:

./test /dev/sdb

512 বাইট, সারিবদ্ধ লেখাগুলি ভাল, এটি আপনাকে মুছে ফেলা এবং পুনর্লিখনের একটি সম্পূর্ণ পৃষ্ঠা দেবে। বৃহত্তর ব্লকের আকার ব্যবহার করে আপনি পরীক্ষার উল্লেখযোগ্যভাবে গতি বাড়িয়ে তুলতে পারেন তবে কংক্রিটের ফলাফলগুলিতে পৌঁছানো জটিল হয়ে পড়ে।

আমি বর্তমানে গতকাল রাস্তার পাশে যে 4 জিবি পিএনওয়াই থাম্ব ড্রাইভ পেয়েছিলাম তার চেয়ে বেশি বীট আপ খুঁজছি (যা একটি http://www3.pny.com/4GB- মাইক্রো-স্লিক- অ্যাটাচ-- - এর বাকী ছিল বলে মনে হয়েছিল) -পর্পল- P2990C418.aspx )।

উপরের প্রোগ্রামটি মূলত একটি সীমিত সংস্করণ badblocksএবং সমস্ত সংরক্ষিত স্থান শেষ না হওয়া পর্যন্ত আপনি ব্যর্থতা দেখতে পাবেন না। অতএব, প্রত্যাশা ( পুনরুক্তি প্রতি 1 পৃষ্ঠাগুলি লেখা সহ) এই যে উপরের পদ্ধতিটি গড়ে গড়ে, সংরক্ষিত_পৃষ্ঠা_কাউন্ট * রাইটিং_সাইক্লিমিলিট পুনরাবৃত্তিতে ব্যর্থ হওয়া উচিত (আবার, পরিধান সমতলকরণ একটি প্রধান পরিবর্তনশীল)। এটি খুব খারাপ থাম্ব ড্রাইভ এবং এসডি কার্ডগুলি সাধারণত স্মার্টকে সমর্থন করে না, যা সংরক্ষিত স্থানের আকারের প্রতিবেদন করার ক্ষমতা রাখে।

যাইহোক, fsyncবনাম fdatasyncএই পরীক্ষার উদ্দেশ্যে, ব্লক ডিভাইসগুলি লিখেছেন যে আপনি যা করছেন তা কোনও পার্থক্য করে না। আপনার open()পদ্ধতিগুলি গুরুত্বপূর্ণ are

আপনি প্রযুক্তিগত বিবরণ সম্পর্কে কৌতূহল হলে; এসডি কার্ডগুলির অভ্যন্তরীণ কার্যকারিতা সম্পর্কে আপনি জানতে (আরও কিছু) জানতে চাইতে পারেন এখানে: https://www.sdcard.org/downloads/pls/simplified_specs/part1_410.pdf

সম্পাদনা: বাইট বনাম পৃষ্ঠাগুলি: এই ধরণের পরীক্ষাগুলির প্রসঙ্গে পাতাগুলির বিষয়গুলিতে বাইট নয়, বিষয়গুলি বিবেচনা করা গুরুত্বপূর্ণ। বিপরীতটি করা খুব বিভ্রান্তিকর হতে পারে। উদাহরণস্বরূপ, একটি সানডিস্ক 8 জিবি এসডি তে, নিয়ামক অনুসারে পৃষ্ঠার আকার (এর মাধ্যমে অ্যাক্সেসযোগ্য /sys/classes/mmc_host/mmc?/mmc?:????/preferred_erase_size) একটি পূর্ণ 4MB। 16MB (4MB সীমানা অনুসারে) লেখা, তারপরে 4 পৃষ্ঠাগুলি মোছা / লিখুন। তবে একে অপরের 4MB অফসেটে চারটি একক বাইট লেখার পাশাপাশি 4 টি পৃষ্ঠা মুছে / লিখে দেয়।

এটি ভুল, তারপরে "আমি 16 এমবি লেখার সাথে পরীক্ষিত হয়েছি" বলতে পারি, কারণ এটি "পরিমানের 4 বাইট লেখার সাথে পরীক্ষা করেছি" হিসাবে পরিধানের সমান পরিমাণ। আরও সঠিকভাবে, "আমি 4 পৃষ্ঠা লেখার সাথে পরীক্ষা করেছি"।


আমি বাইট বনাম পৃষ্ঠাগুলি সম্পর্কিত একটি মন্তব্য যুক্ত করেছি।
জেসন সি

পিএনওয়াই অবিনাশী প্রদর্শিত হয়। যাইহোক, একটি বিদ্যুতচক্রের পরে একেবারে নতুন সানডিস্ক 8 জিবি মাইক্রোএসডি-তে il 8.1 মিলিল পুনরাবৃত্তির পরে (প্রায় 8 ঘন্টার বেশি) পরে সর্বাধিক লেখার হার (মূলত 4 এমবি / সেকেন্ড) স্থায়ীভাবে ~ 410 কেবি / সেকেন্ডে নেমে যায় এবং 250 এমবি ddলেখার পরে ব্যর্থ হয় । ক্ষয়ক্ষতিটি বিদ্যুতচক্রের পরে দেখা যায়নি। পিএনওয়াই থাম্ব ড্রাইভটি m 30 মিলিল পুনরাবৃত্তির পরে অকার্যকর থেকে যায়। আমি প্রতিবারের পরিবর্তে এলোমেলো 16 কেবি-সারিবদ্ধ লোকেশনগুলিতে লেখার জন্য উপরের প্রোগ্রামটি পরিবর্তন করেছি (তবে উপরের কোডে প্রতিফলিত হয়নি), তবে আমি এসডি-তে ~ 4 মিলিল ইটারের পরে তা করেছি। নতুন কার্ড নিয়ে পরীক্ষা করবে।
জেসন সি

ddসেই কার্ডের তৃতীয় প্রয়াসটি এটি 250MB চিহ্ন ছাড়িয়ে যায় এবং লেখার কর্মক্ষমতা আবার বাড়িয়ে পুরো 4MB / সেকেন্ডের পরে সেই অঞ্চলগুলিতে যায়। আমি আশা করি পারফরম্যান্সটি অনাকাঙ্ক্ষিত হবে, যদিও ব্লকগুলি পরিবর্তন হতে চলেছে। আমি বলব না যে কার্ডটি ধ্বংস হয়ে গেছে, তবে এটি অবশ্যই 100% নয়।
জেসন সি

5

স্ল্যামের উত্তরে কেবল কয়েকটি পয়েন্ট যুক্ত করুন - নোটগুলি "বোবা" এসডি কার্ডের চেয়ে এসএসডি-র ক্ষেত্রে আরও বেশি রয়েছে তা লক্ষ করুন, যেহেতু এসএসডিগুলি আপনার ডেটা (যেমন ডি-সদৃশ) এর সাথে অনেকগুলি ডাইরিয়ার ট্রিকস খেলছে :

  • আপনি ডিভাইসের শুরুতে 64 কেবি লিখছেন - এতে নিজেই দুটি সমস্যা রয়েছে:

    1. ফ্ল্যাশ সেলগুলি সাধারণত 16 কেবি আপ থেকে আকারের ব্লকগুলি মুছে ফেলে থাকে (যদিও সম্ভবত 128-512 কেবি সীমার মধ্যে থাকে)। যার অর্থ এটি অন্তত এই আকারের ক্যাশে প্রয়োজন। সুতরাং 64KB লেখা আমার পক্ষে যথেষ্ট মনে হয় না।

    2. নিম্ন-প্রান্তের ("অ-এন্টারপ্রাইজ" পড়ুন) সমাধানের জন্য (এবং আমি এসএসডিগুলির তুলনায় এসডি / সিএফ কার্ডের জন্য এটি আরও বেশি প্রত্যাশা করব) নির্মাতারা ডিভাইসটির শুরুটিকে বাকি অংশের চেয়ে বেশি পরিচ্ছন্ন করে তুলতে বেছে নিতে পারেন গুরুত্বপূর্ণ কাঠামো - ডিভাইসের একক পার্টিশনে পার্টিশন টেবিল এবং FAT (বেশিরভাগ মেমরি কার্ড এই সেটআপটি ব্যবহার করছে) - সেখানে অবস্থিত। সুতরাং কার্ডের শুরু পরীক্ষা করা পক্ষপাতদুষ্ট হতে পারে।

  • fdatasync() প্রকৃতপক্ষে গ্যারান্টি দেয় না যে দৈহিক মাধ্যমটিতে ডেটা লিখিত হয়েছে (যদিও এটি ওএসের নিয়ন্ত্রণাধীন যা সম্ভবত সবচেয়ে ভাল করে) - ম্যান পৃষ্ঠাটি দেখুন:

    ডিভাইসটি স্থানান্তর সম্পন্ন হওয়ার রিপোর্ট না হওয়া পর্যন্ত কল অবরুদ্ধ

    আমি অতিমাত্রায় অবাক হব না যদি এটির প্রমাণিত হয় যে একটি ছোট ক্যাপাসিটার রয়েছে, যা বাহ্যিক শক্তি হারাবার ক্ষেত্রে ফ্ল্যাশ মেমোরিতে ক্যাশেড ডেটা লেখার জন্য শক্তি সরবরাহ করতে সক্ষম হয়।

    যাই হোক না কেন, কার্ডে ক্যাশে উপস্থিত থাকার অনুমানের অধীনে ( এসইউতে আপনার প্রশ্নের উত্তরটি দেখুন ), K৪ কেবি লিখে সিঙ্ক করা (সাথে fdatasync()) এই উদ্দেশ্যে যথেষ্ট বিশ্বাসযোগ্য বলে মনে হয় না। এমনকি কোনও "পাওয়ার ব্যাকআপ" না থাকলেও ফার্মওয়্যারটি এটি অনিরাপদভাবে চালিয়ে যেতে পারে এবং প্রত্যাশার চেয়ে কিছুটা বেশি সময় অলিখিত লিখিত তথ্য রাখে (যেহেতু সাধারণ ব্যবহারের ক্ষেত্রে এটি কোনও সমস্যা তৈরি করে না)।

  • আপনি নতুন ব্লকটি লেখার আগে এটির তুলনা করার আগে তথ্যটি পড়তে চাইতে পারেন, এটি সত্যই কার্যকর হয় তা নিশ্চিত করার জন্য (এবং আপনি যদি পর্যাপ্তরান্বিত হন তবে পড়ার জন্য ক্লিয়ার বাফার ব্যবহার করুন)।


+1 ক্যাশে করার সম্ভাবনা এবং এতে মুছে ফেলার তাত্পর্যটি তুলে ধরার জন্য। তবে ...
সোনারলকস

"পরীক্ষা কার্ড শুরুতে পক্ষপাতমূলক পারে হবে" পরিধান সমতলকরণ কারণ মনে রাখবেন, (যা খেলার মধ্যে থাকতে হবে - আমি এই সময়ে লেখার চক্র কোন যুক্তিসঙ্গত সংখ্যা অতিক্রম করেছেন) - এই মাত্র আপাতদৃষ্টিতে প্রথম ব্লক। অর্থাৎ এটি প্রথম ভার্চুয়াল ব্লক, প্রথম শারীরিক ব্লক নয়।
স্বর্ণলোকস

"fdatasync () সত্যিই গ্যারান্টি দেয় না যে তথ্যটি দৈহিক মাধ্যমের কাছে লেখা হয়" আইএমও, ট্রান্সফারটি সম্পন্ন হয়েছে এমন ডিভাইসটি রিপোর্ট করে যে ডিভাইসটিও পড়তে-লেখার পরীক্ষায় পাস করলে লিখনটি অবশ্যই ঘটেছে (এটি নেই) একটি ব্যর্থ হয়েছে)। ক্যাচিং এটিকে জটিল করে তুলতে পারে, তবে আমরা যদি এটির পক্ষে যুক্তিসঙ্গতভাবে বৃহত অংশটি ব্যবহার করি তবে ডিভাইসটির সাফল্যের খবর পাওয়া গেলে সেখানে "মিথ্যা লেখাগুলি" পাওয়া সম্ভব নয়। এটি যদি এটি করে তবে এটি অকেজো হবে।
স্বর্ণলোকস

1
@ গুডিলোকস না, ডিভাইস থেকে ডেটা ফিরে পড়া কোনও কিছুর গ্যারান্টি দেয় না। এটা যুক্তিসংগত করার আশা ডেটা শারীরিক মাঝারি উপর হতে, এবং এটি সম্ভবত বেশিরভাগ ক্ষেত্রেই হবে, কিন্তু এটা নিশ্চিত না - অন্তত যদি না আপনি ক্যাশের মাপ অতিক্রম।
পিটার্ফ

1
@ গোল্ডিলোকস পিটার্ফ আমার কাছে অন্য একটি জিনিস তুলে ধরতে চেয়েছিল; readআপনার পরীক্ষার অপ্রয়োজনীয়, এটা কোন তথ্য যোগ করা হয়েছে এবং একটি লেখার চক্র পরীক্ষা প্রাসঙ্গিক নয়। সত্যিকারের পরীক্ষার জন্য আপনি যে ব্লকটি লিখেছেন তা কেবল আবার পড়তে এবং এটিতে বৈধতা দিতে চাইবেন, যদি না আপনি নিশ্চিত হন না যে নিয়ামকটি সমস্ত ব্যর্থতা মোডগুলি সনাক্ত করতে এবং তাদের প্রতিবেদন করতে পারে।
জেসন সি

2

পিটারফের উত্তর আমাকে আরও সম্ভাব্য ক্যাশিংয়ের বিষয়টি বিবেচনা করতে বাধ্য করেছিল। চারপাশে খনন করার পরে, আমি এখনও নিশ্চিতভাবে বলতে পারি না যে কোনও, কিছু, বা সমস্ত এসডি কার্ড এটি করে কিনা, তবে আমি মনে করি এটি সম্ভব হয়েছে।

তবে, আমি বিশ্বাস করি না যে ক্যাশেটি মুছে ফেলার চেয়ে বড় ডেটা জড়িত। সত্যিই নিশ্চিত হতে, আমি 64 কেবি এর পরিবর্তে 16 এমবি অংশ ব্যবহার করে পরীক্ষার পুনরাবৃত্তি করেছি। এটি 4 জিবি কার্ডের মোট ভলিউম 1/250 তম। এটি করতে 10,000 ঘন্টা সময় নিয়ে ~ 8 ঘন্টা লেগেছিল। যদি পরিধান স্তরগুলি লোডটি চারপাশে ছড়িয়ে দেওয়ার পক্ষে সর্বোত্তমভাবে কাজ করে, এর অর্থ প্রতিটি শারীরিক ব্লক 40 বার ব্যবহৃত হত

এটি খুব বেশি নয়, তবে পরীক্ষার মূল পয়েন্টটি ছিল একই (আপাত) স্থানে পরিমিত পরিমাণে ডেটা বারবার লেখার মাধ্যমে কার্ডটি সহজেই ক্ষতি করতে পারি না তা দেখিয়ে পরিধান সমতলকরণের কার্যকারিতা প্রদর্শন করা । আইএমও পূর্ববর্তী k৪ কেবি পরীক্ষা সম্ভবত আসল ছিল - তবে ১ MB এমবি অবশ্যই হওয়া উচিত। সিস্টেমটি ডেটাটিকে হার্ডওয়্যারে ফেলেছে এবং হার্ডওয়্যার কোনও ত্রুটি ছাড়াই লেখার খবর দিয়েছে। যদি এটি কোনও প্রতারণা হয়ে থাকে তবে কার্ড কোনও কিছুর জন্য ভাল হবে না এবং এটি প্রাথমিক স্টোরেজে 16 এমবি কোথাও ক্যাচ করা যাবে না, যা পরীক্ষার চাপ দেওয়ার উদ্দেশ্যে।

আশা করা যায়, প্রত্যেকে ১ 16 এমবি লিখেছেন 10,000 এটি প্রমাণ করার জন্য যথেষ্ট যে এমনকি নীচের প্রান্তের নাম ব্র্যান্ড কার্ডে (মান: $ 5 সিডিএন), একটি rw রুট ফাইল সিস্টেম 24/7 চালানো যা দৈনিক পরিমিত পরিমাণে ডেটা লেখায় কার্ডটি বাইরে রাখবে না will একটি যুক্তিসঙ্গত সময়। 10,000 দিন 27 বছর ... এবং কার্ডটি এখনও ঠিক আছে ...

যদি আমি এর চেয়ে ভারী কাজ করে এমন সিস্টেমগুলি বিকাশ করার জন্য অর্থ প্রদান করা হয়, তবে কার্ডটি কত দিন স্থায়ী হতে পারে তা নির্ধারণ করার জন্য আমি কমপক্ষে কয়েকটি পরীক্ষা করতে চাই । আমার কুণ্ডলীটি হ'ল এইরকম একটির সাথে, যার লেখার গতি কম, এটি সর্বোচ্চ গতিতে সপ্তাহ, মাস বা কয়েক বছর অব্যাহত লেখার জন্য লাগতে পারে (সত্য যে এই ধরণের অনলাইনে তুলনামূলক পরীক্ষাগুলির অদ্বিতীয়গুলি কথা বলে না এটি খুব দীর্ঘস্থায়ী সম্পর্ক হবে)।

কার্ডটি নিশ্চিত করার বিষয়ে এখনও ঠিক আছে, আমি আর badblocksএটির ডিফল্ট কনফিগারেশন ব্যবহার করা উপযুক্ত বলে মনে করি না । পরিবর্তে, আমি এটি এইভাবে করেছি:

badblocks -v -w -b 524288 -c 8

যার অর্থ 5 বার কেবি ব্লক ব্যবহার করে পরীক্ষা করা 8 বার (= 4 এমবি) পুনরাবৃত্তি হয়েছে। যেহেতু এটি একটি ধ্বংসাত্মক আরডব্লিউ পরীক্ষা, এটি যদি অবিচ্ছিন্ন লুপে ব্যবহার করা হয় তবে ডিভাইসটিতে চাপ দেওয়ার ক্ষেত্রে এটি সম্ভবত আমার হোমস্পান হিসাবে ভাল।

আমি এটিতে একটি ফাইল সিস্টেমও তৈরি করেছি, 2 জিবি ফাইলে অনুলিপি করেছি, diff'ফাইলটি মূলটির বিপরীতে এবং তারপরে - যেহেতু ফাইলটি একটি .iso ছিল - এটি একটি চিত্র হিসাবে মাউন্ট করেছিল এবং এর মধ্যে ফাইল সিস্টেমটি ব্রাউজ করেছে।

কার্ডটি এখনও ঠিক আছে। যা সম্ভবত প্রত্যাশিত, সর্বোপরি ...

;);)


আমি আপনার গণিত সঠিক বলে মনে করি না। একটি ক্লাস 2 কার্ডটি থ্রুটপুট 2 এমবি / গুলি সহ্য করেছে, এর অর্থ আপনি প্রায় 4 মাসের মধ্যে 20 টিবি রাখবেন। নিশ্চিত, আপনি যদি আপনার নন-দলেই কার্ড আছে, কিন্তু আপনি কি সত্যিই বন্ধ মাত্রার আদেশ হবে বলে মনে হচ্ছে (যেমন terdon মধ্যে নির্দিষ্ট উল্লিখিত unix.stackexchange.com/questions/84902/... )। অন্যথায় আমি সম্পূর্ণরূপে slm সাথে একমত।
পিটার্ফ

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

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

আরও একটি মন্তব্য, আরও একটি এফওয়াইআই: একটি সানডিস্ক 8 জিবি মাইক্রোএসডি, গ্রাহক গ্রেডে, বরাদ্দ ইউনিট (অর্থাত্ পৃষ্ঠার আকার) 4MB কন্ট্রোলারের হিসাবে রিপোর্ট করা হয়েছে; অর্থাত সেই কার্ডে 16 এমবি 4 পৃষ্ঠাগুলি (5 যদি এটি প্রান্তিক না হয়)। আপনি কার্ডটিতে 16MB খাওয়ানোর পরিবর্তে একে অপরের 4MB অফসেটে 512 বাইট লিখে এই পরীক্ষার গতি বাড়িয়ে দিতে পারেন। আপনি বাইট এবং পৃষ্ঠাগুলির সংখ্যার মধ্যে পার্থক্য তৈরি করছেন না তবে আপনার হওয়া উচিত - উদাহরণস্বরূপ, এটি যদি সানডিস্ক 8 জিবি কার্ডে থাকে তবে "16 এমবি" কার্ডটিতে একই পোশাকটি "2 কেবি" হিসাবে রাখে। পৃষ্ঠাগুলির পরিবর্তে বাইটগুলি উল্লেখ করা অত্যন্ত বিভ্রান্তিকর।
জেসন সি

আমি উপরে পরীক্ষামূলক প্রোগ্রামে .1 8.1 মিলিল পুনরাবৃত্তির পরে (8 ঘন্টােরও বেশি) পরে, একটি বিদ্যুত্চক্র অনুসরণ করে, একটি ব্র্যান্ড নিউ সানডিস্ক 8 জিবি মাইক্রোএসডি তে, লেখার গতি স্থায়ীভাবে প্রায় 450 কেবি / সেকেন্ডের মধ্যে সীমাবদ্ধ এবং 250 এমবি ddসম্পর্কে অতীত লিখতে ব্যর্থ হয়েছিল চিহ্নিত করুন। তৃতীয় ddপ্রয়াসে এটি 250MB কে ছাড়িয়ে গেছে এবং এটি একবার হয়ে গেলে, সেই জায়গাগুলিতে লেখার পারফরম্যান্স আবার বেড়েছে। আমি বলব না যে কার্ডটি ধ্বংস হয়ে গেছে তবে এটি অবশ্যই 100% এ নয়।
জেসন সি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.