umount: ডিভাইসটি ব্যস্ত। কেন?


171

দৌড়ানোর সময় umount /pathআমি পাই:

umount: /path: device is busy.

ফাইল সিস্টেমটি বিশাল, সুতরাং lsof +D /pathএকটি বাস্তবসম্মত বিকল্প নয়।

lsof /path, lsof +f -- /pathএবং fuser /pathসমস্ত কিছুই প্রত্যাবর্তন করে। fuser -v /pathদেয়:

                  USER        PID ACCESS COMMAND
/path:            root     kernel mount /path

যা সমস্ত অব্যবহৃত মাউন্ট ফাইল সিস্টেমের জন্য স্বাভাবিক।

umount -lএবং umount -fআমার পরিস্থিতির জন্য যথেষ্ট ভাল না।

কার্নেল কেন এই ফাইল সিস্টেমটি ব্যস্ত বলে মনে করে?


11
আপনার শেলের বর্তমান ডিরেক্টরিটি কি মাউন্টপয়েন্ট পথে?
লরেন্সসি

না। ফুসার তখন তাই বলত।
ওলে টাঞ্জ

12
আপনি আসলে চান fuser -vm /path...
ডায়ার্বার্ট

5
আনমাউন্ট জন্য --forceআন-মাউন্ট করা কঠিন চেষ্টা করবে -vবা -vvvআরও বেশি মাউন্ট সঙ্গে সমস্যা কি reaveal হবে। তাই চেষ্টা করুন:umount -vvv --force /babdmount
গেওথে

উত্তর:


139

মনে হচ্ছে আমার সমস্যার কারণ nfs-kernel-serverহ'ল ডিরেক্টরিটি রফতানি করা। nfs-kernel-serverসম্ভবত স্বাভাবিক ফাইল খুলুন পিছনে যায় এবং এইভাবে দ্বারা তালিকায় না থাকে lsofএবং fuser

আমি যখন ডিরেক্টরিটি বন্ধ করতে nfs-kernel-serverপারি umount

আমি এখনও পর্যন্ত সমস্ত সমাধানের উদাহরণ সহ একটি পৃষ্ঠা তৈরি করেছি: http://oletange.blogspot.com/2012/04/umount-device-is-busy-why.html


54
আপনার নিজের সমাধানটি প্রয়োগের উপর ছেড়ে দেওয়ার পরিবর্তে আপনার নিজের প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। আপনার উত্তর আমাকে অনুরূপভাবে রফতানি হওয়া এনএফএস শেয়ার ভাগ করতে সহায়তা করেছে।
জেফ ওয়েলিং

7
আপনি যদি ফাইল সিস্টেমে লুপব্যাক ডিভাইসগুলি সেট আপ করেন তবে এই একই সমস্যাটিও ঘটতে পারে - উদাহরণস্বরূপ যদি / dev / loop0 / पथটিতে কোনও ফাইল দ্বারা ব্যাক হয় is
বিসিআরান

1
আমি sudo service samba stopপ্রথম ছিল , আপনার উত্তর সত্যিই সাহায্য করেছে!
মালাত

1
এই পোস্টটি আমাকে স্মরণ করিয়ে দিয়েছে যে আমি এটি বের করার চেষ্টা করার কয়েক ঘন্টা পরেও এনএফএস পরিষেবা চালু ছিল। RHEL6 / CentOS6 এ, আনপসপোর্ট sudo service nfs stopকরতে আপনার প্রয়োজন (না )ও করতে পারে sudo exportfs -u। মনে রাখবেন তখন sudo exportfs -rএবং sudo service nfs startপুনরায় এক্সপোর্ট এবং পরিষেবাটি পুনরায় চালু করতে।
কোড_ড্রেড

1
আমার ক্ষেত্রে এনএফএস সার্ভারটি বন্ধ করার প্রয়োজন ছিল না, কেবল exportfs -uপ্রশ্নে থাকা ডিরেক্টরি।
Law29

42

