2013-08-07 7 views
10

में आलसी अंतरिक्ष आवंटन क्या है, मैं Google फ़ाइल सिस्टम (जीएफएस) पेपर के माध्यम से जा रहा था, यह उल्लेख करता है कि जीएफएस आंतरिक विखंडन को कम करने के लिए आलसी अंतरिक्ष आवंटन का उपयोग करता है।
क्या कोई समझा सकता है, आलसी अंतरिक्ष आंतरिक टुकड़े टुकड़े को कम करता है?Google फ़ाइल सिस्टम

स्रोत: http://research.google.com/archive/gfs-sosp2003.pdf

+2

संभावित आलसी [आलसी आवंटन क्या है?] (Http://stackoverflow.com/questions/712683/what-is-lazy-allocation) – brokenfoot

+0

यदि आपको कोई जवाब उपयोगी लगता है, तो कृपया इसे चिह्नित करके इसे स्वीकार करें उत्तर पाठ के लिए छोड़ दिया। –

उत्तर

1

मैं पूरी paper..but मैं आशा करता हूं कि निम्नलिखित टुकड़ा एक छोटे रूप में आप की मदद करनी चाहिए नहीं पढ़ा है।

पहला प्रश्न मैं पूछूंगा कि: फ़ाइल सिस्टम में बड़े ब्लॉक आकार होने का क्या प्रभाव है? आइए हम कहें कि एफएस ब्लॉक आकार 64 एमबी है। अच्छी खबर यह है कि हम हार्ड डिस्क (प्रति खोज अधिक लिखित डेटा), अच्छे अप्रत्यक्ष ब्लॉक में रखने के लिए कम मेटाडाटा आदि में अच्छे संगत हिस्सों में लिखते हैं। बुरी खबर आंतरिक विखंडन है .. अगर फ़ाइल 1 एमबी है, लेकिन न्यूनतम ब्लॉक आकार 64 एमबी है , 63 एमबी का आंतरिक विखंडन है। तो, अच्छी खबर कैसे प्राप्त करें और बुरी खबरों से कैसे बचें?

एक तरीका आलसी अंतरिक्ष आवंटन करना या अंतरिक्ष आवंटन में देरी करना है। यहां, हम ब्लॉक आकार को छोटा (1 एमबी कहते हैं) रखते हैं, लेकिन जब हम डिस्क पर लिखते हैं तो हम डेटा के एक बड़े हिस्से को लिखते हैं यानी कई 1 एमबी भाग एक साथ लिखते हैं। इस तरह, हमें बड़े ब्लॉक लिखने की भलाई मिलती है। ध्यान दें कि इसका मतलब है कि हम एक इंकोर बफर को लिखते हैं लेकिन लिखते हैं() sys कहते हैं कि यह डिस्क पर लिख रहा है ... बस बफर कैश को लिखना पसंद है।

नोट: जब "समय" वास्तविक ब्लॉक आवंटन करने आया है, तो हमें डिस्क पर गारंटीकृत स्थान की आवश्यकता है। इसलिए, देरी ब्लॉक आवंटन => अंतरिक्ष आरक्षण लिखने के समय किया जाता है, लेकिन अंतरिक्ष आवंटन बाद में किया जाता है जब पर्याप्त डेटा ब्लॉक कोर में जमा हो जाते हैं।

+1

लेकिन जीएफएस में ब्लॉक आकार छोटा नहीं है (1 एमबी)। असल में यह कहता है "हमने 64 एमबी चुना है, जो कि सामान्य फाइल सिस्टम अवरुद्ध करने से काफी बड़ा है। आलसी अंतरिक्ष आवंटन आंतरिक विखंडन के कारण अंतरिक्ष बर्बाद करने से बचाता है"। तो यहां अधिक ब्लॉक आकार का उपयोग करने के बावजूद, आंतरिक खंडन कम हो गया है, कैसे? शायद मुझे यहां कोई अवधारणा याद आ रही है। – user2328404

+0

हैलो, क्या इसका मतलब है कि 1kb फ़ाइल के लिए डिस्क पर अनुपलब्ध स्थान 64 एमबी है? – alexsc

0

डेटा को पहले एक बफर में लिखा जाता है। इसलिए, फ़ाइल को बनाए जाने के पल में स्मृति आवंटित करने के बजाय, वे वास्तविक लेखन होने तक प्रतीक्षा कर रहे हैं। जैसा कि एक्सएफएस http://en.wikipedia.org/wiki/XFS#Delayed_allocation

3

आलसी अंतरिक्ष आवंटन के साथ, अंतरिक्ष के भौतिक आवंटन को यथासंभव लंबे समय तक देरी हो रही है, जब तक कि खंड आकार के आकार (जीएफएस के मामले में, 2003 के पेपर के अनुसार 64 एमबी) डेटा एकत्र नहीं हो जाता है। दूसरे शब्दों में, डिस्क पर एक नए खंड के आवंटन से पहले निर्णय प्रक्रिया, लिखे जाने वाले डेटा के आकार से काफी प्रभावित होती है। किसी अन्य विशेषता के आधार पर अधिक हिस्सों को आवंटित करने की बजाय प्रतीक्षा करने की यह प्राथमिकता, आंतरिक विखंडन (यानी 64 एमबी खंड के अप्रयुक्त हिस्सों) का मौका कम करती है।

Google पेपर में, यह भी कहता है: "अधिकांश भाग पूर्ण होते हैं क्योंकि अधिकांश फाइलों में कई भाग होते हैं, जिनमें से केवल अंतिम भाग आंशिक रूप से भरा जा सकता है।" तो, फ़ाइल निर्माण के लिए एक ही दृष्टिकोण लागू किया गया है।

यह इस के अनुरूप है: http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory

0

आप बनाने पर फ़ाइल आकार तय करने के लिए नहीं है। और आप इसे एक बड़ी फ़ाइल में जोड़ सकते हैं। आप this का संदर्भ दे सकते हैं।

संबंधित मुद्दे