বিটিআরএফএস স্ক্রাব কীভাবে কাজ করে এবং এটি কী করে?


19

বিটিআরএফএস স্ক্রাব ঠিক কী করে? ম্যানুয়াল পৃষ্ঠা অনুসারে, যা সম্পূর্ণ অস্পষ্ট, এটি কিছু ত্রুটি যাচাই করে। কোন ধরণের ত্রুটি পরীক্ষা করা? এটা কতটা নির্ভরযোগ্য? এটি কিছু ত্রুটি পুনরুদ্ধার করতে সক্ষম? এটা কিভাবে কাজ করে? এটি কি প্রতিটি বিটিআরএফএস ডিস্কে কাজ করে?


3
প্রসঙ্গ: বিটিআরএফএস চেকসামগুলি সঞ্চয় করে, তাই কোনও ফাইল (বা মেটাডেটা) ঠিক আছে কিনা বা এটি দূষিত হয়েছে কিনা তা সর্বদা বলতে সক্ষম able Ext4 এর মতো প্রায় সমস্ত ফাইল সিস্টেমে চেকসামিং নেই, সুতরাং তারা আপনাকে এমন কোনও ফাইল পড়তে বাধা দেবে না যা খারাপ ড্রাইভের দ্বারা ক্ষতিগ্রস্থ হয়েছে (যা মারা যেতে চলেছে এবং ইতিমধ্যে ডেটা কলুষিত করা শুরু করেছে)। এটি বিটিআরএফএসের একটি গুরুত্বপূর্ণ ডেটা সুরক্ষা বৈশিষ্ট্য এবং এটি স্ক্রাবিংকে সম্ভব করে তোলে।
বেসিক 6

উত্তর:


23

আমি জানি না এটি অন্য কিছু করে কিনা, তবে আমি জানি যে সর্বনিম্ন btrfs scrubফুল-ডিস্ক ডেটা স্ক্রাব করে। মূলত, এটি ডিস্কের সমস্ত ডেটা * পড়ে, এর চেকসামটি পুনঃনির্মাণ করে এবং সঞ্চিত চেকসামের সাথে তুলনা করে। যখন সঞ্চিত এবং সংশোধিত চেকসামগুলি মেলে না, তখন সিস্টেমটি জানে যে দুর্নীতি রয়েছে।

একবার দুর্নীতি ধরা পড়লে, আচরণটি আপনার ডিস্ক সেটআপের উপর নির্ভর করে। উদাহরণস্বরূপ, আপনার যদি RAID 1 (মিররিং) থাকে তবে btrfs scrubঅন্য ডিস্ক থেকে একটি নিরবচ্ছিন্ন সংস্করণ অনুলিপি করে কলুষিত ডেটা ঠিক করতে পারেন। যদি কিছু ডেটার সমস্ত অনুলিপি দূষিত হয় (যেমন, মাল্টি-ডিস্ক ক্ষতিগ্রস্থ হয় বা প্রথমে অনর্থক অনুলিপি না থাকে), তবে btrfs scrubআপনাকে সতর্ক করার ছাড়াও তেমন অনেক কিছুই করা যায় না।

এটি গুরুত্বপূর্ণ কারণটি হ'ল হার্ড ড্রাইভগুলি বিটগুলি পড়া এবং লেখার ক্ষেত্রে কেবলমাত্র 99.99999999999999% নির্ভরযোগ্য। সুতরাং, প্রতি কয়েকটি টেরাবাইট ডেটা I / O, ত্রুটি হওয়ার সম্ভাবনা রয়েছে। যদিও সাধারণ ডিস্ক অ্যাক্সেসের সময় ত্রুটিগুলি সনাক্ত করা যায় এবং সনাক্ত করা যায় (এবং স্থির করা হয়, রিডানড্যান্ট অনুলিপিটি এখনও বৈধ)

* আমি মেটাটাটাও অন্তর্ভুক্ত করতে "ফাইল" এর পরিবর্তে "ডেটা" ব্যবহার করছি। বিটিআরএস ফাইলগুলি এবং সম্পর্কিত মেটাটাটা (চেকসাম সহ) ডেটা ব্লকগুলিতে সঞ্চয় করে, এগুলির সবগুলি চেকসামড এবং চেক করা থাকে btrfs scrub

আরো দেখুন:


আমি গণনা করি নি, তবে আমি অনুমান করতে ইচ্ছুক যে আপনার নির্ভরযোগ্যতা চিত্রটি কয়েকটি মাত্রার কয়েকটি আদেশ দ্বারা বন্ধ রয়েছে। গ্রাহক এইচডিডি সাধারণত 10 ^ -14 বিটের একটি ইউবিই হারের জন্য নির্দিষ্ট করা হয়। অন্য কথায়, প্রতি 10 ^ 14 বিট পড়ার সময় একটি অপরিবর্তনযোগ্য পঠন ত্রুটি। সমস্যাটি হ'ল এটি একটি সম্পূর্ণ সেক্টরের জন্য; আপনি হয় পুরো ক্ষেত্রটি পান বা আপনি কিছু পান না (বা এটি ধারণা; নীরব ত্রুটিগুলি সম্পূর্ণরূপে অন্য কাপ চা)। সুতরাং ত্রুটিটি সেক্টরের আকার দ্বারা প্রশস্ত করা হয়েছে, এটি অ্যাডভান্সড ফর্ম্যাট ড্রাইভের সাথে 32,768 বিট। সুতরাং, আসল ত্রুটি হার 10 more -10 থেকে 10 ^ -11 রিডব্যাট-ত্রুটির মতো like
একটি সিভিএন

