"माउंट: / व्यस्त है" जब केवल पढ़ने के लिए माउंट करने की कोशिश कर रहा हूं ताकि मैं ज़ोर्फ्री चला सकूं


36

मैं zerofreeUbuntu 11.04 पर चलने की कोशिश कर रहा हूं ताकि मैं VirtualBox vdi छवि का उपयोग करके कॉम्पैक्ट कर सकूं:

VBoxManage modifyhd Ubuntu.vdi --compact

zerofreeडिस्क छवि को चलाने के लिए केवल-पढ़ने के लिए माउंट किया गया है। मैं इन निर्देशों का पालन कर रहा हूं, जो इसे केवल रिकवरी मोड से पढ़ने के लिए रिमूव करने के लिए कहते हैं (ड्रॉप टू रूट शेल प्रॉम्प्ट):

mount -n -o remount,ro -t ext2 /dev/sda1 /

लेकिन जब मैं ऐसा करता हूं तो मुझे त्रुटि मिलती है:

mount: / is busy

इसे कैसे करना है इस पर कोई आइडिया?

फॉलो अप : जरी के जवाब और इन कमांडों को चलाने के बाद इस मुद्दे को हल करता है।

service rsyslog stop
service network-manager stop
killall dhclient

4
ज़ीरोफ्री के लिए मैन पेज चलने का सुझाव देता है telinit 1और इससे मेरे लिए समस्या हल हो गई है।
एलेक्स रयान

जवाबों:


23

कुछ प्रक्रियाएं लिखने के लिए फाइलें खुली रख रही हैं। यह हो सकता है, उदाहरण के लिए, प्रोग्राम जो लॉग लिखते हैं, जैसे rsyslogd, नेटवर्किंग टूल, जैसे dhclientया कुछ और। एक-एक करके इनको बंद करना और रिमाउंट की कोशिश करना काम कर सकता है।

आप प्रोग्राम का उपयोग करके कुछ फ़ाइलों का उपयोग करने वाली प्रक्रियाओं को पा सकते हैं fuser। उदाहरण के लिए, fuser -v -m /प्रक्रियाओं की सूची लौटाएगा। हालाँकि, मुझे यकीन नहीं है कि यह इनमें से एक है जो फ़ाइल सिस्टम को व्यस्त रखता है।


2
राइट-मोड में फ़ाइलें खोलने वाली प्रक्रियाओं Fमें fuserआउटपुट में पहुँच फ़्लैग में पूंजी होगी ।
Jan Hudec

21

आप केवल पढ़ने के लिए फाइल-सिस्टम को रिमूव कर सकते हैं-केवल अगर कोई प्रक्रिया नहीं है जिसमें लिखने के लिए एक फ़ाइल खुली है। lsof /रूट फाइलसिस्टम पर क्या प्रक्रिया है, यह देखने के लिए चलाएँ । लिखने के लिए खुली हुई फाइलें FDकॉलम में दर्शाई जाएंगी । आप इनसे छान सकते हैं

lsof / | awk '$4 ~ /[0-9].*w/'

प्रक्रिया आईडी को स्वचालित रूप से फ़िल्टर करने के लिए, का आउटपुट पार्स करें lsof -F pa:

lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'

1
इस समाधान के साथ प्रयास किया, अभी भी व्यस्त है, इस तरह से कुछ संसाधन नहीं दिखा सकते हैं। कुछ चालू सेवाओं को रोकने के बाद, केवल पढ़ने के लिए fs को हटा सकते हैं।
सैम लियाओ

मैंने उन सभी प्रक्रियाओं को बंद कर दिया, जिनमें पढ़ने, लिखने या दोनों के लिए एक फ़ाइल थी ( u) और यह अभी भी व्यस्त है।
हबरो

12

पीटर जवाब में सुधार:

