सिस्टमड माउंट विफल। जहाँ = सेटिंग यूनिट के नाम से मेल नहीं खाती है


20

अगर मैं इस कमांड का उपयोग करता हूं:

mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1

सभी सही ढंग से काम करता है। लेकिन अगर मैं माउंट के माध्यम से systemdमाउंट करने की कोशिश करता हूं तो यह विफल हो जाता है।

मैंने /etc/systemd/system/mnt-d1.mountनिम्नलिखित सामग्री के साथ एक फ़ाइल बनाई है:

[Unit]
Description = Disk 1

[Mount]
What = LABEL=d1
Where = /srv/node/d1
Type = xfs
Options = noatime,nodiratime,logbufs=8

[Install]
WantedBy = multi-user.target

उसके बाद मैं ये कमांड चलाता हूं:

systemctl daemon-reload
systemctl start mnt-d1.mount

पिछले एक ने मुझे दिखाया:

Failed to start mnt-d1.mount: Unit mnt-d1.mount failed to load: Invalid argument.  
See system logs and 'systemctl status mnt-d1.mount' for details.

systemctl status mnt-d1.mount मुझे दिखाया गया:

May 16 18:13:52 object1 systemd[1]: Cannot add dependency job for unit mnt-d1.mount, ignoring: Unit mnt-d1.mount failed to ...ectory.
May 16 18:24:05 object1 systemd[1]: mnt-d1.mount's Where= setting doesn't match unit name. Refusing.

कृपया मुझे एक systemdमाउंट इकाई के माध्यम से एक डिस्क को माउंट करने में मदद करें ।


अभी भी काम नहीं करता है .. एक ही त्रुटि
एलेक्जेंड्रा

इस सवाल को फिर से खोलना चाहिए - मुझे एक ही समस्या है और टिप्पणी में प्रस्तुत समाधान ने मेरी मदद की। टिप्पणी को एक उत्तर दिया जाना चाहिए ताकि मैं इसे बढ़ा सकूं।
Guss

जवाबों:


26

त्रुटि संदेश कारण बताता है:

Where= setting doesn't match unit name. Refusing.

हालांकि उस संदेश को समझने के लिए कई मैन पेज पढ़ना आवश्यक है।
प्रति systemd.mountआदमी पृष्ठ (मेरा जोर दें):

Where=

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

"ऊपर देखें" भाग है:

माउंट इकाइयों को उनके द्वारा नियंत्रित माउंट प्वाइंट निर्देशिकाओं के नाम पर रखा जाना चाहिए। उदाहरण: माउंट बिंदु /home/lennartको एक इकाई फ़ाइल में कॉन्फ़िगर किया जाना चाहिए home-lennart.mount। फ़ाइल सिस्टम पथ को इकाई नाम में परिवर्तित करने के लिए उपयोग किए जाने वाले भागने के तर्क के बारे में जानकारी के लिए, देखें systemd.unit(5)

ठीक है, systemd.unitमैन पेज बताता है कि:

systemd-escape(1) कमांड का उपयोग करके उचित रूप से भागे हुए रास्तों को उत्पन्न किया जा सकता है ।

systemd-escapeमैन पेज की ओर इशारा करते हुए जो बताता है कि यह कैसे करना है:

एक पथ के लिए माउंट इकाई उत्पन्न करने के लिए:

$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount

तो, आपके मामले में, /srv/node/d1अनुवाद करता हैsrv-node-d1.mount


3
यह ध्यान रखना महत्वपूर्ण है कि "पथ से बचना" प्रणाली गैर-एज़ेड नामों के साथ भी थोड़ा जटिल हो सकती है। यहां तक ​​कि मार्ग में कुछ डैश को सी-स्टाइल \x2dएस्केप में बदलने की आवश्यकता होगी , जिसका उपयोग यूनिट फाइल बनाने के लिए किया जा सकता है (आपके शेल / एडिटर के आधार पर) फिर से स्लैश कैरेक्टर से बचने की आवश्यकता हो सकती है - इसलिए यूनिट फाइल फिट /some-pathहो सकती है आवश्यकता है उन्हें चलानेedit some\\x2dpath.mount
Guss

मैंने यह पता लगाने की कोशिश की कि मैं माउंट क्यों नहीं कर सकता share-name। इसका नाम बदलने share_nameसे समस्या हल हो गई।
ब्रायन जेड

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