क्यों एक ext4 मात्रा में इन फ़ाइलों को खंडित कर रहे हैं?


19

मेरे पास एक ext4(चुंबकीय) हार्ड ड्राइव पर 900 जीबी का विभाजन है जिसमें कोई दोष नहीं है और कोई बुरा क्षेत्र नहीं है। विभाजन एक खाली lost+foundनिर्देशिका को छोड़कर पूरी तरह से खाली है । विभाजन को डिफ़ॉल्ट मापदंडों का उपयोग करके स्वरूपित किया गया था, सिवाय इसके कि मैंने आरक्षित फाइलसिस्टम ब्लॉक की संख्या 1% निर्धारित की।

मैंने xubuntu-15.04-desktop-amd64.isoविभाजन के आरोह बिंदु निर्देशिका का उपयोग करके ~ 900MB फ़ाइल डाउनलोड की wget। जब डाउनलोड समाप्त हो गया, तो मैंने पाया कि फ़ाइल चार टुकड़ों में विभाजित थी:

filefrag -v /media/emma/red/xubuntu-15.04-desktop-amd64.iso
Filesystem type is: ef53
File size of /media/emma/red/xubuntu-15.04-desktop-amd64.iso is 1009778688 (246528 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..   32767:      34816..     67583:  32768:            
   1:    32768..   63487:      67584..     98303:  30720:            
   2:    63488..   96255:     100352..    133119:  32768:      98304:
   3:    96256..  126975:     133120..    163839:  30720:            
   4:   126976..  159743:     165888..    198655:  32768:     163840:
   5:   159744..  190463:     198656..    229375:  30720:            
   6:   190464..  223231:     231424..    264191:  32768:     229376:
   7:   223232..  246527:     264192..    287487:  23296:             eof
/media/emma/red/xubuntu-15.04-desktop-amd64.iso: 4 extents found

यह सोचते हुए कि यह wgetकिसी भी तरह से संबंधित हो सकता है , मैंने विभाजन से आईएसओ फ़ाइल को हटा दिया, इसे फिर से खाली कर दिया, फिर मैंने ~ 700MB फ़ाइल v1.mp4का उपयोग करके विभाजन को कॉपी किया cp। यह फ़ाइल भी खंडित थी। इसे तीन टुकड़ों में विभाजित किया गया था:

filefrag -v /media/emma/red/v1.mp4
Filesystem type is: ef53
File size of /media/emma/red/v1.mp4 is 737904458 (180153 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..   32767:      34816..     67583:  32768:            
   1:    32768..   63487:      67584..     98303:  30720:            
   2:    63488..   96255:     100352..    133119:  32768:      98304:
   3:    96256..  126975:     133120..    163839:  30720:            
   4:   126976..  159743:     165888..    198655:  32768:     163840:
   5:   159744..  180152:     198656..    219064:  20409:             eof
/media/emma/red/v1.mp4: 3 extents found

ये क्यों हो रहा है? और क्या ऐसा होने से रोकने का कोई तरीका है? मैंने सोचा ext4था कि विखंडन के लिए प्रतिरोधी होना चाहिए। इसके बजाय मुझे लगता है कि यह तुरंत एक एकान्त फ़ाइल को खंडित करता है जब बाकी के सभी वॉल्यूम अप्रयुक्त होते हैं। यह दोनों की तुलना में खराब लगता है FAT32और NTFS


4
मैं कल्पना कर सकता हूं कि किन परिस्थितियों में यह संभव हो सकता है, और मैं खाली आ रहा हूं।
ग्रेग हेविल

4
@GregHewgill: यह इसलिए मायने रखता है क्योंकि मुझे लगा कि यह असामान्य है। अब मुझे पता है कि यह सामान्य है, इससे कोई फर्क नहीं पड़ता।
दोपहर

जवाबों:


17

एक 900MB फ़ाइल में 3 या 4 टुकड़े है बहुत अच्छा। विखंडन एक समस्या बन जाता है जब उस आकार की एक फ़ाइल में 100+ टुकड़े अधिक होते हैं। इस तरह की फ़ाइल को कई सौ टुकड़ों में विभाजित करना वसा या ntfs के लिए असामान्य नहीं है।

आप आम तौर पर इससे कम से कम पुराने ext4 फाइल सिस्टम पर बेहतर नहीं देखेंगे क्योंकि एक ब्लॉक समूह का अधिकतम आकार 128 एमबी है, और इसलिए प्रत्येक 128 एमबी सन्निहित स्थान आवंटन बिटमैप्स और इनोड टेबल के लिए कुछ ब्लॉकों द्वारा टूट गया है। अगला ब्लॉक समूह। Flex_bg नामक एक और हाल ही की ext4 सुविधा इन तालिकाओं के एक साथ (आमतौर पर 16) ब्लॉक समूहों की संख्या को एक साथ पैक करने की अनुमति देती है, जो आवंटन योग्य ब्लॉकों के लंबे समय तक चलती है, लेकिन आपके वितरण पर निर्भर करती है और इसे प्रारूपित करने के लिए e2fsprogs के किस संस्करण का उपयोग किया गया था, यह विकल्प हो सकता है उपयोग नहीं किया गया है।

tune2fs -lजब आपके फ़ाइल सिस्टम को स्वरूपित किया गया था, तो आप सक्षम सुविधाओं की जाँच करने के लिए उपयोग कर सकते हैं ।


बहुत ही रोचक। मैंने माना कि सभी इनोड टेबल आदि वॉल्यूम के शुरू में थे।
एम्माव

1
@EmVV उन्हें डिस्क पर वितरित करते हुए, उनके द्वारा देखे जाने वाले डेटा के अपेक्षाकृत करीब है, जिसके परिणामस्वरूप शार्ट डिस्क और तेज़ डिस्क एक्सेस :)
hobbs

10

मैं वास्तव में जवाब नहीं दे सकता लेकिन मुझे लगता है कि इससे मदद मिल सकती है:

ध्यान दें कि प्रत्येक टुकड़ा कैसा है, अधिकतम, 32768 आकार में ब्लॉक (2 की शक्ति, जो एक ध्वज को उठाना चाहिए जो कुछ चल रहा है, और आपको कुछ देखने के लिए संकेत भी देता है)।

यह भी ध्यान देने योग्य है कि विलुप्त होने के बीच उन भौतिक संतानों एक दूसरे के बहुत करीब हैं।

से: Ext4 डिस्क लेआउट

एक ext4 फाइल सिस्टम ब्लॉक समूहों की एक श्रृंखला में विभाजित है। विखंडन के कारण प्रदर्शन की कठिनाइयों को कम करने के लिए, ब्लॉक आवंटनकर्ता प्रत्येक फ़ाइल के ब्लॉकों को एक ही समूह में रखने का बहुत प्रयास करता है, जिससे खोज समय कम हो जाता है। एक ब्लॉक समूह का आकार निर्दिष्ट है sb.s_blocks_per_group blocks, हालांकि इसे 8 * के रूप में भी गणना की जा सकती है block_size_in_bytes। 4KiB के डिफ़ॉल्ट ब्लॉक आकार के साथ, प्रत्येक समूह में 128MiB की लंबाई के लिए 32,768 ब्लॉक होंगे

और आगे नीचे:

विखंडन से निपटने के लिए ext4 का उपयोग करने वाला पहला उपकरण मल्टी-ब्लॉक एलोकेटर है। जब पहली बार कोई फ़ाइल बनाई जाती है, तो ब्लॉक एलोकेटर सट्टा से फाइल को 8KiB डिस्क स्थान आवंटित करता है [...] दूसरी संबंधित ट्रिक जो ext4 उपयोग करता है, आवंटन में देरी होती है। इस योजना के तहत, जब किसी फाइल को लिखने के लिए फाइल को अवशोषित करने के लिए अधिक ब्लॉक की आवश्यकता होती है, तो फाइल सिस्टम डिफॉल्ट डिस्क पर सटीक प्लेसमेंट तय करता है जब तक कि सभी गंदे बफ़र्स डिस्क से बाहर नहीं लिखे जा रहे हों। किसी विशेष प्लेसमेंट के लिए तब तक नहीं जब तक कि यह बिल्कुल आवश्यक न हो (प्रतिबद्ध टाइमआउट हिट हो, या सिंक () कहा जाता है, या कर्नेल मेमोरी से बाहर चला जाता है), उम्मीद है कि फाइलसिस्टम बेहतर स्थान निर्णय ले सकता है।

इसलिए मैं कहूंगा कि आवंटनकर्ता केवल ब्लॉक समूह (उन 32 के ब्लॉक) के भीतर डेटा इलाके के बारे में परवाह करता है , लेकिन ब्लॉक समूहों के एक दूसरे के प्रति सन्दर्भित होने के बारे में नहीं।


पहली बोली आपने मेरे प्रश्न का उत्तर दिया।
एम्मा

1
प्रत्येक सीमा में अधिकतम 32k ब्लॉक होते हैं क्योंकि अधिकतम लंबाई एक सीमा विवरणक कवर कर सकती है। विस्तार टुकड़े नहीं हैं। यदि आप कई extents के भौतिक ब्लॉकों को नोटिस करते हैं, तो वे पिछले सीमा के तुरंत बाद का पालन करते हैं, और इसलिए एक खंड (6 अंश बनाम 3 टुकड़े) का गठन नहीं करते हैं।
psusi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.