ZFS और मिश्रित ड्राइव आकार एक स्पष्ट धारी सरणी के लिए


1

मुझे अपने ZFS सरणी के साथ एक प्रदर्शन समस्या हो रही है जो मुझे लगता है कि डीफ़्रेग्मेंटेशन के कारण है। मेरे पास 2 मिरर ड्राइव के साथ 20 उपकरणों की एक धारीदार सरणी है। मैंने हाल ही में इस धारीदार सरणी में कुछ डिवाइस जोड़े हैं जो मूल की तुलना में बड़े (2x) हैं।

जूलप आयस्टैट्स का उपयोग करने से पता चलता है कि भले ही कुछ पुराने उपकरण 90% भरे हुए हैं और नए केवल 50% भरे हुए हैं, सभी उपकरणों के बीच समान रूप से वितरित किए जाते हैं, हर% के स्वतंत्र रूप से या अंतरिक्ष से।

क्या ZFS एक धारीदार सरणी के लिए सभी समान आकार के उपकरणों की अपेक्षा करता है? क्या यही कारण है कि डिस्क का समान रूप से उपयोग नहीं किया जाता है, या यह पूरी तरह से अप्रासंगिक है?

जवाबों:


1

मैंने इसका उपयोग करके परीक्षण किया zdb -ddddd [देख http://www.cuddletech.com/blog/pivot/entry.php?id=980 ]

मैंने दो फाइलें बनाईं जिन्हें बुलाया गया disk1 तथा Disk2 कि 400M और फिर थे disk3 तथा disk4 650M पर, और मैंने उनका उपयोग करके एक झूले "टैंक" बनाया:

zpool create tank mirror disk1 disk2
zpool add mirror disk3 disk4

( मैं मान रहा हूं कि आपने इस्तेमाल किया zpool add mirror पूल में डिस्क को शामिल करने के लिए, और नहीं किया zpool attach एक मौजूदा दर्पण vdev को डिस्क; उत्तरार्द्ध एक सार्वभौमिक रूप से बुरा विचार है और वैसे भी क्षमता में वृद्धि नहीं करेगा, बस एक और दर्पण उपकरण जोड़ देगा )

जैसा कि मैंने एक समय में पूल को 100 मीटर तक भर दिया था। mkfile , मैंने जाँचा zdb -ddddd tank <inode#> यह देखने के लिए कि कौन से vdevs को लिखा जा रहा है, और zfs ने प्रत्येक के बीच लोड को संतुलित किया; 400 ब्लॉक पते में से, औसतन 300-350 छोटे "डिस्क" और 450-500 से बड़े को लिखे गए थे, यहां तक ​​कि आखिरी फाइल में भी जो पूल को भरते थे।

इसका मतलब है कि ZFS मर्जी प्रत्येक के बीच यह लिखता है ब्लॉक बाहर संतुलन vdev एक पूल में। (इस मामले में, आपके प्रत्येक 11 दर्पणों के बीच)। OTOH, यदि आप मौजूदा दर्पण का उपयोग करके एक बड़ा ड्राइव जोड़ रहे थे ज़ूल , ZFS नहीं होगा उस अतिरिक्त स्थान का उपयोग करने में सक्षम हो, क्योंकि यह दर्पण में प्रत्येक डिस्क के लिए समान ब्लॉक लिखता है।

यह आमतौर पर एक पूल में एक ही डिस्क का उपयोग करने की सिफारिश की जाती है, लेकिन यह स्पष्ट रूप से आवश्यक नहीं है। हालांकि, धीमी डिस्क के साथ एक पूल में एक तेज ड्राइव को जोड़ने से परेशान न हों; एक पूल में, आपकी सबसे धीमी डिस्क आपकी अड़चन होती है (हालांकि ZIL के लिए SSD लॉग जोड़ने से यह समस्या कम हो सकती है)।


इसके अलावा, मैं ZFS में डीफ़्रेग्मेंटेशन के बारे में चिंता नहीं करेगा, यह जानवर की प्रकृति है - क्योंकि ZFS एक है लिखने पर नकल फाइल सिस्टम, यह अपरिहार्य है। (मतलब, एक ब्लॉक डब्ल्यू / नए डेटा को अधिलेखित करने के बजाय, यह नए डेटा को एक नए ब्लॉक में लिखता है, फिर नए ब्लॉक का उपयोग करने के लिए मेटाडेटा पॉइंटर्स और चेकसम को अपडेट करता है।) मुझे उम्मीद नहीं है कि प्रदर्शन को नीचे खींचें।

90% फुल होने पर क्या होगा। (इंटरफेरस w / कॉपी-ऑन-राइट लिखें)। यह सलाह दी जाती है कि चोटी के प्रदर्शन के लिए 80% या उससे कम उपयोग करें।

जो मुझे कुछ और सोचने पर मजबूर करता है - आपका पूल पहले से मौजूद था, और फिर आपने दो नए डिस्क जोड़े - मौजूदा डेटा को उन डिस्क पर नहीं छीना जाएगा, तब तक नहीं जब तक कि यह फिर से न लिखा जाए, इसलिए मुझे कम कुल डेटा देखने की उम्मीद है कुछ समय के लिए नए डिस्क पर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.