क्या फाइलसिस्टम मेटाडेटा ऑपरेशन वास्तव में ext4 और xfs में प्रकाशित होते हैं?


9

मैं एक सरल, सीधा उत्तर नहीं पा सकता हूं कि फाइलसिस्टम मेटाडेटा ऑपरेशन वास्तव में ext4 और xfs फाइलसिस्टम पत्रिकाओं के लिए बना रहता है। ध्यान दें कि मैं इस बारे में पूछताछ नहीं कर रहा हूं कि POSIX "परमाणु" होने की क्या घोषणा करता है। मैं इस बात को लेकर अधिक चिंतित हूं कि परमाणु फाइलसिस्टम के संचालन का सबसे बड़ा हिस्सा प्रभावी रूप से टिकाऊ है, जो बिना पीछे की ओर झुकते हुए और fsync(2)हर समय सक्षम जर्नल के साथ चलने में सक्षम है ।

संचालन मैं निश्चित रूप से गणना कर रहा हूं:

  • creat(2)
  • link(2)
  • unlink(2)
  • rename(2)
  • mkdir(2)
  • rmdir(2)

उन ऑपरेशनों के बारे में जिन पर मुझे पूरा यकीन नहीं है:

  • symlink(2)

symlink(2)मामला है सबसे, परेशान कर के बाद से वहाँ के लिए किसी भी सरल तरीके से होना प्रतीत नहीं होता है fsync(2)या fdatasync(2)अंतर्निहित datablocks कि एक सिमलिंक की सामग्री की दुकान। यह जानते हुए कि पत्रिका मेरे लिए इस बात का ध्यान रखती है कि यह एक राहत होगी।

जवाबों:


1

प्रदर्शन कारणों से, ext4 डिफ़ॉल्ट रूप से केवल जर्नल के माध्यम से फाइलसिस्टम मेटाडेटा लिखता है।

मेरा मानना ​​है कि XFS भी सभी मेटाडेटा लेनदेन को जर्नल्स करता है, जब तक कि आपने फाइलसिस्टम को ट्वीक नहीं किया है।


हाँ, लेकिन विशेष रूप से "मेटाडेटा" क्या है? एक निर्देशिका के ब्लॉक: निश्चित। स्वयं इनोड्स: हाँ। एक लक्ष्य के साथ सायंकलिंक छोटे इनोड में खुद को फिट करने के लिए: शायद? साइमलिंक जहां लक्ष्य सहायक ब्लॉकों में फैलता है: ??????

लिंक मदद करेगा
asdmin

1

मैं इस बात को लेकर अधिक चिंतित हूं कि परमाणु फाइलसिस्टम संचालन के सबसेट का हर समय पीछे की ओर झुकना और fsync (2) के बिना सक्षम किए गए जर्नल के साथ चलने के गुण से प्रभावी रूप से टिकाऊ है।

कोई नहीं। यदि आप यह सुनिश्चित करना चाहते हैं कि क्रैश के बाद परिवर्तन जारी रहे, तो आपको fsync, पीरियड होना चाहिए। जर्नलिंग केवल गारंटी देता है कि दुर्घटना की स्थिति में, आपके द्वारा सूचीबद्ध कोई भी ऑपरेशन आधा नहीं किया जाएगा।


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

@naelyn, एक fsync () फ़ाइल से संबंधित सभी ब्लॉक को गैर-फास्ट सिम्लिंक सहित फ्लश करेगा।
Psusi

1
मैं fsync में उपयोग के लिए एक उपयुक्त फ़ाइल डिस्क्रिप्टर कैसे खोलूं जो एक गैर-फास्ट सिम्लिंक के ब्लॉक को फ्लश कर दे?
रॉबियर

@naelyn, ओह ये ... अच्छी बात है ... उस के बारे में पूछने की जरूरत हो सकती है कि linux-fsdevel मेलिंग सूची पर एक ... कड़ी मेहनत के साथ मेरा मानना ​​है कि आप इसे खोलते हैं और निर्देशिका युक्त सिंक करते हैं, शायद सिमिलिंक एक ही काम करते हैं?
Psusi

0

आप जानते हैं कि ext4 जर्नल ब्लॉक नंबर द्वारा संचालित होता है और ऑपरेशन नहीं, सही है? "मेटाडेटा" दिए गए इनोड के लिए उस वास्तविक डेटा ब्लॉक के अलावा और कुछ भी होगा, भले ही आपने ब्लॉक में किस ऑपरेशन को संशोधित किया हो।


0

xfstests प्रकट होता है () कि fsync दावा करने के लिए एक निर्देशिका पर कोई सिमलिंक इसमें जारी रहती है चाहिए।

मैंने इसे सत्यापित नहीं किया है। यह संभव है कि मैंने कुछ याद किया हो।

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

https://github.com/kdave/xfstests/blob/master/tests/generic/348

# Test creating a symlink, fsync its parent directory, power fail and mount
# again the filesystem. After these steps the symlink should exist and its
# content must match what we specified when we created it (must not be empty
# or point to something else).
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.