2011-03-07 28 views
11

अगर मैं एनटीएफएस फाइल सिस्टम पर संग्रहीत फाइल पढ़ रहा हूं, और मैं अभी भी उस फ़ाइल को स्थानांतरित/बदलने का प्रयास करता हूं, जबकि इसे अभी भी पढ़ा जा रहा है, तो मुझे ऐसा करने से रोका गया है। यदि मैं इसे EXIX3 जैसे यूनिक्स फ़ाइल सिस्टम पर आज़माता हूं, तो यह सफल होता है, और पढ़ने की प्रक्रिया अप्रभावित होती है। मैं फ़ाइल आरएम भी कर सकता हूं और पढ़ने की प्रक्रिया अप्रभावित हैं। यह कैसे काम करता है? क्या कोई मुझे समझा सकता है कि यह व्यवहार यूनिक्स फाइल सिस्टम के तहत क्यों समर्थित है लेकिन एनटीएफएस नहीं? मुझे एक अस्पष्ट लग रहा है कि इसे कठिन लिंक और इनोड्स के साथ करना है, लेकिन मैं एक अच्छी व्याख्या की सराहना करता हूं।यूनिक्स कैसे एमवी और आरएम खुली फाइलों के साथ काम करता है?

उत्तर

23

यूनिक्स फ़ाइल सिस्टम संदर्भ गिनती और फ़ाइलें खोजने के लिए एक दो परत वास्तुकला का उपयोग करें।

फ़ाइल नाम सूचना नोड या इंडेक्स नोड के लिए inode नामक किसी चीज़ को संदर्भित करता है। फ़ाइल सामग्री के साथ-साथ कुछ मेटाडाटा, जैसे फ़ाइल के प्रकार (सामान्य, निर्देशिका, डिवाइस इत्यादि) में इनोड स्टोर्स (एक पॉइंटर) और जो इसका मालिक है।

एकाधिक फ़ाइल नाम एक ही इनोड को संदर्भित कर सकते हैं; उन्हें hard links कहा जाता है। इसके अलावा, file descriptor (एफडी) एक इनोड को संदर्भित करता है। एक एफडी वस्तु का प्रकार होता है जब एक फ़ाइल खुलती है तो एक प्रक्रिया होती है।

यूनिक्स फाइल सिस्टम में एक फ़ाइल केवल गायब हो जाती है जब इसका अंतिम संदर्भ समाप्त हो जाता है, इसलिए जब कोई और नाम (हार्ड लिंक) या एफडी इसका संदर्भ नहीं देता है। तो, rm वास्तव में एक फ़ाइल को नहीं हटाता है; यह को पर एक फ़ाइल को हटा देता है।

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

+0

क्या कोई ऐसी सीमाएं हैं जहां मैं एक खुली फ़ाइल ले जा सकता हूं? जैसे केवल उसी फाइल सिस्टम के भीतर? –

+0

@ivan_pozdeev विभिन्न फाइल सिस्टम में एक फ़ाइल पर एक 'एमवी' कर रहा है वास्तव में डेटा को प्रतिलिपि बनाता है और मूल फ़ाइल को हटा देता है, इस मामले में यह खुली फ़ाइल के' आरएम' के समान है। – dsonck92

4

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

NTFS पर, तार्किक फ़ाइल नाम फ़ाइल है। फ़ाइल नाम से फ़ाइल मेटाइन्फो में कोई संकेतक परत नहीं है, वे एक ही वस्तु हैं। यदि आप इसे खोलते हैं, तो यह उपयोग में है और इसे हटाया नहीं जा सकता है, जैसे यूनिक्स पर वास्तविक फ़ाइल (इनोड) को उपयोग में होने पर हटाया नहीं जा सकता है।

यूनिक्स: फ़ाइल का नाम -> FileInfo -> डेटा

फ़ाइल NTFS: फ़ाइल का नाम/FileInfo -> डेटा फ़ाइल