ZFS प्रदर्शन: क्या मुझे पूल या फ़ाइल सिस्टम में खाली स्थान रखने की आवश्यकता है?


17

मुझे पता है कि ZFS का प्रदर्शन मुक्त स्थान की मात्रा पर बहुत अधिक निर्भर करता है:

पूल के प्रदर्शन को बनाए रखने के लिए पूल का उपयोग 80% से कम रखें। वर्तमान में, पूल प्रदर्शन बहुत कम होने पर पूल का प्रदर्शन कम हो सकता है और फ़ाइल सिस्टम को अक्सर अपडेट किया जाता है, जैसे कि एक व्यस्त मेल सर्वर पर। पूर्ण पूल प्रदर्शन पर जुर्माना लगा सकते हैं, लेकिन कोई अन्य समस्या नहीं। [...] ध्यान रखें कि 95-96% रेंज में ज्यादातर स्थिर सामग्री के साथ भी लिखना, पढ़ना और फिर से भरना प्रदर्शन को भुगतना पड़ सकता है। ZFS_Best_Practices_Guide, Solarisinternals.com (ark.org)

अब, मान लीजिए कि मेरे पास ZT फाइल सिस्टम की मेजबानी करने वाला 10T का raidz2 पूल है volume। अब मैं एक चाइल्ड फाइल सिस्टम बनाता हूं volume/testऔर इसे 5T का आरक्षण देता हूं ।

फिर मैं एनएफएस प्रति कुछ मेजबान के लिए दोनों फ़ाइल सिस्टम को माउंट करता हूं और कुछ काम करता हूं। मैं समझता हूं कि मैं volume5T से अधिक नहीं लिख सकता , क्योंकि शेष 5T आरक्षित हैं volume/test

मेरा पहला सवाल यह है कि, प्रदर्शन में गिरावट कैसे आएगी, अगर मैं अपने volumeमाउंट पॉइंट को ~ 5T से भर दूं ? क्या यह ड्रॉप होगा, क्योंकि ZFS के कॉपी-ऑन-राइट और अन्य मेटा-सामान के लिए उस फाइल सिस्टम में कोई खाली जगह नहीं है? या क्या यह वैसा ही रहेगा, क्योंकि ZFS रिक्त स्थान का उपयोग आरक्षित स्थान के लिए कर सकता है volume/test?

अब दूसरा सवाल । क्या इससे कोई फर्क पड़ता है, अगर मैं सेटअप को निम्नानुसार बदलूं? volumeअब दो फ़ाइल सिस्टम हैं, volume/test1और volume/test2। दोनों को एक 3T आरक्षण दिया गया है (लेकिन कोई कोटा नहीं)। अब मान लें, मैं 7T को लिखता हूं test1। क्या दोनों फाइल सिस्टम के लिए प्रदर्शन समान होगा, या यह हर फाइल सिस्टम के लिए अलग होगा? क्या यह गिरा, या वही रहेगा?

धन्यवाद!

जवाबों:


9

हाँ। आपको अपने पूल में खाली जगह रखने की आवश्यकता है। यह मुख्य रूप से कॉपी-ऑन-राइट एक्शन और स्नैपशॉट के लिए है। प्रदर्शन लगभग 85% उपयोग में गिरावट। आप उच्च जा सकते हैं, लेकिन एक निश्चित प्रभाव है।

आरक्षण के साथ खिलवाड़ मत करो। खासकर एनएफएस के साथ। यह आवश्यक नहीं है। शायद एक zvol के लिए, लेकिन NFS नहीं।

मैं हालांकि भ्रम नहीं देखता। यदि आपके पास 10T है, तो इसका 85% से अधिक उपयोग न करें। अपने शेयरों को उचित रूप से आकार दें, उनके उपयोग को कैप करने के लिए कोटा का उपयोग करें। या किसी भी कोटा का उपयोग न करें और अपने समग्र पूल उपयोग की निगरानी करें ।


धन्यवाद! कोटा का उपयोग करने के लिए हमारी सेटिंग में कोई उचित तरीका नहीं है, इसलिए हर कोई एक ही आरोह बिंदु का उपयोग करता है और अंतरिक्ष को भर सकता है, जिससे प्रदर्शन में गिरावट आ सकती है। मेरा विचार आरक्षण के साथ कुछ खाली जगह की गारंटी देना था ताकि समग्र प्रणाली कभी धीमी न हो। लेकिन IIUC, मैं यह गारंटी volume8.5T तक सीमित करके रख सकता हूं और फिर कभी इस बारे में नहीं सोचूंगा। क्या वो सही है?
पावेल