मैं उन प्रक्रियाओं को नहीं मार सकता जो मेरे आरोह बिंदु का उपयोग करती हैं। तो, मैंने ऐसा किया:

  • /etc/fstabअगले बूट में केवल पढ़ने के लिए शुरू करने के लिए संपादित करें । उदाहरण के लिए:/dev/sda1 / ext2 ro 0 1
  • रिबूट और खोल एक खोल (उदाहरण के लिए होस्ट कुंजी + F2)
  • ज़ीरोफ्री चलाएं

अपने सिस्टम को "पुनर्प्राप्त" करने के लिए:

  • पढ़ने-लिखने के विकल्प के साथ माउंट: $ mount -o remount,rw /dev/sda1
  • /etc/fstabअपने मूल मूल्य को पुनर्स्थापित करते हुए फिर से संपादित करें

अतिरिक्त: यदि आवश्यक हो तो किसी भी चरण में पुनर्प्राप्ति मोड खोलें :

  • रीबूट
  • VM लोड हो रहा है, जबकि शिफ्ट पकड़ो
  • उन्नत विकल्प> रिकवरी मोड के साथ कर्नेल विकल्प> रूट शैल प्रॉम्प्ट पर ड्रॉप करें

2
कप्तान स्पष्ट रूप से जोड़ना चाहता है: सुनिश्चित करें कि आपने z मोड में zerofree को स्थापित किया है जब आप रिबूट में रिबूट करते हैं
Xosofox

"ड्रॉप टू रूट शैल प्रॉम्प्ट" और ज़ीरोफ्री का उपयोग करके: फाइलसिस्टम आरडब्ल्यू को घुड़सवार। लेकिन मुझे अन्य वीएम में कोई समस्या नहीं थी
पावेल कियोच

यह केवल मेरे लिए काम किया जब /dev/sda1 / ext2 ro 0 1प्रविष्टि सूची में सबसे ऊपर थी। जब मैंने पहली बार इसे आखिरी प्रविष्टि के रूप में रखा था, तब भी मेरे पास माउंट पॉइंट व्यस्त त्रुटि थी।
एफिलिना

6

माउंट को व्यस्त रखने के लिए कभी-कभी बहुत सारी प्रक्रियाएं होती हैं, कि माउंट-रीड के साथ केवल रिबूट करना आसान हो सकता है।

/etc/fstabउदाहरण के लिए, रूट फाइल सिस्टम के लिए प्रविष्टि बदलें :

/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1

हो जाता है:

/dev/sda1 / ext2 noatime,ro 0 1

रिबूट पर, फ़ाइल सिस्टम को केवल पढ़ने के लिए माउंट किया जाएगा, ताकि आप उस zerofreeपर चल सकें।

जब आप काम पूरा कर लें, तो फाइल सिस्टम को फिर से पढ़ें / लिखें ( mount -o remount,rw /) और अपने परिवर्तनों को पूर्ववत करें/etc/fstab

Https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root से प्रेरित


महान! FYI करें, मैंने सिर्फ यही इस्तेमाल किया है /dev/sda1 / ext2 ro 0 1और मैं आसानी से बूट कर सकता हूं।
टोपेरा

5

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

sudo swapoff -a

आप पहले से जांच कर सकते हैं और किसी भी स्वैप विभाजन का एक सारांश दिखा सकते हैं या इसके साथ फाइल स्वैप कर सकते हैं:

swapon -s

या:

cat /proc/swaps

कमांड का उपयोग करने के विकल्प के रूप में sudo swapoff -a, आप किसी सेवा या सिस्टमड यूनिट को रोककर स्वैप को अक्षम करने में भी सक्षम हो सकते हैं । उदाहरण के लिए:

sudo systemctl stop dphys-swapfile

या:

sudo systemctl stop var-swap.swap

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


4

अगर आप systemd का उपयोग करते हैं तो systemd-journal को रोककर डिस्क राइट को रोक दिया जाता है।

# systemctl stop systemd-journald.socket
# systemctl stop systemd-journald.service
# mount -o ro,remount /

1
मेरे लिए दोनों इकाइयाँ तुरंत पुनः आरंभ होती हैं।
पुराना।

