यह ewwhite के उत्तर की "निरंतरता" है:
आपको अपने डेटा को फिर से असंतुलित करने के लिए विस्तारित ज़ूलप में फिर से लिखना होगा
मैंने अपने Ubuntu 14.04 होस्ट पर इसे स्वचालित करने के लिए एक PHP स्क्रिप्ट ( github पर उपलब्ध ) लिखी ।
बस sudo apt-get install php5-cli
पहले स्क्रिप्ट के रूप में अपने पूल डेटा के लिए मार्ग गुजर रहा है और स्क्रिप्ट चलाने के साथ PHP सीएलआई उपकरण स्थापित करने की आवश्यकता है । उदाहरण के लिए
php main.php /path/to/my/files
आदर्श रूप से आपको पूल के सभी डेटा में दो बार स्क्रिप्ट को चलाना चाहिए। पहला रन ड्राइव के उपयोग को संतुलित करेगा, लेकिन व्यक्तिगत फ़ाइलों को ड्राइव में अंतिम रूप से आवंटित किया जा रहा है। दूसरा रन यह सुनिश्चित करेगा कि प्रत्येक फ़ाइल ड्राइव के पार "काफी" वितरित की गई है। मैं समान रूप से के बजाय निष्पक्ष रूप से कहता हूं क्योंकि यह केवल समान रूप से वितरित किया जाएगा यदि आप ड्राइव क्षमता का मिश्रण नहीं कर रहे हैं जैसा कि मैं अपने छापे के 10 विभिन्न आकार के जोड़े (4tb दर्पण + 3 टीबी दर्पण + 3 टीबी दर्पण) के साथ हूं।
स्क्रिप्ट का उपयोग करने के कारण
- मुझे समस्या को "इन-प्लेस" ठीक करना होगा। उदाहरण के लिए, मैं डेटा को दूसरे सिस्टम पर नहीं लिख सकता, इसे यहां हटा दें और इसे फिर से वापस लिख दें।
- मैंने अपना पूल 50% से अधिक भर दिया, इसलिए मैं मूल को हटाने से पहले एक बार में पूरे फाइल सिस्टम को कॉपी नहीं कर सकता था।
- यदि केवल कुछ फाइलें हैं जिन्हें अच्छा प्रदर्शन करने की आवश्यकता है, तो कोई भी उन फाइलों पर दो बार स्क्रिप्ट चला सकता है। हालाँकि, दूसरा रन केवल तभी प्रभावी होता है जब पहला रन ड्राइव के उपयोग को संतुलित करने में सफल होता है।
- मेरे पास बहुत अधिक डेटा है और मैं प्रगति के एक संकेत को देखने में सक्षम होना चाहता हूं।
मैं यह भी कैसे बता सकता हूं कि क्या यहां तक कि ड्राइव यूटिलाइजेशन हासिल किया गया है?
समय की अवधि (जैसे iostat -m 5
) पर iostat टूल का उपयोग करें और राइट्स की जांच करें। यदि वे समान हैं, तो आपने एक फैल भी हासिल किया है। वे नीचे दिए गए स्क्रीनशॉट में भी पूरी तरह से नहीं हैं, क्योंकि मैं 4TB की एक जोड़ी को RAID 10 में 3TB ड्राइव के 2 जोड़े के साथ चला रहा हूं, इसलिए दो 4 के बारे में थोड़ा और लिखा जाएगा।
यदि आपका ड्राइव उपयोग "असंतुलित" है, तो iostat नीचे स्क्रीनशॉट की तरह कुछ और दिखाएगा जहां नए ड्राइव को असम्मानित रूप से लिखा जा रहा है। आप यह भी बता सकते हैं कि वे नए ड्राइव हैं क्योंकि रीड 0 पर हैं क्योंकि उनके पास कोई डेटा नहीं है।
स्क्रिप्ट परफेक्ट नहीं है, केवल एक वर्कअराउंड है, लेकिन यह मेरे लिए इस बीच काम करता है जब तक कि ZFS एक दिन BTRFS की तरह एक रिबैलेंसिंग फीचर लागू नहीं करता (उंगलियां पार हो गई)।