আমি # বিটিআরএফএস আইআরসি-তে প্রশ্ন জিজ্ঞাসা করেছি, তারা বলেছিল যে should be ok if your hw isn't "buggy"
যেখানে "বগি" নয় your hw has correct flush/barrier semantics
।
টিএল; ডিআর: এর অর্থ দাঁড়ায় যে বিটিআরএফএস জেডএফএসের মতো একইভাবে বিদ্যুৎ হ্রাসের কারণে ডেটা দুর্নীতির বিরুদ্ধে সুরক্ষিত।
এখানে কেন: জেডএফএস এবং বিটিআরএফএসের পিছনে সাধারণ ধারণাটি একই রকম। উভয়ই ডেটা স্ট্রাকচার হিসাবে Merkle গাছ ব্যবহার করে । রাইটগুলিকে ডিস্ক (গুলি) আপডেট করার জন্য একাধিক ব্লকের প্রয়োজন হতে পারে। ফাইল সিস্টেমটি খালি ব্লকগুলিতে নতুন ডেটা লিখে এটি পরিচালনা করছে (কোনও বিদ্যমান ফাইলটি সংশোধন করা হচ্ছে এমনভাবে, এটির জন্য পুরানো অবস্থাটি প্রতিফলিতকারী ব্লকগুলিকে সংশোধন করার দরকার নেই) এবং একটি নতুন আপডেট করা ট্রি তৈরি করা। সমস্ত ভারী উত্তোলন শেষ হয়ে গেলে এবং ডেটা + আপডেট হওয়া ট্রিটি ডিস্কে লিখিত হয়ে গেলে হেড পয়েন্টারটি নতুন গাছটিতে আপডেট হয়ে যায় এবং পরিবর্তনটি দৃশ্যমান হয়।
কোনও ফাইলে লেখার সময় বিষয়গুলি কীভাবে আচরণ করা উচিত তা এখানে:
- ডিস্কে ব্লক মুক্ত করতে ডেটা লিখুন।
- Merkle গাছ * এর একটি অনুলিপি তৈরি করুন, (1) এ লিখিত পরিবর্তনগুলি অনুসারে আপডেট করুন।
- হার্ডওয়্যারকে ডিস্কে ডেটা ফ্লাশ করতে বলুন - হার্ডওয়্যার সমস্ত মুলতুবি থাকা ডেটা লিখে।
- নতুন Merkle ট্রিতে প্রধান পয়েন্টার আপডেট করুন।
- বিনামূল্যে পুরাতন ব্লকগুলির আর প্রয়োজন নেই।
(4) পাওয়ার পরে যদি লস হারিয়ে যায় তবে লেনদেন সম্পূর্ণ হয়। (1) থেকে (3) পদক্ষেপের সময় শক্তিটি যদি হারিয়ে যায় তবে ফাইল সিস্টেমটি পুরানো অবস্থার সাথে উপস্থিত হবে (ধাপে লিখিত ডেটা (1) হারিয়েছে তবে ফাইল সিস্টেমটি সামঞ্জস্যপূর্ণ)। নোট করুন যে ফাইল সিস্টেম ত্রুটিগুলি পরীক্ষা করার দরকার নেই যার অর্থ ফাইল সিস্টেমটি তত্ক্ষণাত উপলভ্য হবে যা একটি বড় সুবিধা (বড় ফাইল সিস্টেমগুলি পরীক্ষা করা খুব দীর্ঘ সময় নিতে পারে!)।
"বগি" হার্ডওয়্যার দিয়ে কীভাবে জিনিসগুলি ভুল হতে পারে তা এখানে একটি উদাহরণ রয়েছে:
- ডিস্কে ব্লক মুক্ত করতে ডেটা লিখুন।
- Merkle গাছ * এর একটি অনুলিপি তৈরি করুন, (1) এ লিখিত পরিবর্তনগুলি অনুসারে আপডেট করুন।
- হার্ডওয়্যারটিকে ডিস্কে ডেটা ফ্লাশ করতে বলুন - হার্ডওয়্যার সমাপ্তির বিষয়টি নিশ্চিত করে তবে পুরো পথটি ফ্লাশ করে না (উদাহরণস্বরূপ ডেটা ডিস্কের লিখনের পিছনে থাকতে পারে)।
- নতুন Merkle ট্রিতে প্রধান পয়েন্টার আপডেট করুন। অন্যান্য মুলতুবি থাকা ডেটার আগে এই ডেটাটি ডিস্কে লিখিত হয়ে যায় (উদাহরণস্বরূপ, কারণ ডিস্কের মাথাটি সঠিক স্থানে থাকে)।
- পদক্ষেপে লিখিত ডেটা (1) এবং (2) ডিস্কে লিখিত হয়।
- বিনামূল্যে পুরাতন ব্লকগুলির আর প্রয়োজন নেই।
(4) এবং (5) এর মধ্যে বা পদক্ষেপ (5) সম্পাদন করার সময় পাওয়ার হারিয়ে গেলে ফাইল সিস্টেমটি বেমানান হয়ে যাবে। ফলস্বরূপ Merkle ট্রি এবং / অথবা ডেটা কেবলমাত্র আংশিকভাবে লিখিত হতে পারে যার ফলে ফাইল সিস্টেমটি অসঙ্গতিপূর্ণ হয়ে পড়ে।
অনুশীলনে রেড কন্ট্রোলার ব্যবহার করার সময় আপনাকে বিশেষ যত্নবান হতে হবে । তারা সাধারণত ডিস্কে লিখন-ব্যাক ক্যাশে অক্ষম করে এবং পরিবর্তে তাদের নিজস্ব লিখন-ব্যাক ক্যাশে ব্যবহার করে। জিনিসগুলির ভুল হওয়ার জন্য এখানে দুটি সাধারণ উপায় রয়েছে:
* আমি এখানে জিনিসগুলি সরল করছি। আসলে পুরো গাছটি অনুলিপি করার প্রয়োজন নেই। পরিবর্তিত অংশগুলি কেবল যুক্ত করতে হবে - অবশিষ্ট অংশগুলি পুরানো এবং নতুন গাছের মধ্যে ভাগ করা যায় ।
zpool clear -F