आलसी MNT_DETACH या `umount -l` असुरक्षित / खतरनाक क्यों है?


10

मैंने कुछ स्थानों पर पढ़ा है जो umount -lअसुरक्षित है:

@Cas द्वारा एक उत्तर में :

का उपयोग नहीं करते umountके --lazyविकल्प है यदि आप के बारे में जब बाहरी ड्राइव सुरक्षित रूप से अनप्लग हो सकता है परवाह

@Frostschutz द्वारा एक टिप्पणी :

umount --lazyसुरक्षित नहीं है और इसे सुरक्षित नहीं बनाया जा सकता है। [...]

util-linux Riediger Meier की यह टिप्पणी :

आपको इसके इस्तेमाल umount -lसे बचना चाहिए । बस उन सभी प्रक्रियाओं को मारें जो उपयोग कर रहे हैं /tmp/mountpointऔर फिर विकल्प के बिना umount -l

umount -lअसुरक्षित / खतरनाक क्यों है ?

क्या इसे सुरक्षित बनाने का कोई तरीका है?

जवाबों:


12

एक आलसी अनमाउंट एक श्रोडिंगर की बिल्ली माउंट बनाता है

  • आपको पता नहीं चल सकता है कि डिवाइस वास्तव में अनमाउंट है या नहीं
  • "अनमाउंटेड" फाइलसिस्टम कुछ परिस्थितियों में सुलभ रहता है
  • "अनमाउंटेड" फाइलसिस्टम कुछ परिस्थितियों में सुलभ नहीं है

सुरक्षा का एक गलत अर्थ है : ऐसा प्रतीत होता है कि फाइल सिस्टम अनमाउंट किया गया है, लेकिन वास्तव में इसे केवल फ़ाइल नामस्थान / उत्तराधिकार से छिपाया गया है।

  • प्रक्रियाएं अभी भी खुले फ़ाइल विवरणकों के माध्यम से लिख सकती हैं
  • नई या मौजूदा फ़ाइलों को संबंधित पथनाम के माध्यम से माउंटपॉइंट के अंदर एक कार्यशील निर्देशिका के साथ प्रक्रियाओं द्वारा लिखने के लिए खोला जा सकता है

इसका मतलब है कि यदि आप umount -l /media/hddअब /media/hdd/dir/file(पूर्ण पथनाम) का उपयोग नहीं कर पाएंगे, लेकिन अगर आपके पास कार्यशील निर्देशिका के साथ एक प्रक्रिया है, तो /media/hddयह अभी भी नई प्रक्रियाएं बनाने में सक्षम होगा जो पढ़ / लिख सकते हैं ./dir/file(सापेक्ष पथनाम)।

यदि आप डिवाइस को अनमाउंट करने का प्रयास करते हैं, तो आप एक भ्रमित संदेश देंगे:

# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted

इससे ऐसा लगता है कि डिवाइस अनवांटेड है, लेकिन डिस्क पर लिखने की प्रक्रिया अभी भी हो सकती है।

चूंकि विभिन्न गैर-स्पष्ट परिस्थितियां हैं, जो umount को ब्लॉक करने का कारण बन सकती हैं , फाइल सिस्टम अभी भी अनमाउंट नहीं किया जा सकता है, हालांकि lsof +f -- /dev/deviceकुछ भी नहीं दिखाता है।

आपको कभी पता नहीं चलेगा कि फाइलसिस्टम वास्तव में अनमाउंट है या नहीं। इसका पता लगाने का कोई तरीका नहीं है।

निकालने योग्य डिवाइस

यदि आप umount -lएक हटाने योग्य डिस्क करते हैं, तो आप लिम्बो-लैंड में हैं: आप यह सुनिश्चित नहीं कर सकते कि सभी लंबित डेटा डिस्क पर लिखे गए हैं।

सभी लेखन को पूरा करने और भविष्य के लेखन को रोकने केumount -l लिए एक के बाद आप सबसे अच्छा कर सकते हैं , लेकिन आप अभी भी गारंटी नहीं दे सकते हैं कि यह अनमाउंट किया गया है।

हटाने योग्य उपकरणों के साथ, यदि डिवाइस ठीक से अनमाउंट नहीं है, तो अजीब व्यवहार के परिणामस्वरूप अगली बार इसे प्लग इन किया जा सकता है:

  • डिवाइस को एक बढ़े हुए डिवाइस का नाम मिलेगा, अर्थात /dev/sdbबन जाएगा /dev/sdc। कर्नेल लॉग संदेश अभी भी संदर्भित कर /dev/sdbसकते हैं, हालांकि वह डिवाइस अब फ़ाइल के रूप में मौजूद नहीं है /dev। (इसका समाधान करने का एकमात्र तरीका मुझे पता है कि रिबूट करना है।)

  • btrfs भ्रष्टाचार परिणाम दे सकता है। btrfs को उम्मीद है कि किसी दिए गए UUID के साथ केवल एक फाइल सिस्टम एक समय में मौजूद है। कर्नेल अभी भी समान UUID को प्रेत डिवाइस और नए डिवाइस पर उपलब्ध देखता है। (मुझे अपने btrfs बैकअप HDD का पुनर्निर्माण करना पड़ा)।

systemd gotchas


"नई या मौजूदा फाइलें रिश्तेदार मार्ग के माध्यम से माउंटपॉइंट के अंदर एक कार्यशील निर्देशिका के साथ प्रक्रियाओं द्वारा लिखने के लिए खोली जा सकती हैं" यह वह जानकारी है जिसकी मुझे तलाश थी। क्या आपके पास कोई अतिरिक्त लिंक या संदर्भ हैं?
जोनाथन रेनहार्ट

@ जोंथॉन चेक मैन ऑमाउंट। मुझे गूगल करने की आवश्यकता है अन्यथा। यदि आप ऐसा करते हैं तो कृपया अपने निष्कर्ष पोस्ट करें।
टॉम हेल

मैंने umount(2)हाल ही में कई बार पढ़ा है । यह केवल कहता है "एक आलसी अनमाउंट करें: नए एक्सेस के लिए माउंट पॉइंट को अनुपलब्ध करें, तुरंत फाइल सिस्टम को डिस्कनेक्ट करें और सभी फाइल सिस्टम इसे एक दूसरे से और माउंट टेबल से नीचे माउंट करें, और वास्तव में अनमाउंट करें जब माउंट पॉइंट व्यस्त हो जाता है।" । " लेकिन दुर्भाग्य से यह आपके द्वारा प्रदान किए गए से भी कम विवरण है।
जोनाथन रेनहार्ट

umount(8)एक फ़ाइल सिस्टम व्यस्त है "उदाहरण के लिए, जब उस पर खुली फाइलें होती हैं, या जब किसी प्रक्रिया की अपनी कार्यशील निर्देशिका होती है, या जब उस पर एक स्वैप फ़ाइल उपयोग में होती है।" यह एक निश्चित सूची की तरह नहीं है, लेकिन शायद उतना ही अच्छा है जितना मैं पा सकूंगा।
जोनाथन रेनहार्ट

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