एनटीएफएस क्या ब्लॉक आवंटन एल्गोरिथ्म का उपयोग करता है?


10

विंडोज एक्सपी 64 पर, मैंने 1.2 जीबी फ़ाइल डाउनलोड की और यह खंडित हो गया, जैसा कि चित्र दिखाता है। दुर्भाग्य से, Piriform Defraggler से स्नैपशॉट लेने से पहले मैंने अन्य फ़ाइलों को डीफ़्रैग्मेन्ट किया था, इसलिए आप उस बिंदु पर सटीक स्थिति नहीं देख सकते हैं जिस पर फ़ाइल लिखी गई थी। हालाँकि, डिस्क हर समय लगभग खाली थी (अब इस्तेमाल किया हुआ 25%) और शायद ही खंडित हो।

स्क्रीनशॉट 1

एनटीएफएस क्या ब्लॉक आवंटन एल्गोरिथ्म का उपयोग करता है? यह यादृच्छिक की तरह दिखता है या शायद इसे डालते हैं जहां डिस्क सिर वास्तव में खड़ा होता है।

अपडेट करें:

एक नई फ़ाइल के 67 MiB लिखने के बाद आज ऐसा ही हुआ। यह 731 टुकड़ों में विभाजित हो गया, केवल 95 KiB का औसत आकार। फ़ाइल का उपयोग कुछ अंतरालों को भरने के लिए किया गया था, लेकिन उन सभी में नहीं, यह विशाल निरंतर मुक्त स्थान का उपयोग नहीं करता है। अजीब है, है ना?

स्क्रीनशॉट 2

अद्यतन 2:

पीसी गुरु के विपरीत , मुझे नहीं लगता कि ओपेरा अपराधी है। मुझे लगता है कि (Google क्रोम के विपरीत) विंडोज को अपेक्षित आकार नहीं बताता है, हालांकि, कई मामले हैं जब यह संभव नहीं है और यह एक समझदार तरीके से संभालना ओएस की जिम्मेदारी है। निम्न चित्र दिखाता है कि कुछ दिनों के बाद मेरे साथ क्या हुआ इस विभाजन पर लगभग कुछ भी नहीं कर रहा है - टीईएमपी निर्देशिका और मेरे सभी डेटा (विंडोज द्वारा प्रबंधित लोगों को छोड़कर) दोनों कहीं और स्थित हैं। विंडोज को लगता है कि वह SetEndOfFileअपनी फ़ाइलों का उपयोग नहीं करता है और भयावह तरीके से टुकड़े करता है (लगभग ४० एमबी की एक छोटी फाइल के ६०० टुकड़े)। NTFS पहले उपलब्ध क्षेत्र का उपयोग नहीं करता है, क्योंकि बीच में फिर से फाइलें हैं और काफी खाली डिस्क (उपयोग 23%) के अंत के पास भी हैं,

स्क्रीनशॉट 3

जवाबों:


12

IIRC, NTFS फाइल सिस्टम सन्निहित भंडारण में फाइल को आवंटित करने का प्रयास करता है। हालाँकि यह केवल यह कर सकता है कि यदि फाइलसिस्टम फाइल के आकार को जानता है। यदि आप एक फ़ाइल खोलते हैं और इसे लिखना शुरू करते हैं, तो यह फ़ाइल को फिट करने के लिए "सबसे अच्छी" जगह पर लिखेगा (आमतौर पर थाली के बाहर की ओर)। लेकिन वह "सर्वश्रेष्ठ" स्थान फ़ाइल को फिट करने के लिए बहुत बड़ा नहीं हो सकता है।

यदि एप्लिकेशन NTFS को फ़ाइल का वास्तविक आकार ( SetEndOfFile () के साथ ) बताता है, तो NTFS फ़ाइल के लिए सन्निहित स्थान खोजने का एक बेहतर काम कर सकता है (SetEndOfFile API कारण NTFS को संपूर्ण फ़ाइल के लिए भंडारण आवंटित करने का कारण बनता है)।


लेकिन ऐसा लगता है कि NTFS ने सभी अंतरालों को भर दिया और डिस्क पर समान रूप से बाकी के सभी प्रकार को फैला दिया। जैसा कि मैंने कहा, डिस्क अब तक पूरी तरह से फुलर नहीं थी, आप फ़ाइल के कुछ हिस्सों को कुछ अंतिम सेक्टरों (यानी, सबसे खराब स्थानों पर) को लिख गए। अन्य हिस्सों को दो कब्जे वाले क्षेत्रों के बीच छोटे क्षेत्रों में निचोड़ लिया गया था, हालांकि कहीं और मुक्त स्थान था।
Maaartinus