आप .. या बस देख सकते हैं। मेरा मतलब है, यह एनएफएस है ... ज़्वोल नहीं, इसलिए आप 8.5TB के तहत वापस पाने के लिए फ़ाइलों को हटा सकते हैं।
ewwhite

हाँ, लेकिन यह एक दर्द है "कृपया अपने श को साफ करें .., फ़ाइलरवर बहुत धीमी गति से है" मेलिंग सूचियों में चर्चा हर कुछ हफ्तों में होती है ...
पावेल

एक सामाजिक / प्रशासनिक समस्या का तकनीकी समाधान :) क्या आप उस डेटा का अनुमान लगाते हैं?
इविहित

हेहे .. हाँ, यह एक बहुत ही सामान्य स्थिति है जिसका हम सामना करते हैं। तो, इस तरह के दावे हैं: "कई फ़ाइल निर्माण और विलोपन के साथ फाइल सिस्टम पर, प्रदर्शन की सुरक्षा के लिए उपयोग को 80% से कम रखा जाना चाहिए।" क्योंकि यह वास्तव में फ़ाइल सिस्टम के बजाय एक पूल के भीतर मुक्त स्थान के बारे में है?
पावेल

21

प्रदर्शन में गिरावट तब होती है जब आपकी ज़ुल्फ़ या तो बहुत भरी होती है या बहुत खंडित हो जाती है। इसका कारण ZFS के साथ नियोजित मुक्त ब्लॉक खोज का तंत्र है। NTFS या ext3 जैसी अन्य फ़ाइल सिस्टम के विरोध में, कोई ब्लॉक बिटमैप नहीं है जो दिखा रहा है कि कौन से ब्लॉक पर कब्जा है और कौन से स्वतंत्र हैं। इसके बजाय, ZFS आपके ज़वोल को (आमतौर पर 200) बड़े क्षेत्रों में विभाजित करता है, जिसे "मेटास्लैब" कहा जाता है और प्रत्येक मेटास्लैब में एवीएल-ट्री को 1 निःशुल्क ब्लॉक सूचना (स्पेस मैप) में संग्रहीत करता है। संतुलित एवीएल पेड़ अनुरोध के आकार को अवरुद्ध करने वाले ब्लॉक के लिए एक कुशल खोज की अनुमति देता है।

जबकि इस तंत्र को पैमाने के कारणों के लिए चुना गया है, दुर्भाग्य से यह भी एक प्रमुख दर्द निकला जब उच्च स्तर के विखंडन और / या अंतरिक्ष उपयोग होता है। जैसे ही सभी मेटाबेस एक महत्वपूर्ण मात्रा में डेटा ले जाते हैं, आपको पूल खाली होने पर बड़ी संख्या में छोटे क्षेत्रों के विपरीत बड़ी संख्या में मुफ्त ब्लॉक मिलते हैं। यदि ZFS को फिर 2 MB स्थान आवंटित करने की आवश्यकता होती है, तो यह सभी मेटाबेस के स्पेस मैप को पढ़ना और मूल्यांकन करना शुरू कर देता है या तो 2 ब्लॉक को छोटे ब्लॉकों में तोड़ने के लिए एक उपयुक्त ब्लॉक या रास्ता ढूंढता है। इस कोर्स में कुछ समय लगता है। इससे भी बुरी बात यह है कि यह पूरी तरह से I / O संचालन का एक बहुत खर्च होगा क्योंकि ZFS वास्तव में भौतिक डिस्क से सभी अंतरिक्ष मानचित्रों को पढ़ेगा । के लिए किसी भी आपके लेखन की।

प्रदर्शन में गिरावट महत्वपूर्ण हो सकती है। यदि आप सुंदर चित्रों को पसंद करते हैं, तो डेल्फीक्स पर ब्लॉग पोस्ट पर एक नज़र डालें, जिसमें कुछ संख्याओं ने एक (ओवरसम्प्लीफाइड लेकिन अभी तक मान्य) ज़ैफ़ पूल को हटा दिया है। मैं बेशर्मी से ग्राफ में से एक को चुरा रहा हूं - इस ग्राफ में नीली, लाल, पीली और हरी रेखाओं को देखें जो क्रमशः (10%, 50%, 75%, और 93% क्षमता पूल का प्रतिनिधित्व करते हैं) समय के साथ विखंडित होते हुए KB / s: ज़ूल प्रदर्शन में गिरावट