জুড়ুন BruceCran এর মন্তব্য উপরে, এই সমস্যা আমার উদ্ভাস জন্য কারণ এইমাত্র একটি ছিল মামুলি লুপব্যাক মাউন্ট। আমি ইতিমধ্যে আউটপুট চেক করা চাই fuser -vm <mountpoint>/ lsof +D <mountpoint>, mountএবং cat /proc/mounts, টিক চিহ্ন দেওয়া কিনা কিছু পুরানো NFS-কার্নেল-সার্ভার চলমান ছিল, কোটা বন্ধ পরিণত, চেষ্টা (কিন্তু ব্যর্থ হয়েছে) একটি umount -f <mountpoint>এবং সব কিন্তু নিজেকে পরিশেষে আউটপুট চেক সামনে 924 দিনের আপটাইম পরিত্যাগ করার পদত্যাগ এর losetupএবং দুই মামুলি কনফিগার কিন্তু-না-র উপরে মাউন্ট loopbacks খোঁজার:

parsley:/mnt# cat /proc/mounts 
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,size=10240k,mode=755 0 0
/dev/mapper/stuff-root / ext3 rw,errors=remount-ro,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0
usbfs /proc/bus/usb usbfs rw,nosuid,nodev,noexec 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
/dev/dm-2 /mnt/big ext3 rw,errors=remount-ro,data=ordered,jqfmt=vfsv0,usrjquota=aquota.user 0 0

তারপর

parsley:/mnt# fuser -vm /mnt/big/
parsley:/mnt# lsof +D big
parsley:/mnt# umount -f /mnt/big/
umount2: Device or resource busy
umount: /mnt/big: device is busy
umount2: Device or resource busy
umount: /mnt/big: device is busy

parsley:/mnt# losetup -a    
/dev/loop0: [fd02]:59 (/mnt/big/dot-dropbox.ext2)
/dev/loop1: [fd02]:59 (/mnt/big/dot-dropbox.ext2)

parsley:/mnt# losetup -d /dev/loop0
parsley:/mnt# losetup -d /dev/loop1
parsley:/mnt# losetup -a
parsley:/mnt# umount big/
parsley:/mnt#

জেন্টু ফোরামের একটি পোস্টও সম্ভাব্য অপরাধী হিসাবে স্ব্যাপফাইলে তালিকাভুক্ত করেছে ; যদিও এই মুহুর্তে ফাইলগুলিতে অদলবদল করা খুব বিরল, এর আউটপুট পরীক্ষা করে আঘাত করতে পারে না cat /proc/swaps। আমি নিশ্চিত নই যে কোটা কখনও আনমাউন্টকে আটকাতে পারে - আমি স্ট্রসে আটকে ছিলাম।


12
সমস্ত 924 দিনের আপটাইম মানে হ'ল আপনাকে আপনার কার্নেল প্যাচগুলি আপডেট করতে হবে :-)
w00t

+1 টি swap 'র ফাইল উল্লেখ তারা কি ব্লক আনমাউন্ট করা হচ্ছে, এবং যদি আপনি সরাসরি তাদের পরীক্ষণ নেই প্রায় কাছাকাছি সনাক্তকরণের অযোগ্য হয়।
পিপিটার

22

ফাইল সিস্টেমে ক্রল করার জন্য lsof ব্যবহার করার পরিবর্তে খালি ফাইলগুলির মোট তালিকাটি ব্যবহার করুন এবং গ্রেপ করুন। আমি দেখতে পাই এই রিটার্নগুলি দ্রুততর হবে, যদিও এটি কম সঠিক। এটি কাজ শেষ করা উচিত।

lsof | grep '/path'

1
lsof / পাথ কেবলমাত্র পথটি দেখায়।
ওলে টাঞ্জ

7
আমি বললাম না lsof /path, বললাম lsof | grep '/path'। পার্থক্যটি হ'ল কোনও যুক্তিযুক্ত lsof কোনও ধরণের ক্যাশে টেবিল ব্যবহার করে সমস্ত উন্মুক্ত ফাইল দেখায় এবং গ্রেপ এটির মাধ্যমে অনুসন্ধান করতে খুব দ্রুত। আপনি লসফের সাহায্যে যা চেষ্টা করেছেন তা ফাইল সিস্টেমের মাধ্যমে এটি স্ক্যান করে তোলে যা অনেক সময় নেয়।
কালেব

1
যেমনটি আমি বলেছিলাম: lsof /pathকেবল পথের দিকে তাকান। এটি প্রতিটি একক ফাইলের দিকে তাকাবে না। এটি প্রায়শই বেশি দ্রুত হয় lsof | grep /path(আমার অবৈজ্ঞানিক পরীক্ষায় এটি 20 গুণ দ্রুত ওয়াইএমএমভি ছিল) যেহেতু এটি সমস্ত উন্মুক্ত ফাইল নয় কেবল সেই পথের ফাইলগুলির দিকে নজর দেয় না।
ওলে টেঞ্জ