क्या आपने डिस्क पर फ़ाइल लिखने से पहले setEndOfFile पर कॉल किया था? यदि आपने नहीं किया, तो NTFS के पास फ़ाइल के वास्तविक आकार को जानने का कोई तरीका नहीं है, इसलिए यह उपलब्ध संग्रहण का उपयोग करके फ़ाइल को बढ़ाएगा।
रिंस्टेटमोनिका लैरी ओस्टरमैन

यह मैं नहीं था, यह ओपेरा था। सबसे शायद नहीं। बहरहाल, यह अजीब कुछ भी करने का कोई कारण नहीं है।
मातरिनस

आपका क्या मतलब है "वह अजीब"? यदि NTFS आपके द्वारा लिखे गए फ़ाइल के आकार को जानता है, तो यह फ़ाइल के बारे में स्मार्ट बातें करेगा। यदि यह फ़ाइल आकार नहीं जानता है, तो यह स्टोरेज आवंटन का अच्छा काम नहीं कर सकता है।
ReinstateMonica लैरी ओस्टरमैन

@ लैरी ओस्टरमैन: निश्चित रूप से, फ़ाइल आकार को जाने बिना इसे सही करना कठिन है। लेकिन यह करना कि बुरा करना बहुत कठिन है।
मातरिनस

2

आपकी समस्या ओपेरा के साथ होनी चाहिए। मैंने अभी बहुत पूर्ण और खंडित ड्राइव पर फ़ाइलों का एक गुच्छा देखा है। Chrome का उपयोग करके डाउनलोड की गई बड़ी फ़ाइलें सभी सन्निहित थीं।

इससे पता चलता है कि क्रोम को डाउनलोड की शुरुआत में फ़ाइल का आकार पता था, इसलिए एनटीएफएस को उम्मीद करने के लिए फ़ाइल का आकार बताया। यदि आप ऐसा करते हैं कि NTFS फ़ाइल को एक ही टुकड़े में रखने की कोशिश करेगा, या जब कोई टुकड़ा काफी बड़ा नहीं होगा, तो सबसे बड़े उपलब्ध टुकड़ों में। दिलचस्प रूप से यह हमेशा आकार के अवरोही क्रम में इन टुकड़ों का उपयोग करता है, इसलिए खंडित ड्राइव पर एक्सप्लोरर द्वारा कॉपी की गई बड़ी फाइलें, ड्राइव के चारों ओर कूद सकती हैं।

जहां प्रोग्राम फ़ाइल का आकार नहीं जानता है, या NTFS को बताने की जहमत नहीं उठाता है, लेकिन इसके बजाय बस एक फाइल खोलता है और अनुक्रमिक डेटा लिखना शुरू करता है, ऐसा प्रतीत होता है कि NTFS FAT32 के समान कार्य करता है, जो कि पहले उपलब्ध क्लस्टर (या उस सत्र में अंतिम आबंटित होने के बाद पहले उपलब्ध) फिर वहां से जो कुछ भी उपलब्ध है उसका उपयोग करता है। एक उदाहरण के रूप में, उसी समय मैंने CCleaner को रजिस्ट्री को स्कैन करने के लिए कहा, जिससे इसे एक बड़े txt ".Reg" फ़ाइल तक वापस भेज दिया गया। यह फ़ाइल ड्राइव की शुरुआत के पास शुरू हुई और फिर 127 अलग-अलग टुकड़ों में बिखर गई। एक्सप्लोरर के साथ कॉपी की गई फ़ाइलों के विपरीत, या क्रोम के साथ डाउनलोड की गई, हर फ़ाइल में मैंने देखा, क्लस्टर को आरोही क्रम में आवंटित किया गया था।

इस शोध के लिए मैंने Winhex (Winhex.com से उपलब्ध नि: शुल्क परीक्षण संस्करण) का उपयोग किया। जब एक निर्देशिका प्रविष्टि देख रहे हैं। उस फ़ाइल द्वारा उपयोग किए गए समूहों की सूची देखने के लिए, एक फ़ाइल नाम पर राइट-क्लिक करें और स्थिति, सूची समूह चुनें।


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