মার্ক হাফারক্যাম্পের দুর্দান্ত উত্তরের উপর প্রসারিত , সমস্ত ফাইলের পরিবর্তে btrfs scrub
সমস্ত ডেটা পড়া একটি সমালোচনা সম্পত্তি এবং আসলে এটি এটিকে এত দরকারী করে তোলে। মনে রাখবেন, বিটিআরএফএসের মধ্যে র্যাড সমর্থন রয়েছে। বলুন যে আপনার কাছে একটি বিটিআরএফএস ফাইল সিস্টেম রয়েছে যাতে দুটি ড্রাইভ বিস্তৃত থাকে যা আপনি RAID1 ব্যবহারের জন্য কনফিগার করেছেন। এই ক্ষেত্রে, আপনি যখন কোনও ফাইলে লিখেন, সেই লিখনটি উভয় ডিস্কে প্রতিলিপি করা হয়। (এটি আরও জটিল উদাহরণের সাথে আরও জটিল হয়ে ওঠে তবে এই সাধারণ ক্ষেত্রে এটি সর্বদা ঘটে থাকে)) তবে আপনি যখন এই ফাইলটি পড়বেন তখন পঠনটি কেবল একটি ডিস্কে চাপ দেবে (কারণ ফাইলটি দু'বার পড়তে পারা যায় না যদি না কোনও কারণে প্রথম অনুলিপি ব্যবহারযোগ্য না হয়)।
এখন বলুন যে আপনার দ্বিতীয় বিটিআরএফ ড্রাইভটি আপনার ফাইল সিস্টেমে ডেটা হ্রাস করে এবং ডেটা ক্ষতিগ্রস্থ করা শুরু করে। আপনি যখন এই ডিস্ক থেকে ব্লকগুলি পড়বেন, বিটিআরএফএস লক্ষ্য করবে যে চেকসামটি মেলে না এবং একটি পরিচিত-ভাল কপি থেকে ব্লক ইন-ব্যান্ডটি পুনরুদ্ধার করবে - প্রথম ড্রাইভের অনুলিপি। এটি অ্যাপ্লিকেশন কলিংয়ে read()
(বা যাই হোক না কেন) এমন ডেটা ফিরিয়ে দেবে যেন যেন কিছুই ঘটেনি।
তবে বিটিআরএস যদি দ্বিতীয় ডিস্ক থেকে পড়ার সিদ্ধান্ত না নেয়? মনে রাখবেন, এখানে দুটি অনুলিপি রয়েছে, সুতরাং এটি প্রথম বা দ্বিতীয় ডিস্কের মধ্যে থেকে পড়তে পারে । এটি যদি প্রথম ডিস্ক থেকে পড়ে, তবে এটি কোনও ভুল লক্ষ্য করবে না। প্রথম ডিস্কটিও যখন হ্রাস পায় তখন কেবলমাত্র যখনই কোনও কিছুর ভুল লক্ষ্য করবে। ডেটা পুনরুদ্ধার করতে খুব দেরী হওয়ায় এখন আপনি সত্যই হোজে গেছেন - দ্বিতীয় ডিস্কের অনুলিপি কিছুক্ষণের জন্য দূষিত হয়ে গেছে, এবং প্রথম অনুলিপি (যা আপনি দ্বিতীয় ডিস্কটি পুনরুদ্ধার করতে ব্যবহার করেছেন) এখন তাও দূষিত হয়ে গেছে!
এই কোথায় btrfs scrub
আসে। এটা সব সার্চ ডেটা , না সব ফাইল। এর মধ্যে মেটাডেটা অন্তর্ভুক্ত রয়েছে তবে ফাইলগুলির মাধ্যমিক অনুলিপিগুলি যা সাধারণত পড়ার পথে হয় না। যখন এই মাধ্যমিক অনুলিপিগুলি পড়ে, এটি বিআরটিএফস-এর ইন-ব্যান্ড ত্রুটি সংশোধনের জন্য একটি অনর্থক অনুলিপি থেকে ডেটা কিক করতে এবং পুনরুদ্ধার করার সুযোগ তৈরি করে।