2009-05-26 13 views
8

श्रेय दस्तावेज कहता है कि श्रेय "प्रभावी होने की गारंटी नहीं है" (नीचे देखें)। तो अगर मैंने अपने Ext3 फाइल सिस्टम या RAID पर एक दस्तावेज़ फेंक दिया, तो क्या होता है? क्या मैं फाइल का हिस्सा छीनता हूं? क्या कभी-कभी यह पूरी चीज को तोड़ देता है और कभी-कभी नहीं? क्या यह अन्य सामान फेंक सकता है? क्या यह केवल फाइल हेडर को फेंक देता है?श्रेय: जर्नल एफएस पर काम नहीं करता है?

सावधानी: ध्यान दें कि श्रेय एक बहुत ही महत्वपूर्ण धारणा पर निर्भर करता है: कि फ़ाइल सिस्टम डेटा को ओवरराइट करता है। यह चीजों को करने का पारंपरिक तरीका है, लेकिन कई आधुनिक फ़ाइल सिस्टम डिज़ाइन इस धारणा को पूरा नहीं करते हैं। निम्नलिखित जिस पर सिस्टम चूरे फ़ाइल के उदाहरण हैं प्रभावी नहीं है, या सभी फ़ाइल sys- tem मोड में प्रभावी होने के लिए इसकी गारंटी नहीं है: इस तरह के आपूर्ति की उन लोगों के रूप

  • लॉग-संरचित या जर्नल फाइल सिस्टम, AIX और सोलारिस (और JFS, ReiserFS, XFS, Ext3, आदि)

  • फाइल सिस्टम है कि अनावश्यक डेटा लिख ​​सकते हैं और कुछ राईट इस तरह के RAID आधारित फाइल सिस्टम के रूप में, असफल भले ही

  • फ़ाइल पर ले जाने के साथ सिस्टम जो स्नैपशॉट्स बनाते हैं, जैसे कि नेटवर्क एप्लायंस एनएफएस सर्वर

  • फाइल सिस्टम है कि अस्थायी स्थानों में कैश, जैसे कि NFS संस्करण के रूप में 3 ग्राहकों

  • संकुचित फाइल सिस्टम

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

उत्तर

12

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

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

RAID फाइल सिस्टम (RAID मोड के आधार पर) मूल ब्लॉक की सभी प्रतियों को ओवरराइट नहीं कर सकता है। यदि अनावश्यकता है, तो आप एक डिस्क को तोड़ सकते हैं लेकिन अन्य (ओं) नहीं, या आप पाएंगे कि अलग-अलग पासों ने विभिन्न डिस्क को प्रभावित किया है जैसे कि प्रत्येक डिस्क आंशिक रूप से कटा हुआ है।

किसी भी फाइल सिस्टम पर, डिस्क हार्डवेयर स्वयं एक त्रुटि का पता लगाने के लिए ऐसा हो सकता है (या, फ्लैश के मामले में, बिना किसी त्रुटि के पहनने के स्तर पर पहनने के स्तर को लागू करें) और लॉजिकल ब्लॉक को एक अलग भौतिक ब्लॉक में रीमेप करें, कि मूल दोषपूर्ण (या अप्रयुक्त) चिह्नित है लेकिन कभी ओवरराइट नहीं किया गया है।

संपीड़ित फाइल सिस्टम मूल ब्लॉक को ओवरराइट नहीं कर सकते हैं, क्योंकि जिस डेटा के साथ श्रेय ओवरराइट्स या तो प्रत्येक पास पर यादृच्छिक या अत्यधिक संपीड़ित होता है, और कोई भी फ़ाइल को इसके संपीड़ित आकार को मूल रूप से बदल सकता है और इसलिए स्थानांतरित हो सकता है। एनटीएफएस एमएफटी में छोटी फाइलों को स्टोर करता है, और जब एक ब्लॉक के एकाधिक में फाइलसाइज को घुमाया जाता है, तो इसका पहला "ओवरराइट" आम तौर पर फाइल को नए स्थान पर स्थानांतरित कर देगा, जो तब छोटे से छोड़े जाने वाले बिंदु को छोड़ देगा एमएफटी स्लॉट untouched।

श्रेय इन शर्तों में से किसी का पता नहीं लगा सकता है (जब तक कि आपके पास कोई विशेष कार्यान्वयन नहीं है जो सीधे आपके एफएस और ब्लॉक ड्राइवर को संबोधित करता है - मुझे नहीं पता कि ऐसी कोई चीजें वास्तव में मौजूद हैं या नहीं)। यही कारण है कि जब यह फाइल सिस्टम की तुलना में पूरी डिस्क पर उपयोग किया जाता है तो यह अधिक विश्वसनीय होता है।