@ মাইকেল কেজারলিং আমি সেক্টরগুলিকে এখানে গুরুত্বপূর্ণ মনে করি না .... আমার কম্পিউটারের দুটি অভ্যন্তরীণ 1 টিবি হার্ড ড্রাইভের সর্বশেষ 29 বিটিআরএফ স্ক্রাবের রেকর্ড রয়েছে। ডেটা পরিমাণ 270 এবং 300 GiB (মোট 1.35 * 10 ^ 14 থেকে 1.49 * 10 ^ 14 বিট একসাথে সমস্ত স্ক্রাবের জন্য পড়া) জন্য পরিবর্তিত হয়। এই স্ক্রাবগুলির সময় 3 টি ত্রুটি পাওয়া গেছে। ধরে নিই যে অ-স্ক্রাব আই / ও-এর কারণে ঠিক বিট পচা যায়নি, যা "99.999999999999% নির্ভরযোগ্য" ড্রাইভের প্রত্যাশিত ত্রুটি হারের চেয়ে 2 থেকে 2¼ গুণ বেশি। এমনকি কেবল 4096-বিট সেক্টর সহ, আমি মনে করি আপনার যুক্তিটি আশা করবে যে আমার ড্রাইভগুলি এতক্ষণে হাজার হাজার ত্রুটি ঘটেছে।
মার্ক হাফার্ক্যাম্প

@ মাইকেলKjörling এখন পর্যন্ত আমি নির্মাতার স্পেস শিটগুলি (সিগেট এবং ডাব্লুডি) বুঝতে পেরেছি, এটি কিছুটা ত্রুটি এবং পুরো খাত মারা যায় না। এবং উত্তরের নাইনগুলির সংখ্যা আরও আশাবাদী: 100-1/10^1416 টি নাইন রয়েছে এবং পোস্টটির কেবল 14 টি (10 ^ 12 এর সাথে সম্পর্কিত) রয়েছে।
লুক

@ লুক এটি ভাল যদি সেক্টরের মৃত্যু কম সাধারণ হয়; ডাইটিং সেক্টর মানে ড্রাইভ আসলে (ব্যর্থ) আসলে ব্যর্থ এবং এর পরিবর্তনের প্রয়োজন হতে পারে। বিট ত্রুটিগুলি কেবল নিঃশব্দ ডেটা দুর্নীতির দিকে পরিচালিত করে, যা ব্যাকআপগুলি থেকে পুনরুদ্ধার করার জন্য পর্যাপ্ত গোলমাল করা যায়। গণিত দ্রষ্টব্য: আসল গণনাটি 1-10^nযা শতাংশে রূপান্তরিত হয় কারণ মানুষ দশমিক দশমিক পছন্দ করে না। এছাড়াও, আমি আমার পূর্ববর্তী মন্তব্যে উল্লেখ করতে অবহেলা করেছি যে ড্রাইভগুলি র‌্যাড 1-এ রয়েছে (সুতরাং একই 270-300 জিআইবি ডেটা তাদের প্রত্যেকটিতে রয়েছে), যা অন্য একটি আপাত গণনা ত্রুটি সংশোধন করে।
মার্ক হাফার্ক্যাম্প

5

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

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

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

এই কোথায় btrfs scrubআসে। এটা সব সার্চ ডেটা , না সব ফাইল। এর মধ্যে মেটাডেটা অন্তর্ভুক্ত রয়েছে তবে ফাইলগুলির মাধ্যমিক অনুলিপিগুলি যা সাধারণত পড়ার পথে হয় না। যখন এই মাধ্যমিক অনুলিপিগুলি পড়ে, এটি বিআরটিএফস-এর ইন-ব্যান্ড ত্রুটি সংশোধনের জন্য একটি অনর্থক অনুলিপি থেকে ডেটা কিক করতে এবং পুনরুদ্ধার করার সুযোগ তৈরি করে।


2
আপনি কি নিশ্চিত যে RAID1 এ কেবল 1 ডিস্ক থেকে পড়া হয়? কমপক্ষে m دادm RAID এর সাথে এটি হওয়া উচিত নয়। উভয় ডিস্কের সমান্তরালে পাঠ হওয়া উচিত, তবে বিভিন্ন ডেটা, যার অর্থ এটি একটি ডিস্ক থেকে পড়ার চেয়ে দ্বিগুণ দ্রুত হওয়া উচিত। পড়ুন কর্মক্ষমতা বুস্ট, RAID 1. প্রধান বৈশিষ্ট্য
পেত্র

@ পিটার হ্যাঁ, আপনি ঠিক বলেছেন। পৃথক ব্লকগুলি কেবল একটি ডিস্ক থেকে পঠিত হয়।
strugee

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

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

সর্বশেষ তবে কমপক্ষে RAID5 / 6 সম্পর্কিত নয়: - MDADM এ এটি কেবল কাজ করে । (তবে নীরব দুর্নীতি সনাক্ত করতে পারে না) - বিটিআরএফএসে আপাতত নীরব দুর্নীতি পরিচালিত হয় না (কারণ কেবল স্ট্রাইপের কোন সদস্য দুর্নীতিগ্রস্থ এবং অনুমান করার জন্য এররেজ কোডিং গণনা না করে আরও একটি অনুলিপি (RAID1 তে পাওয়া সহজ) অবশিষ্ট ডেটা / প্যারিটি থেকে পুনর্নির্মাণ করা উচিত)। অন্য কথায়: আজকের হিসাবে (অগাস্ট 2017) বিটিআরএফএস'র রেড 5/6 ব্যবহার করবেন না।
DrYak
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.