मेरे लिए "उन्नत विकल्प> रिकवरी मोड के साथ कर्नेल विकल्प> रूट शेल प्रॉम्प्ट पर ड्रॉप" में काम किया
पावेल कियोच ने 9:42

3

ठीक है, वहाँ है जो मैंने किया है

सबसे पहले, मेरा लक्ष्य मेरी डिस्क पर एक और जोड़ने के लिए मेरे /( ROOT) विभाजन को कम करना था ।

  • रनिंग सेशन से एक बार सबकुछ साफ और बैकअप:

    init 1
    

    मेरा डेस्कटॉप चला गया और मैं अब लिनक्स कंसोल पर हूं ...

    ...
    Give root password for maintenance or press CTRL+D to continue
    TheRootPassword_SomethingLike1234
    
  • अब, केवल पढ़ने के लिए मोड /में माउंट करने की कोशिश कर रहा है:

    mount -o remount,ro /
    mount: / is busy
    
  • ठीक है, अब से, मैं सैद्धांतिक रूप से एकल-उपयोगकर्ता मोड में हूं , लेकिन ps axबहुत सारी अन्य प्रक्रिया दिखाता हूं !!

    उन सभी को मारना वास्तव में संभव नहीं है, या खतरनाक नहीं है ... ( निषिद्ध हैkill 1 ... मेरे पास psdoom खेलने का समय नहीं है :-)

    केवल एक चीज जो मैं कर सकता हूं System Request, इसके लिए, मैं दो तरीके जानता हूं: ( Documentation/sysrq.txtकर्नेल डॉक्स में फ़ाइल देखें ):

    1. पहले magic SysRq keyकीबोर्ड कर्नेल ट्रैप का उपयोग करना :

      • दबाए रखें AltGr, फिर बनाए रखें , फिर दबाया,
      • PrtScnबस एक बार मारा , लेकिन रिलीज नहीं AltGr,
      • sसिर्फ एक बार मारा , इससे Emergency syncकर्नेल को अनुरोध भेजा जाएगा और
      • हिट u, यह Umount allअनुरोध भेजेगा , यह सभी माउंटेड फाइल सिस्टम को रीड-ओनली करेगा,
      • तब जारी करें AltGr
    2. या कमांड लाइन द्वारा:

      echo s >/proc/sysrq-trigger
      echo u >/proc/sysrq-trigger
      
  • फिर अब, मैं कर सकता था

    fsck -fC0 /dev/mapper/MyDisk-ROOT
    

    ....

...


नोट: ठीक है, अगर मेरा fsckसुसाइड कर लिया गया था , तो मैंने चलाने के लिए सक्षम करने के लिए एक लाइव USB बूट किया है resize2fs... यह सुविधा पहले से लागू नहीं है ...
F. Hauri

मेरा fsckपता नहीं है -f; ऐसा क्या होगा, शून्य अप्रकाशित ब्लॉक?

1
@ ᴠɪɴᴄᴇɴᴛ: I'ts ext2के fsckस्विच: -f सेना की जाँच के फाइल सिस्टम को साफ लगता है, भले ही।
एफ। हौरी

1

किसी और के लिए जो बस अपने टर्मिनल में पेस्ट करने के लिए एक त्वरित फिक्स की तलाश में है ...

(नीचे दिए गए आदेशों का पालन करने से पहले, सुनिश्चित करें कि आपने अन्य चरणों को पूरा कर लिया है telinit 1।)

यह मिला :

fuser -mv /dev/sda1 > /tmp/sda1.pids
kill `cat /tmp/sda1.pids`

कमांड आपके सत्र को मार सकते हैं, लेकिन आपके वापस आने के बाद, आपका विभाजन रिमूव होने के लिए तैयार है।


1

दूसरे वर्चुअलबॉक्स में अतिरिक्त और गैर-सिस्टम वॉल्यूम के रूप में vdi फ़ाइल संलग्न करें। वहां आप आवश्यकतानुसार (पुनः) इसे माउंट कर सकते हैं और ज़ोर्फ्री प्रदर्शन कर सकते हैं।