প্রযুক্তিগত পার্থক্য কী তা সম্পর্কে আমি নিশ্চিত নই, তবে বাসি এনএফএস মাউন্টটি তদন্ত করার সময় আমার কাছে lsof /pathকিছুই পাওয়া lsof | grep /pathযায় নি, যেখানে আমাকে এমন প্রক্রিয়া দেখিয়েছিল যা খোলার ফাইল ধারণ করে এবং আমাকে ভলিউম আনমাউন্ট করা থেকে বিরত রাখে।
dpw

20

আমার জন্য, আপত্তিজনক প্রক্রিয়াটি একটি ক্রুটে চলমান একটি ডেমন ছিল। এটি একটি chroot ছিলেন lsofএবং fuserএটা খুঁজে যাবে।

যদি আপনি সন্দেহ করেন যে আপনার কাছে ক্রুতে কিছু চালানো আছে, sudo ls -l /proc/*/root | grep chrootতবে অপরাধীটি খুঁজে পাবেন ("ক্রুটের" প্রতিস্থাপনের পথটি প্রতিস্থাপন করুন)।


1
ভাল, এবং ফ্রিবিএসডি-তে আমি এটি করেছি: sudo ls -l /proc/*/status | grep HOSTযেখানে HOST হ'ল জেলের হোস্ট-নেম
জেগুর্টজ

1
আমার সিস্টেমে (মিন্ট কিয়ানা) lsof /mountpointএবং fuser /mountpointদু'জন ক্রোটযুক্ত থাকলেও একটি প্রক্রিয়া খুঁজে পান।
ওলে টেঞ্জ

9

ফাইল খুলুন

খোলা ফাইল সহ প্রক্রিয়াগুলি হ'ল স্বাভাবিক অপরাধী। তাদের প্রদর্শন করুন:

lsof +f -- <mountpoint or device>

এর /dev/<device>পরিবর্তে ব্যবহার করার একটি সুবিধা রয়েছে /mountpoint: এর পরে একটি মাউন্টপয়েন্ট অদৃশ্য হয়ে যাবে umount -l, বা এটি কোনও আচ্ছাদিত মাউন্ট দ্বারা আড়াল হতে পারে।

fuserএছাড়াও ব্যবহার করা যেতে পারে, তবে আমার মনে lsofআরও কার্যকর আউটপুট রয়েছে। তবে fuserএটি কার্যকর যখন আপনার নাটকগুলির জন্য প্রক্রিয়াগুলি হত্যার বিষয়টি আসে যাতে আপনি আপনার জীবন নিয়ে যেতে পারেন।

ফাইলগুলি তালিকাভুক্ত করুন <mountpoint>(উপরের ক্যাভিয়েট দেখুন):

fuser -vmM <mountpoint>

লেখার জন্য খোলা ফাইলগুলির সাথে কেবলমাত্র প্রক্রিয়াগুলি ইন্টারেক্টিভভাবে হত্যা করুন:

fuser -vmMkiw <mountpoint>

কেবল পঠনযোগ্য ( mount -o remount,ro <mountpoint>) পুনরায় মাউন্ট করার পরে , অবশিষ্ট সমস্ত প্রক্রিয়াটি মেরে ফেলা নিরাপদ (র):

fuser -vmMk <mountpoint>

Mountpoints

অপরাধী নিজেই কর্নেল হতে পারে। আপনি যে ফাইল সিস্টেমে চেষ্টা করছেন সেটি মাউন্ট করা অন্য একটি ফাইল সিস্টেম umountশোকের কারণ ঘটবে। পরিক্ষা কর:

mount | grep <mountpoint>/

লুপব্যাক মাউন্টগুলির জন্য, এর আউটপুটও পরীক্ষা করে দেখুন:

losetup -la

নামবিহীন ইনোডস (লিনাক্স)

বেনামে আইওডগুলি তৈরি করতে পারে:

  • অস্থায়ী ফাইল ( openসহ O_TMPFILE)
  • ঘড়ি inotify
  • [Eventfd]
  • [Eventpoll]
  • [Timerfd]

এই পোকেমন অধিকাংশ অধরা ধরনের হয়, এবং প্রদর্শিত lsof'র TYPEহিসাবে কলাম a_inode(যেখানে অনথিভুক্ত হয় lsofman পৃষ্ঠা )।

