একটি সাধারণ উদাহরণ হিসাবে 100MB কাঁচা ব্লক ডিভাইস বিবেচনা করুন। এটি মোট 102760448 বাইটের জন্য 512 বাইটের 204800 ব্লক।
প্রথম 98MB (200704 ব্লক) স্থানান্তর করা চ্যালেঞ্জ হ'ল এর সামনে 2MB (4096 ব্লক) এর ব্যবধান রয়েছে। স্থানে এটি করার জন্য এমন কোনও সেক্টরে কিছুই লেখা নেই যা পড়া হয়নি। এটি অর্জনের একটি উপায় বাফারকে পরিচয় করিয়ে দেওয়া:
$ dd if=/dev/sdj2 count=200704 | mbuffer -s 512 -b 4096 -P 100 | dd of=/dev/sdj2 seek=4096
প্রত্যাশাটি হ'ল mbuffer
লেখকের কাছে কোনও কিছু দেওয়ার আগে 4096 টি ব্লক সংরক্ষণ করা হবে, সুতরাং এটি নিশ্চিত করা যায় যে এমন কোনও অঞ্চলে কিছুই লেখা নেই যা পড়া হয়নি এবং লেখক বাফারের আকারে পাঠককে পিছনে ফেলে রাখেন। বাফারের উচিত পাঠক এবং লেখককে এই সীমাবদ্ধদের মধ্যে যত দ্রুত সম্ভব পরিচালনা করা উচিত।
তবে এটি নির্ভরযোগ্যভাবে কাজ করছে বলে মনে হয় না। আমি প্রকৃত ডিভাইসগুলি ব্যবহার করার চেষ্টা করেছি তবে এটি কখনই কার্যকর হয় না, যেখানে কোনও ফাইলের পরীক্ষাগুলি আমার -৪-বিট বাক্সে কাজ করেছিল তবে আমার 32-বিট বাক্সে নয়।
প্রথমত, কিছু প্রস্তুতি:
$ dd if=/dev/sdj2 count=200704 | md5sum
0f0727f6644dac7a6ec60ea98ffc6da9
$ dd if=/dev/sdj2 count=200704 of=testfile
এটি কাজ করে না:
$ dd if=/dev/sdj2 count=200704 | mbuffer -s 512 -b 4096 -P 100 -H | dd of=/dev/sdj2 seek=4096
summary: 98.0 MiByte in 4.4sec - average of 22.0 MiB/s
md5 hash: 3cbf1ca59a250d19573285458e320ade
এটি 64৪-বিট সিস্টেমে কাজ করে তবে 32-বিট সিস্টেমে নয়:
$ dd if=testfile count=200704 | mbuffer -s 512 -b 4096 -P 100 -H | dd of=testfile seek=4096 conv=notrunc
summary: 98.0 MiByte in 0.9sec - average of 111 MiB/s
md5 hash: 0f0727f6644dac7a6ec60ea98ffc6da9
এটি নির্ভরযোগ্যভাবে কীভাবে করা যায়?
মন্তব্য
আমি বাফারিং সম্পর্কিত অন্যান্য প্রশ্নগুলি পড়েছি এবং দেখেছি pv
, buffer
এবং mbuffer
। আমি কেবলমাত্র পরবর্তী বাফার আকারের সাথে কাজ করতে পারি।
ইন্টারমিটিয়েট স্টোরেজ ব্যবহার করা সমস্যাটির একটি সুস্পষ্ট সমাধান যা সর্বদা কাজ করে তবে পর্যাপ্ত অতিরিক্ত ক্ষমতা উপলব্ধ না হলে এটি ব্যবহারিক হয় না।
mbuffer
সংস্করণ 20140302 সহ আর্চ লিনাক্স চালিত টেস্ট প্ল্যাটফর্মগুলি ।
mbuffer
আসলে দ্বিতীয় বাধ্য করা উচিত dd
প্রথম পশ্চাতে থাকে এবং আপনি শুধুমাত্র শিফট মাপের বাফার যথেষ্ট র্যাম প্রয়োজন। খুব খারাপ খারাপ দিকগুলি dd
পিছনের ক্রমে ব্লকগুলি পড়া এবং লেখা সমর্থন করে না কারণ এটি সমস্যাটি দূর করবে!
-H
যুক্তিটি এই বৈশিষ্ট্যটি সক্ষম করে)।
mbuffer
যায়? পরিবর্তেdd
একসাথে ব্লক ডিভাইসের পুরো বিষয়বস্তু পড়তে হবে না কেনdd bs=102760448
? অবশ্যই, একটি উপায় বা অন্যটি এটি র্যামে বাফার করেছে।