एनएफएस माउंट पर घटनाओं को अलग क्यों किया जाता है?


10

कुछ समय पहले मैंने देखा कि जब एनएफएस माउंट बनाम एक स्थानीय फ़ाइल सिस्टम में फ़ाइल को सहेजा जाता है, तो इनोटिफ़ द्वारा बताई गई घटनाएं अलग होती हैं।

क्या अंतर्निहित VFS को फ़ाइल संचालन का एक समान दृष्टिकोण प्रदान नहीं करना चाहिए?

निम्नलिखित डेबियन 7.1 (लिनक्स 3.2) में फ़ाइल को सहेजने वाले VIM का निशान है

NFS माउंट पर:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2048 (IN_MOVE_SELF)
wd=1 mask = 4 (IN_ATTRIB)
wd=1 mask = 1024 (IN_DELETE_SELF)
wd=1 mask = 32768 )

एक स्थानीय फ़ाइल सिस्टम पर

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 8 (IN_CLOSE_WRITE)
wd=1 mask = 4 (IN_ATTRIB)

EMACS के साथ फाइल सेव करने से अलग-अलग bhavior का पता चलता है

NFS माउंट पर:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2048 (IN_MOVE_SELF)

स्थानीय फ़ाइल सिस्टम पर:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 8 (IN_CLOSE_WRITE)

ये परीक्षण वेयरर इन -टच-टच.c के साथ चलते हैं

जवाबों:


4

एनएफएस समर्थन को इनोटिफाई करें?

नेट के आस-पास देखने पर ऐसा प्रतीत होता है कि Inotify NFS का समर्थन कर सकता है लेकिन बहुत ही सीमित अंदाज में।

प्रदर्शनी 1

इसका कारण इस StackOverflow Q & A शीर्षक में बताया गया है: NFS के साथ इनओटाइज़ करें

स्वीकार किए जाते हैं उत्तर से अंश

inotify को कार्य करने के लिए कर्नेल से समर्थन की आवश्यकता होती है। जब कोई एप्लिकेशन किसी निर्देशिका को ट्रैक करता है, तो यह कर्नेल को सूचित करता है कि जब वे परिवर्तन होते हैं, तो उसे सूचित करें। जब परिवर्तन होता है, तो डिस्क में उन परिवर्तनों को लिखने के अलावा, कर्नेल भी देखने की प्रक्रिया को सूचित करता है।

दूरस्थ NFS मशीन पर, परिवर्तन कर्नेल को दिखाई नहीं देता है; यह पूरी तरह से दूर से होता है। एनएफएस इनोटिफाई करता है और एनएफएस या इसके समकक्ष कोई नेटवर्क स्तर का समर्थन नहीं है।

प्रदर्शन # 2

यदि आप अकसर पूछे जाने वाले प्रश्न को देखें तो थोड़ा और शोध करें

प्रश्न: क्या मैं sysfs (procfs, nfs ...) देख सकता हूं?

बस बोली: हाँ, लेकिन कुछ सीमाओं के साथ। ये सीमाएँ कर्नेल संस्करणों के बीच भिन्न होती हैं और छोटी हो जाती हैं। कृपया विशेष फाइलसिस्टम के बारे में जानकारी पढ़ें।

तो क्या यह समर्थित है?

मुझे लगता है कि अंततः आप जो अनुभव कर रहे हैं वह यह है कि एनएफएस स्थानीय रूप से माउंट किए गए फाइल सिस्टम के समान सभी विशेषताओं के बराबर सेब को एक सेब प्रदान नहीं करता है।

उदाहरण के लिए एक nfs linux थ्रेड से :

  • CIFS में (ऑप्लॉक्स) निर्मित अधिसूचना क्षमताएं हैं
  • एनएफएस अधिसूचना के लिए "पट्टे" प्रदान करता है

यहाँ मुद्दा यह है कि CIFS और NFS जैसी वैकल्पिक फाइलसिस्टम बहुत ही मूल पेशकश करते हैं, अगर कोई समर्थन सीधे इनऑटोफाई करता है।

NFS v4 राज्य

एनएफएस v4 राज्य पर आईबीएम लेख से अंश

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

  • एक क्लाइंट एक गेटअटर ऑपरेशन जारी करके सर्वर-निर्दिष्ट लीज टाइम-आउट विशेषता प्राप्त करता है। गेटैट एक स्टेटफुल ऑपरेशन नहीं है, इस प्रकार इसे स्थापित करने के लिए पूर्व स्थिति की आवश्यकता नहीं होती है। एक गेटअटर ऑपरेशन एक सेटक्लाइडिड या सेटक्लिएरिड_कॉन्फ़र्म ऑपरेशन से पहले हो सकता है।
  • लीज़ समय अवधि सेट करने और ट्यूनिंग करने के लिए एनएफएस सर्वर के लीज़टाइम साइट विशेषता का संदर्भ लें। *

3
ओपी एनएफएस पर घटनाओं को देख रहा है, वे स्थानीय फाइल सिस्टम पर देखे गए लोगों की तुलना में अलग हैं। जुड़ा हुआ प्रश्न और उत्तर inotifyएनएफएस पर घटनाओं की अनुपस्थिति का संकेत देता है ।
इरुवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.