এগুলি উপস্থিত হবে না lsof +f -- /dev/<device>, সুতরাং আপনার প্রয়োজন হবে:

lsof | grep a_inode

বেনামে আইওনড ধারণ করে হত্যা করার প্রক্রিয়াগুলির জন্য দেখুন: বর্তমান ইনোটিফাই ঘড়ির তালিকা করুন (পথের নাম, পিআইডি)


5

ফুজারের মাউন্ট ওপেন থাকা পিআইডিগুলিতে রিপোর্ট করার জন্য আপনাকে -m ব্যবহার করতে হবে

fuser -m /path

2
সত্য, তবে অপ্রাসঙ্গিক: lsof /pathপিআইডি'র একই তালিকা সরবরাহ করে fuser -m /path
গিলস

fuser -M /path/pathএকটি মাউন্টপয়েন্ট কিনা তা যাচাই করবে ।
user3804598

5

আমাদের একটি মালিকানাধীন সিস্টেম রয়েছে যেখানে মূল ফাইল সিস্টেমটি সাধারণত পঠনযোগ্য। কখনও কখনও, যখন ফাইলগুলি অনুলিপি করতে হয়, তখন এটি রিড-রিড রিমোট হয়:

mount -oremount,rw /

এবং তারপরে পুনরুদ্ধার করা:

mount -oremount,ro /

এবার অবশ্য ত্রুটি দিয়ে mountচলেছে mount: / is busy। কোনও ফাইলের ওপেন ডেস্ক্রিপ্টর ধারণ করে এমন একটি প্রক্রিয়া ঘটেছিল যা কিছু কমান্ড দ্বারা প্রতিস্থাপন করা হয়েছিল, যা ফাইল সিস্টেম রিড রাইটিং করার সময় কার্যকর করা হয়েছিল। lsof -- /আউটপুট থেকে গুরুত্বপূর্ণ লাইনটি ঘটে (নাম পরিবর্তন করা হয়েছে):

replicate  1719 admin DEL REG 8,5  204394 /opt/gns/lib/replicate/modules/md_es.so

DELআউটপুট এ লক্ষ্য করুন । মুছে ফেলা ফাইলটিকে ধরে রেখে প্রক্রিয়াটি পুনরায় চালু করা সমস্যার সমাধান করে।


3
সুতরাং সংক্ষিপ্তসারটি হ'ল: সরানো হয়েছে এমন একটি ফাইল খোলা থাকার প্রক্রিয়া। ভাল ইনপুট।
ওলে টেঞ্জ

4

lsofএবং fuserআমাকে কিছু দেয়নি।

সমস্ত সম্ভাব্য ডিরেক্টরিকে নতুন করে নামকরণ করার প্রক্রিয়া করার পরে সিস্টেমটি প্রতিবার পরিবর্তন ও পুনরায় চালু করার পরে আমি পরিবর্তন করার পরে একটি বিশেষ ডিরেক্টরি (পোস্টফিক্স সম্পর্কিত) খুঁজে পেলাম যা দায়ী ছিল।

দেখা গেল যে আমি একবার এসডিকার্ড ভিত্তিক মূল ফাইল সিস্টেম (শিভা প্লাগ) -এ ডিস্ক রাইট কমিয়ে আনার /var/spool/postfixজন্য একবার থেকে /disk2/pers/mail/postfix/varspoolএকটি সিমিলিংক তৈরি করেছিলাম।

এই সিমিলিঙ্কটি দিয়ে, পরিষেবাগুলি postfixএবং dovecotপরিষেবাগুলি বন্ধ করার পরেও (উভয় ps auxপাশাপাশি netstat -tuanpসম্পর্কিত কিছু দেখায়নি) আমি সক্ষম হয়ে উঠিনি unmount /disk2/pers

আমি যখন সিমলিংকটি সরিয়ে নিয়েছি এবং আপডেট postfixdovecotকনফিগার করা ফাইলগুলি আপডেট করেছি তখন সরাসরি নতুন ডায়ারগুলিতে /disk2/pers/আমি পরিষেবাগুলি এবং unmountডিরেক্টরিটি সফলভাবে বন্ধ করতে পেরেছিলাম ।

পরবর্তী সময় আমি এর আউটপুট আরও ঘনিষ্ঠভাবে তাকান:

ls -lR /var | grep ^l | grep disk2

উপরের কমান্ডটি ডিরেক্টরি গাছের সমস্ত প্রতীকী লিঙ্কগুলি পুনরাবৃত্তভাবে তালিকাবদ্ধ করবে (এখানে শুরু করে /var) এবং নির্দিষ্ট নামগুলি মাউন্ট পয়েন্ট (এখানে ডিস্ক 2) নির্দেশ করে এমন নামগুলি ফিল্টার করে দেবে।


3

আমার এই সমস্যাটি ছিল এবং এটি প্রমাণিত হয়েছিল যে আমি জানতাম না এমন পটভূমিতে সক্রিয় স্ক্রিন সেশন ছিল। আমি অন্যান্য সক্রিয় স্ক্রিন সেশনে সংযুক্ত হয়েছি এবং এর শেলটি এখনও মাউন্টড ডিরেক্টরিতে বসে ছিল না। এই অন্যান্য শেল সেশনগুলিকে হত্যা আমার জন্য সমস্যাটি স্থির করে।

ভেবেছিলাম আমি আমার রেজোলিউশন শেয়ার করব।


1

আজ সমস্যাটি ছিল একটি উন্মুক্ত সকেট (বিশেষত tmux):

mount /mnt/disk
export TMPDIR=/mnt/disk
tmux
<<detatch>>
umount /mnt/disk
umount: /mnt/disk: device is busy.
lsof | grep /mnt/disk
tmux      20885             root    6u     unix 0xffff880022346300        0t0    3215201 /mnt/disk/tmux-0/default

1

আমার মাউন্টের নীচে কয়েকটা bindএবং overlayমাউন্ট রয়েছে যা আমাকে বাধা দিচ্ছিল, আপনি যে মাউন্ট-পয়েন্টটি আনমাউন্ট করতে চান তার জন্য ট্যাব সমাপ্তি পরীক্ষা করে দেখুন। আমি সন্দেহ করি এটি বিশেষত ওভারলে মাউন্ট ছিল তবে বাঁধাইগুলিও হতে পারে


1

এটি একটি উত্তরের চেয়ে অনেক বেশি কাজ, তবে এটি কারওর পক্ষে সহায়তা করতে পারে তবে আমি এটি পোস্ট করছি।

আমার ক্ষেত্রে আমি / var পার্টিশনটি আরও বড় করতে চাইায় আমি LVM সংশোধন করার চেষ্টা করছিলাম, সুতরাং এটি সঞ্চার করার দরকার ছিল। আমি এই পোস্টে মন্তব্য করা এবং জবাব দেওয়ার চেষ্টা করেছি (সবাইকে ধন্যবাদ এবং বিশেষত @ ওলে-টাংজাগুলি তাদের সংগ্রহের জন্য) এবং এখনও "ডিভাইস ব্যস্ত" ত্রুটি পেয়েছি।

আমি 0 রানলেভেলের ক্ষেত্রেও নির্দিষ্ট ক্রমে বেশিরভাগ প্রক্রিয়া হত্যার চেষ্টা করেছি, যদি ক্ষেত্রে আমার ক্ষেত্রে আদেশটি প্রাসঙ্গিক হয় তবে এটি কোনওরকমই কাজে লাগেনি। সুতরাং আমি যা করেছি তা আমাকে একটি কাস্টম রানলেভেল তৈরি করা হয়েছিল (chkconfig এর আউটপুটকে নতুন chkconfig --level কমান্ডের সাথে একত্রিত করে) যা 1 (একক ব্যবহারকারী মোড) এর সাথে তবে নেটওয়ার্ক ক্ষমতা (ssh নেটওয়ার্ক এবং xinet সহ) এর সাথে খুব অনুরূপ হবে।

আমি যেহেতু রেডহ্যাটটি ব্যবহার করছিলাম, রানলেভেল 4টিকে "অব্যবহৃত / ব্যবহারকারী সংজ্ঞায়িত" হিসাবে চিহ্নিত করা হয়েছে, সুতরাং আমি এটি ব্যবহার করেছি এবং চালনা করুন init 4 আমার ক্ষেত্রে এটি ঠিক ছিল যেহেতু আমার কোনও ক্ষেত্রে সার্ভারটি পুনরায় বুট করার দরকার ছিল তবে সম্ভবত এটিই হবে যে কেউ ডিস্ক টুইট করছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.