श्रेय कभी भी अन्य फ़ाइलों के अर्थ में "अन्य सामान" को तोड़ता नहीं है। इसके ऊपर के कुछ मामलों में आपके डेटा वाले ब्लॉक के बजाय पूर्व-आवंटित ब्लॉक को तोड़ दिया गया है। यह फाइल सिस्टम में किसी भी मेटाडेटा को भी खराब नहीं करता है (जो मुझे लगता है कि "फ़ाइल हेडर" से आपका क्या मतलब है)। -यू विकल्प फ़ाइल नाम को ओवरराइट करने का प्रयास करता है, उसी लंबाई के नए नाम पर नाम बदलकर और उस फ़ाइल को हटाने से पहले उस समय एक अक्षर को 1 char तक छोटा कर देता है। यदि आप -v भी निर्दिष्ट करते हैं तो आप इसे क्रिया में देख सकते हैं।

2

चिंता यह है कि डेटा डिस्क पर एक से अधिक स्थानों पर मौजूद हो सकता है। जब डेटा एक ही स्थान पर मौजूद होता है, तो श्रेय निश्चित रूप से उस जानकारी को "मिटा" सकता है। हालांकि, फाइल सिस्टम जो जर्नल या अन्य उन्नत फाइल सिस्टम डिस्क पर अस्थायी रूप से, एकाधिक स्थानों में आपकी फ़ाइल का डेटा लिख ​​सकते हैं। श्रेय - तथ्य के बाद - इस बारे में जानने का कोई तरीका नहीं है और यह जानने का कोई तरीका नहीं है कि डेटा को अस्थायी रूप से डिस्क पर कहां लिखा जा सकता है। इस प्रकार, उनके पास उन डिस्क क्षेत्रों को मिटाने या ओवरराइट करने का कोई तरीका नहीं है।

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

यदि आप कटाई का उपयोग कर रहे हैं, तो आप यह सुनिश्चित करने की कोशिश कर रहे हैं कि आपके डेटा को पुनर्निर्मित करने का कोई भी संभावित तरीका नहीं है।झुकाव के लेखक ईमानदार हैं कि उनके नियंत्रण से परे कुछ स्थितियां हैं जहां वे यह गारंटी नहीं दे सकते हैं।

3

अन्य उत्तरों ने पहले से ही यह बताने का अच्छा काम किया है कि क्यों श्रेय ठीक से अपना काम नहीं कर सकता है।

यह संक्षेप किया जा सकता है के रूप में:

चूरे केवल विभाजन पर, नहीं अलग-अलग फ़ाइलों काम करता है

के रूप में अन्य उत्तर में बताया गया है, यदि आप एक एकल फाइल चूरे:

    वहाँ
  • इस बात की कोई गारंटी नहीं है कि वास्तविक डेटा वास्तव में ओवरराइट किया गया है, क्योंकि फाइल सिस्टम डिस्क
  • पर अलग-अलग स्थानों पर एक ही फ़ाइल में लिख सकता है, वहां कोई g नहीं है एफएस ने डेटा को कहीं और
  • पर कॉपी नहीं किया है, तो एफएस आपके लेखन को "ऑप्टिमाइज़" करने का भी निर्णय ले सकता है, क्योंकि आप एक ही फाइल को बार-बार लिख रहे हैं (सिंकिंग इसे रोकने के लिए माना जाता है, लेकिन फिर भी: कोई गारंटी नहीं)

लेकिन क्या आप जानते है कि भले ही अपने फाइल सिस्टम बुरा चीजों के किसी भी ऊपर नहीं करता है, तो आप भी विचार करने के लिए है कि कई अनुप्रयोग स्वत: फ़ाइल डेटा की प्रतिलिपियां भी बना होगा:

  • दुर्घटना वसूली फ़ाइलें कौन सा शब्द प्रोसेसर, संपादक (जैसे विम) इत्यादि पेरी लिखेंगे odically
  • थंबनेल/फ़ाइल प्रबंधक में पूर्वावलोकन फ़ाइलें (कभी कभी भी गैर imagefiles के लिए)
  • अस्थायी फ़ाइलों कि कई आवेदन

तो उपयोग करते हैं, हर एक द्विआधारी आप अपने डेटा के साथ काम करने के लिए उपयोग की जाँच की कमी, हो सकता है कि इसे सही तरीके से कॉपी किया गया हो, & केंद्र बिना आपको पता चला। एकमात्र यथार्थवादी तरीका हमेशा पूर्ण विभाजन (या डिस्क) को तोड़ना है।

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