ब्लॉक आकार को समझना


11

मेरा प्रश्न पोस्टग्रेट्स को लक्षित करता है, लेकिन उत्तर केवल किसी भी डेटाबेस पृष्ठभूमि से आने वाले पर्याप्त अच्छे हो सकते हैं।

क्या मेरी धारणा सही है:

  • डिस्क का एक निश्चित ब्लॉक आकार है?
  • RAID नियंत्रक में एक अलग ब्लॉक आकार हो सकता है? क्या एक RAID ब्लॉक कई वास्तविक डिस्क ब्लॉक पर विभाजित हो जाता है?
  • फाइलसिस्टम में एक स्वतंत्र ब्लॉक आकार भी होता है जो फिर से RAID ब्लॉक आकार में विभाजित हो जाता है?
  • Postgres फिक्स्ड 8k ब्लॉक के साथ काम करता है। फाइलसिस्टम ब्लॉक आकार की मैपिंग यहाँ कैसे होती है? क्या Postgres 8k फाइल सिस्टम द्वारा एक साथ बैच किए गए हैं?

जब एक प्रणाली की स्थापना 8k पर सभी ब्लॉकों के लिए सबसे अच्छा है? या सेटिंग्स वास्तविक मामला नहीं है? मैं भी सोच रहा था कि क्या कुछ "गलत" ब्लॉक आकार सेटिंग्स क्रैश की स्थिति में डेटा अखंडता को खतरे में डाल सकती हैं? शायद अगर एक Postgres 8k ब्लॉक को कई डिस्क ब्लॉक पर विभाजित किया जाना है?

या कुछ भी एक साथ नहीं मिलता है, और इसलिए मैं परिभाषित ब्लॉक आकारों के बीच हर बेमेल के साथ डिस्क स्थान को ढीला करता हूं?

जवाबों:


16

डिस्क क्षेत्र

एक डिस्क में एक निश्चित क्षेत्र का आकार होता है, आम तौर पर कुछ आधुनिक डिस्क पर 512 बाइट्स या 4096 बाइट्स; इन डिस्क में एक मोड भी होगा जहां वे 512 बाइट सेक्टर का अनुकरण करते हैं। डिस्क में सेक्टरों की संख्या अलग-अलग होगी; डिस्क के बाहर के करीब पटरियों में अधिक सेक्टर होते हैं क्योंकि उनके पास दिए गए बिट घनत्व के लिए अधिक जगह होती है। यह डिस्क स्थान के अधिक कुशल उपयोग की अनुमति देता है; आम तौर पर एक ट्रैक में आधुनिक डिस्क पर 1,000 512 बाइट सेक्टर जैसा कुछ होगा।

कुछ फ़ॉर्मेटिंग संरचनाओं में शामिल हो सकते हैं, सिक्योरिटीज़ में त्रुटि सुधारने वाली जानकारी, जो 520 या 528 बाइट सेक्टरों के साथ निम्न-स्तरीय स्वरूपित डिस्क में प्रकट होती है। इस मामले में अभी भी सेक्टर में उपयोगकर्ता डेटा के 512 बाइट्स हैं। न तो विंडोज और न ही लिनक्स सीधे इसका समर्थन करते हैं, हालांकि i5OS (आईबीएम iSeries) और विभिन्न सैन नियंत्रक करते हैं।

आम तौर पर सेक्टर / हेड / ट्रैक का तार्किक ब्लॉक पते में अनुवाद किया जाता है; पिछड़े संगतता के साथ ऐतिहासिक मुद्दों के कारण ऑपरेटिंग सिस्टम (विशेष रूप से आईडीई और एसएटीए डिस्क पर) द्वारा देखी गई ज्यामिति (हेड एक्स सेक्टर एक्स ट्रैक) का सामान्य रूप से इसकी भौतिक संरचना के साथ बहुत कम संबंध है।

RAID पट्टी का आकार

RAID नियंत्रक में स्ट्रिप (उदाहरण के लिए RAID-5 या RAID-10) का उपयोग करके एक सरणी के लिए एक स्ट्राइप आकार हो सकता है। यदि सरणी में (128 मीटर की पट्टी के लिए) एक्सैम्पल है, तो प्रत्येक डिस्क में 128k सन्निहित डेटा होता है, और फिर डेटा का अगला सेट अगली डिस्क पर होता है। आम तौर पर आप डिस्क की प्रति क्रांति लगभग एक पट्टी प्राप्त करने की उम्मीद कर सकते हैं, इसलिए पट्टी का आकार कुछ कार्यभार पर प्रदर्शन को प्रभावित कर सकता है।

विभाजन संरेखण

डिस्क विभाजन एक RAID स्ट्रिप के साथ बिल्कुल संरेखित हो सकता है या नहीं भी हो सकता है, और यदि यह संरेखित नहीं है, तो विभाजन रीड के कारण प्रदर्शन में गिरावट हो सकती है। कुछ सिस्टम (जैसे विंडोज 2008 सर्वर) स्वचालित रूप से डिस्क वॉल्यूम स्ट्राइप आकार के साथ संरेखित करने के लिए विभाजन कॉन्फ़िगर करेंगे। कुछ (जैसे विंडोज 2003 सर्वर) नहीं होगा, और आपको विभाजन उपयोगिता का उपयोग करना होगा जो यह सुनिश्चित करने के लिए स्ट्राइप अलाइनमेंट का समर्थन करता है।

फ़ाइल सिस्टम ब्लॉक का आकार