इस पर एक त्वरित और गंदी नियमावली पारंपरिक रूप से मेटास्लैब डिबगिंग मोड रही है (बस echo metaslab_debug/W1 | mdb -kwसेटिंग बदलने के लिए रन-टाइम पर मुद्दा )। इस स्थिति में, प्रत्येक रैम ऑपरेशन में अत्यधिक और महंगे I / O की आवश्यकता को हटाते हुए, सभी स्पेस मैप्स को OS RAM में रखा जाएगा। अंततः, इसका मतलब यह भी है कि आपको अधिक मेमोरी की आवश्यकता है, विशेष रूप से बड़े पूल के लिए, इसलिए यह स्टोरेज हॉर्स-ट्रेड के लिए एक रैम की तरह है। आपका 10 टीबी पूल शायद आपको 2-4 जीबी मेमोरी 2 का खर्च देगा , लेकिन आप इसे बिना किसी परेशानी के 95% तक उपयोग कर पाएंगे।


1 यह थोड़ा और अधिक जटिल है, यदि आप रुचि रखते हैं, तो विवरण के लिए अंतरिक्ष के नक्शे पर बोनविक की पोस्ट देखें

2 यदि आपको मेमोरी के लिए एक ऊपरी सीमा की गणना करने के तरीके की आवश्यकता है, तो वर्तमान में प्रत्येक मेटास्लैब में उपयोग में zdb -mm <pool>आने वाली संख्या को पुनः प्राप्त करने के लिए segmentsउपयोग करें, इसे दो से विभाजित करके सबसे खराब स्थिति वाला मॉडल बनाएं (प्रत्येक कब्जा किए गए सेगमेंट को मुफ्त में पालन किया जाएगा। ), इसे AVL नोड के लिए रिकॉर्ड आकार से गुणा करें (दो मेमोरी पॉइंटर्स और एक मान, 128 बिट्स की प्रकृति को देखते हुए और 64-बिट एड्रेसिंग को 32 बाइट्स तक समिट किया जाएगा, हालांकि लोग आमतौर पर 64 बाइट्स के लिए मान लेते हैं कारण)।

zdb -mm tank | awk '/segments/ {s+=$2}END {s*=32/2; printf("Space map size sum = %d\n",s)}'

संदर्भ: मूल रूपरेखा इस पोस्टिंग में मार्कस कोवरो द्वारा zfs- चर्चा मेलिंग सूची में निहित है , हालांकि मेरा मानना ​​है कि उन्होंने अपनी गणना में कुछ गलतियां की हैं, जो मुझे सही होने की उम्मीद है।


syneticon-dj, इस स्पष्टीकरण के लिए धन्यवाद! रैम बढ़ने से वास्तव में मदद मिलती है।
पावेल

बीपीआर (ब्लॉक पॉइंटर रीराइट) के बारे में क्या? इसके अलावा यह एक blogs.kent.ac.uk/unseenit/2013/10/02/… में ZIL के लिए SLOG का उपयोग करने का भी उल्लेख है। और यह आदमी nex7.blogspot.com.au/2013/03/readme1st.html कहता है कि आप इसे तब तक भेजें और प्राप्त करें जब तक यह सब अच्छा न हो जाए।
CMCDragonkai

@CMCDragonkai मैं आपको अनुभव से आश्वस्त कर सकता हूं, कि एक अलग ZIL डिवाइस का उपयोग करने से स्पेस मैप के विखंडन के कारण प्रदर्शन हिट की ओर कुछ भी नहीं होता है। लेकिन ZIL डिवाइस नहीं होने से समग्र विखंडन बढ़ जाएगा और आप अंतरिक्ष उपयोग के कम प्रतिशत पर इस मुद्दे को हिट करने की अधिक संभावना होगी। बीपीआर अभी भी वाष्पशील है - कोई भी प्रदर्शनकारी कोड मौजूद नहीं है, एक स्थिर कार्यान्वयन बहुत कम है। एक भेजा-प्राप्त चक्र वास्तव में डीफ़्रेग्मेंटेड पूल प्राप्त करने में मदद करने की संभावना है, लेकिन इसका मतलब यह होगा कि भेजे गए / प्राप्त किए गए डेटासेट के लिए डाउनटाइम।
वबबिट

यदि आपने किसी अन्य डिस्क पर भेजने-प्राप्त करने से पहले डेटासेट को दोहराया है तो क्या होगा? और फिर बस प्रत्येक डिस्क के लिए भेजें-प्राप्त चक्र को घुमाएं?
CMCDragonkai

@CMCDragonkai आप एक पूर्ण भेज पहले और उसके बाद वृद्धिशील के साथ काम करके डाउनटाइम छोटा रख सकते हैं । लेकिन डाउनटाइम यह रहता है। यदि आप डेटाबेस या वर्चुअलाइजेशन के लिए बैकएंड स्टोरेज के रूप में अपने डेटासेट का उपयोग करते हैं, तो डाउनटाइम में दर्द होता है, भले ही यह छोटा हो। इसके अलावा, आपको काम करने के लिए एक अलग, खाली पूल की आवश्यकता होगी।
वबबिट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.