मैं एक NAS का निर्माण करना चाहता हूँ mdadm के लिए RAID और btrfs को बिट्रोट डिटेक्शन के लिए। मेरे पास एक काफी बुनियादी सेटअप है, 3 1TB डिस्क को mdadm के साथ एक RAID5 से जोड़कर, उसके ऊपर btrfs की तुलना में।
मुझे पता है कि mdadm बिट्रोट की मरम्मत नहीं कर सकता है। यह केवल मुझे बता सकता है जब मिसमैच होते हैं लेकिन यह नहीं जानता कि कौन सा डेटा सही है और कौन सा दोषपूर्ण है। जब मैं बिटड्रॉम का अनुकरण करने के बाद अपने md0 को सुधारने के लिए mdadm बताता हूं, तो यह हमेशा समता का पुनर्निर्माण करता है। Btrfs चेकसम का उपयोग करता है इसलिए यह जानता है कि कौन सा डेटा दोषपूर्ण है, लेकिन यह डेटा की मरम्मत नहीं कर सकता क्योंकि यह समता नहीं देख सकता है।
मैं हालांकि एक btrfs स्क्रब चला सकता हूं और डेटा के ऑफसेट को प्राप्त करने के लिए syslog को पढ़ सकता हूं जो उसके चेकसम से मेल नहीं खाता। फिर मैं इस ऑफसेट को डिस्क पर और उस डिस्क पर एक ऑफसेट का अनुवाद कर सकता हूं, क्योंकि मुझे पता है कि डेटा md0 (2048 * 512), चंक आकार (512K) और लेआउट (बाएं-सममित) की ऑफसेट शुरू होता है। लेआउट का मतलब है कि मेरी पहली परत में समता तीसरी डिस्क पर, दूसरी डिस्क पर दूसरी परत में और तीसरी परत पहली डिस्क पर है।
डिस्क-प्रारूप ज्ञान पर इस सभी डेटा और कुछ और btrfs को मिलाकर, मैं ठीक से गणना कर सकता हूं कि किस डिस्क का कौन सा हिस्सा दोषपूर्ण है। हालाँकि, मैं mdadm को इस विशिष्ट प्रकार की मरम्मत के लिए बताने का कोई तरीका नहीं खोज सकता।
मैंने पहले ही एक स्क्रिप्ट लिखी थी, जो dd कमांड का उपयोग करके समता और दोषपूर्ण चंक को स्वैप करती है, फिर mdadm के साथ एक मरम्मत शुरू करती है और फिर उन्हें वापस स्वैप कर देती है, लेकिन यह एक अच्छा समाधान नहीं है और मैं वास्तव में mdadm को इस क्षेत्र को खराब के रूप में चिह्नित करना चाहता हूं। इसे फिर से उपयोग न करें। चूंकि यह सड़ने लगा है, संभावना अधिक है कि यह इसे फिर से करेगा।
मेरा सवाल यह है: क्या एक एकल चंक (जो समता नहीं है) की मरम्मत के लिए mdadm को बताने का कोई तरीका है और संभवतः एक डिस्क क्षेत्र को भी खराब मान सकता है? शायद एक io त्रुटि बना?
(और मुझे पता है कि ZFS यह सब अपने आप कर सकता है, लेकिन मैं ECC मेमोरी का उपयोग नहीं करना चाहता)
संपादित करें: यह सवाल / जवाब है कि कैसे btrfs RAID6 अस्थिर है और ZFS कितना अधिक स्थिर / प्रयोग करने योग्य है। यह मेरे प्रश्न को संबोधित नहीं करता है कि mdadm के साथ एक ही ज्ञात दोषपूर्ण चंक को कैसे ठीक किया जाए।