हम कहते हैं कि आप VM1 (वर्चुअल मशीन 1) की VDI डिस्क को कॉम्पैक्ट करना चाहते हैं । फिर आपको दूसरे VM2 की आवश्यकता है । अर्थात्, :

  • सुनिश्चित करें कि VM1 और VM2 न तो चल रहा है;
  • VirtualBox प्रबंधक से:

    • VM2 का चयन करें,
    • "सेटिंग" -> "संग्रहण" -> "हार्ड डिस्क जोड़ें": "इसे अतिरिक्त डिस्क के रूप में चुनें",

    • VM1 की vdi फ़ाइल का चयन करें, जिसे आप कॉम्पैक्ट करना चाहते हैं। संकेत: सुनिश्चित करें कि VM2 में जोड़ी गई हार्ड डिस्क VM2 की मूल डिस्क के बाद बूट-ऑर्डर में दूसरे स्थान पर है।

    • VM2 शुरू करें: अब आप VM2 के लिए अतिरिक्त डिस्क के रूप में VM1 की मात्रा को माउंट कर सकते हैं (क्योंकि) VM2 में कोई भी प्रक्रिया इसका उपयोग नहीं कर रही है। संकेत: सबसे पहले, लिनक्स के folebrowser के साथ वॉल्यूम खोलें, जो स्वचालित रूप से वॉल्यूम को मापता है। फिर, mount -lयह देखने के लिए उपयोग करें _Device_कि कमांड में कौन सा है sudo mount -o remount,ro _Device_। मेरे मामले में यह / dev / sdb1 था । तो कमांड था (1) sudo mount -o ro,remount /dev/sdb1और फिर (2) sudo zerofree /dev/sdb1

VM2 के बजाय किसी को .iso छवि की तरह और इंस्टॉलेशन डिस्क से बूट करने में सक्षम होना चाहिए और उसी BUT को प्राप्त करना चाहिए जिसे मैंने आजमाया नहीं है।


0

मुझे लगता है कि आप mountVM में कमांड चलाने की कोशिश करते हैं । वैसे भी आपके पास शायद मंच पोस्ट के लेखक की तुलना में एक अलग रूट विभाजन है।

प्रयत्न:

mount -o ro,remount /

जो fs या माउंट विकल्प पर निर्भर नहीं करता है। यदि यह काम नहीं करता है, तो आप अपने रूट एफएस को grep " / " /proc/mountsया के साथ निर्धारित करने का प्रयास कर सकते हैं cat /proc/cmdline। यदि आपका रूट फाइल सिस्टम उदाहरण के लिए है / dev / mapper / system-rootfs जिसका आप उपयोग कर सकते हैं:

mount -o ro,remount /dev/mapper/system-rootfs /

0

मेरे पास यह मुद्दा था जिसने मुझे अपनी मशीन को केवल मोड में रखने से रोक दिया। समस्या को हल करने में मुझे आईडी की तुलना में अधिक समय लगा ... मुझे विश्वास है कि मेरा मुद्दा यह था कि मैंने अपाचे-ज़ेपेलिन को छोड़ दिया था और इसके बारे में भूल गया था। सुनिश्चित करें कि आप अन्य होस्टिंग प्रकार की सेवा के साथ ऐसा नहीं कर रहे हैं। समस्या को हल करने के लिए मैंने fuser -kill /उन सभी प्रक्रियाओं को समाप्त कर दिया जो समस्या पैदा कर सकती थीं और इसने मुझे वापस आरओ मोड में जाने की अनुमति दी।


0

मेरे लिए समाधान OS को रिबूट करना और GRUB के बूट मेनू से "रिकवरी मोड" चुनना था। "रिकवरी मोड" से, कम प्रक्रियाएं चल रही हैं, और रिमाउंटिंग रीड-ओनली वर्क ठीक है।

यदि सिस्टम में रूट फ़ाइल सिस्टम (स्वैप विभाजन के बजाय) पर एक स्वैप फ़ाइल है, तो इसके साथ स्वैप फ़ाइल को अस्थायी रूप से बंद करना भी आवश्यक है swapoff -a

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