फ़ाइल सिस्टम एक निश्चित आकार के टुकड़ों में भंडारण के ब्लॉक आवंटित करेगा। आम तौर पर यह विन्यास योग्य है - उदाहरण के लिए NTFS आवंटन इकाइयों (IIRC) 4K से 64K तक का समर्थन करेगा। RAID धारियों के विभाजन और फ़ाइल सिस्टम ब्लॉक का गलत संयोजन कई डिस्क एक्सेस उत्पन्न करने के लिए पढ़े गए एकल फाइल सिस्टम ब्लॉक का कारण बन सकता है जहां केवल एक ही आवश्यक होगा यदि फ़ाइल सिस्टम ब्लॉक RAID धारियों के साथ सही ढंग से संरेखित हो।

डेटाबेस ब्लॉक का आकार

डेटाबेस किसी दिए गए ब्लॉक आकार में टेबल या इंडेक्स में जगह आवंटित करेगा। SQL सर्वर के मामले में यह 8K है, और कई प्रणालियों पर 8K डिफ़ॉल्ट है। Oracle जैसी कुछ प्रणालियों पर, यह विन्यास योग्य है, और PostgreSQL पर यह एक बिल्ड-टाइम विकल्प है। अधिकांश प्रणालियों पर तालिकाओं के लिए स्थान आवंटन आम तौर पर बड़ी मात्रा में किया जाता है, उन खंडों के भीतर आवंटित ब्लॉक के साथ।

फाइलसिस्टम और डेटा आवंटन ब्लॉकों का मिसलिग्न्मेंट एक एकल ब्लॉक लिखने के लिए कई I / Os उत्पन्न कर सकता है, जो एक प्रदर्शन जुर्माना लगा सकता है।

आई / ओ चंकिंग

आम तौर पर एक DBMS वास्तव में अपने I / O को एक से अधिक ब्लॉक के भाग में करेगा। उदाहरण के लिए, SQL सर्वर पर, सभी I / O 8 ब्लॉक, 64k के कुल में किए जाते हैं)। ओरेकल पर यह विन्यास योग्य है। PostgreSQL डॉक्स का आकस्मिक निरीक्षण यह बताता है कि PostgreSQL ऐसा करता है या नहीं, इसलिए मुझे यकीन नहीं है कि यह इस प्लेटफॉर्म पर कैसे काम करता है।

जब I / O चंक फाइल सिस्टम ब्लॉक साइज से बड़ा होता है या RAID स्ट्रिप बाउंड्रीज़ के साथ मिसल किया जाता है, तो DB से लिखी गई डिस्क से मल्टीपल डिस्क लिखने का कारण बन सकता है, जो परफॉर्मेंस पेनल्टी उत्पन्न करता है।

डिस्क स्थान का उपयोग

कोई डिस्क स्थान व्यर्थ नहीं है - डेटाबेस I / O का उपयोग डिस्क पर एक या अधिक भौतिक I / O संचालन को पूरा करने के लिए किया जाएगा - लेकिन गलत तरीके से I / O अक्षमता उत्पन्न कर सकते हैं जो डेटाबेस को धीमा कर देगा। मुख्य चीजें जो संरेखण में होनी चाहिए:

  • RAID पट्टियाँ और विभाजन - विभाजन एक RAID पट्टी सीमा पर शुरू होना चाहिए।

  • फाइलसिस्टम I / O आवंटन और छापे पट्टी / विभाजन सीमाएँ - एक RAID स्ट्रिप सीमा एक filesystem आवंटन इकाई के साथ संरेखित होनी चाहिए, और एक से अधिक filesystem आवंटन इकाई आकार होना चाहिए।

  • डिस्क लेखन आकार और फाइलसिस्टम आवंटन इकाई का आकार। डेटाबेस I / O संचालन और फाइलसिस्टम I / O संचालन के बीच 1: 1 संबंध होना चाहिए।

Misalignment अन्यथा डेटा मौजूद नहीं होने से अधिक डेटा अखंडता समस्या नहीं बनाता है। डेटाबेस और फाइल सिस्टम में तंत्र होता है ताकि यह सुनिश्चित किया जा सके कि फाइल सिस्टम ऑपिरेशंस परमाणु हैं। आम तौर पर एक डिस्क दुर्घटना डेटा हानि लेकिन डेटा अखंडता मुद्दों में परिणाम होगा।


बहुत अच्छा जवाब। मुझे बुरा लगता है कि मैं आपको केवल एक उत्थान देने में सक्षम हूं ...
फ्रांज काफ्का

केवल एक और सवाल: जब आप संरेखित करने की बात करते हैं तो वास्तव में आपका क्या मतलब है? क्या यह छोटे ब्लॉक आकार का एक गुणक है? उदाहरण 32k 8k से संरेखित है? या अन्य कारक शामिल हैं?
फ्रांज काफ्का

@FranzKafka - नहीं, इसका मतलब है कि जब कुछ (आमतौर पर एक डिस्क विभाजन) एक ऐसे स्थान पर शुरू होता है जो कि इसके साथ संरेखित नहीं होना चाहिए। उदाहरण के लिए, यदि मेरे पास 128K RAID स्ट्राइप साइज है और विभाजन 'ब्लॉक 0' से 128K के मल्टीपल पर शुरू नहीं होता है, तो मैं तार्किक रीड को दो भौतिक आवंटन इकाइयों में विभाजित कर सकता हूं, जिसमें दो रीड ऑपरेशन की आवश्यकता होती है, प्रदर्शन जुर्माना।
कंसर्नडऑफटुनब्रिजवेल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.