umount: උපාංගය කාර්යබහුලයි. මන්ද?


186

ධාවනය වන විට 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මගේ තත්වය සඳහා ප්රමාණවත් තරම් හොඳ නැහැ.

මෙම ගොනු පද්ධතිය කාර්යබහුල යැයි කර්නලය සිතන්නේ මන්දැයි මා හඳුනා ගන්නේ කෙසේද?


13
ඔබේ කවචයේ වත්මන් නාමාවලිය සවිකිරීමේ මාර්ගයේ තිබේද?
ලෝරන්ස් සී

නැත. එවිට ෆියුසර් එසේ කියයි.
ඔලේ ටංගේ

13
ඔබට සැබවින්ම අවශ්‍යයි fuser -vm /path...
ඩෙරොබට්

6
Umount සඳහා --forceවිසන්ධි කිරීමට අමාරු උත්සාහ කරමි -vහෝ -vvvපවා සවි සමග ප්රශ්නයක් තව කුමක් reaveal ඇත. එබැවින් උත්සාහ කරන්න:umount -vvv --force /babdmount
gaoithe

Answers:


150

මගේ ගැටලුවට හේතුව nfs-kernel-serverනාමාවලිය අපනයනය කිරීමයි. මෙම nfs-kernel-serverබොහෝ විට සාමාන්ය ගොනු විවෘත පිටුපස ගොස් මෙසේ විසින් ලැයිස්තුගත කර නැත lsofහා fuser.

මම නැවැත්වූ විට nfs-kernel-serverමට umountනාමාවලිය හැකි විය .

මම මෙතෙක් මෙහි ඇති සියලුම විසඳුම් සඳහා උදාහරණ සහිත පිටුවක් සාදා ඇත: http://oletange.blogspot.com/2012/04/umount-device-is-busy-why.html


56
ඔබේ විසඳුම ක්‍රියාත්මක කිරීමෙන් පසු එය අතහැර දැමීම වෙනුවට ඔබේම ප්‍රශ්නයට පිළිතුරු සැපයීම ගැන ඔබට ස්තූතියි. ඒ හා සමානව අපනයනය කළ එන්එෆ්එස් කොටසක් වෙන් කිරීමට ඔබේ පිළිතුර මට උදව් විය.
ජෙෆ් වෙලින්

8
ඔබ ගොනු පද්ධතියේ ලූප්බැක් උපාංග සකසා ඇත්නම්ද මෙම ගැටළුව ඇතිවිය හැකිය - නිදසුනක් ලෙස / dev / loop0 ගොනුවකින් / path හි පිටුබලය තිබේ නම්.
BCran

1
මට sudo service samba stopමුලින්ම කළ යුතුව තිබුණා , ඔබේ පිළිතුර ඇත්තෙන්ම උපකාරවත් විය!
malat

1
මෙම සටහන මට මතක් කර දුන්නේ පැය ගණනක් උත්සාහ කිරීමෙන් පසු මට එන්එෆ්එස් සේවාව ක්‍රියාත්මක වන බවයි. RHEL6 / CentOS6 හි, භාවිතා කරන්න sudo service nfs stopසහ අපනයනය කිරීම සඳහා ඔබට (අවශ්‍ය නොවේ) අවශ්‍ය sudo exportfs -uවිය හැකිය. පසුව ගැනීමට මතක තබා ගන්න sudo exportfs -rසහ sudo service nfs startප්රති අපනයනය කිරීමට සහ සේවා නැවත ක්රියාත්මක කරන්න.
code_dredd

2
මගේ නඩුවේදී, nfs සේවාදායකය නැවැත්වීමට අවශ්‍ය නොවීය exportfs -u.
නීතිය 29

43

ඉහත බ ru ස්ක්‍රාන් ගේ ප්‍රකාශයට එකතු කිරීම සඳහා, මෙම ගැටලුව මා ප්‍රකාශ කිරීමට හේතුව දැන් පරණ ලූප්බැක් සවිකිරීමකි. මම දැනටමත් ප්රතිදානය පරීක්ෂා කැමතියි fuser -vm <mountpoint>/ lsof +D <mountpoint>, mountසහ cat /proc/mounts, සමහර පැරණි nfs-kernel-සේවාදායකය ධාවනය කර තිබේද පරීක්ෂා, පංගු නිවා, උත්සාහ (නමුත් අසාර්ථක) එය 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#

පිංතූරය සංසදය පශ්චාත් ද හැකි චූදිතයා ලෙස swapfiles ලැයිස්තු; ලිපිගොනු වලට මාරුවීම මේ දිනවල ඉතා දුර්ලභ වුවද, එහි ප්‍රතිදානය පරීක්ෂා කිරීමට හානියක් කළ නොහැක cat /proc/swaps. කෝටා වලට කවදා හෝ ගණනය කිරීමක් වළක්වා ගත හැකිදැයි මට විශ්වාස නැත - මම පිදුරු අල්ලාගෙන සිටියෙමි.


13
දින 924 ක අතිකාල කාලය යනු ඔබේ කර්නල් පැච් යාවත්කාලීන කළ යුතු බවයි :-)
w00t

1
Swap ගොනු සඳහන් සඳහා +1, ඔවුන් කරන්නේ වාරණ ගලවමින්, ඔබ ඒවා සෘජුවම පරීක්ෂා නොකරන්නේ නම්, එච්චරමයි ටෙලොමෙරස් වේ.
පී. පීටර්

24

ගොනු පද්ධතිය හරහා බඩගා යෑමට lsof භාවිතා කරනවා වෙනුවට, විවෘත ලිපිගොනු වල සම්පූර්ණ ලැයිස්තුව භාවිතා කර එය අඹරන්න. අඩු ප්‍රතිලාභයක් වුවද මෙම ප්‍රතිලාභ වේගවත් විය යුතු බව මට පෙනේ. එය කාර්යය ඉටු කළ යුතුය.

lsof | grep '/path'

1
lsof / path මාර්ගය හරහා පමණක් පෙනේ.
ඔලේ ටංගේ

8
මම කිව්වේ නැහැ lsof /path, මම කිව්වා lsof | grep '/path'. වෙනස වන්නේ කිසිදු තර්කයක් නොමැති lsof සියළුම විවෘත ලිපිගොනු යම් ආකාරයක හැඹිලි වගුවක් භාවිතා කරන බව පෙන්වන අතර grep එය හරහා සෙවීමේදී ඉතා වේගවත් වේ. ඔබ lsof සමඟ උත්සාහ කළ දේවල් ගොනු පද්ධතිය හරහා පරිලෝකනය කිරීමට බොහෝ කාලයක් ගත වේ.
කාලෙබ්

2
මම කීවාක් මෙන්: lsof /pathමාර්ගය දෙස පමණක් බලන්න. එය සෑම ගොනුවක් දෙසම බලන්නේ නැත. එය බොහෝ විට lsof | grep /path(මගේ විද්‍යාත්මක නොවන පරීක්ෂණයේදී එය YMMV මෙන් 20 ගුණයක් වේගවත් විය) වඩා විවෘත වේ. මන්දයත් එය සියලු විවෘත ලිපිගොනු දෙස නොබලන නමුත් එම මාර්ගය සඳහා වන ගොනු පමණි.
ඔලේ ටංගේ

තාක්ෂණික වෙනස කුමක්දැයි මට විශ්වාස නැත, නමුත් යල් පැන ගිය එන්එෆ්එස් සවිකිරීමක් විමර්ශනය කරන විට, lsof /pathකිසිවක් ලබා නොදුන් අතර lsof | grep /pathවිවෘත ලිපිගොනු රඳවා තබා ගැනීමේ ක්‍රියාවලිය මට පෙන්වූ අතර පරිමාව ගණනය කිරීමෙන් වලක්වනු ලැබීය.
dpw

23

මට නම්, වරද කිරීමේ ක්‍රියාවලිය ක්‍රෝට් එකක ධාවනය වන ඩීමන් ය. එය chroot පසුබිමෙන් විය, මන්ද lsofසහ fuserඑය සොයා ගත නොහැකි වනු ඇත.

ඔබට ක්‍රූට් එකක යමක් ඉතිරිව ඇති බවට ඔබ සැක කරන්නේ නම් sudo ls -l /proc/*/root | grep chroot, වැරදිකරු සොයා ගනු ඇත ("ක්‍රූට්" වෙනුවට ක්‍රූට් වෙත යන මාර්ගය ආදේශ කරන්න).


1
හොඳයි, සහ FreeBSD හි මම මෙය කළෙමි: sudo ls -l /proc/*/status | grep HOSTබන්ධනාගාරයේ සත්කාරක නාමය HOST
JGurtz

1
මගේ පද්ධතියේ (මින්ට් ක්වානා) lsof /mountpointසහ fuser /mountpointදෙකම ක්‍රෝට් කළත් ක්‍රියාවලියක් සොයා ගනී.
ඔලේ ටැන්ජ්

11

ගොනු විවෘත කරන්න

විවෘත ලිපිගොනු සහිත ක්‍රියාවලි සාමාන්‍ය වැරදිකරුවන් වේ. ඒවා ප්‍රදර්ශනය කරන්න:

lsof +f -- <mountpoint or device>

භාවිතා /dev/<device>කිරීමට වඩා වාසියක් ඇත /mountpoint: umount -lසවිකිරීමේ ස්ථානයක් පසුව අතුරුදහන් වනු ඇත , නැතහොත් එය උඩින් සවි කිරීමෙන් සැඟවිය හැක.

fuserභාවිතා කළ හැකිය, නමුත් මගේ මනසට lsofවඩාත් ප්‍රයෝජනවත් ප්‍රතිදානයක් ඇත. කෙසේ වෙතත් fuserඔබේ නාට්‍යවලට හේතු වන ක්‍රියාවලීන් killing ාතනය කිරීමේදී එය ප්‍රයෝජනවත් වන අතර එමඟින් ඔබේ ජීවිතය සමඟ ඉදිරියට යා හැකිය.

ගොනු ලැයිස්තුගත කරන්න <mountpoint>(ඉහත අවවාදය බලන්න):

fuser -vmM <mountpoint>

ලිවීම සඳහා විවෘත කර ඇති ලිපිගොනු සමඟ පමණක් අන්තර්ක්‍රියාකාරී ලෙස kill ාතනය කරන්න:

fuser -vmMkiw <mountpoint>

කියවීමට පමණක් ( mount -o remount,ro <mountpoint>) නැවත ගණනය කිරීමෙන් පසු , ඉතිරි සියලු ක්‍රියාවලීන් kill ාතනය කිරීම ආරක්ෂිතයි (r):

fuser -vmMk <mountpoint>

සවිකරන ස්ථාන

වැරදිකරු කර්නලය විය හැකිය. ඔබ උත්සාහ කරන ගොනු පද්ධතියේ සවිකර ඇති තවත් ගොනු පද්ධතියක් umountශෝකයට හේතු වේ. සමඟ පරීක්ෂා කරන්න:

mount | grep <mountpoint>/

ලූප්බැක් සවි කිරීම් සඳහා, මෙහි ප්‍රතිදානය ද පරීක්ෂා කරන්න:

losetup -la

නිර්නාමික ඉනෝඩ (ලිනක්ස්)

නිර්නාමික ඉනෝඩ නිර්මාණය කළ හැක්කේ:

  • තාවකාලික ලිපිගොනු ( openසමඟ O_TMPFILE)
  • ඔරලෝසු inotify
  • [eventfd]
  • [eventpoll]
  • [timerfd]

මෙම Pokemon අතරින් වඩාත් ම දුරවබෝධාත්මක වර්ගය වන අතර, පෙනී lsofගේ TYPEලෙස තීරුව a_inode(දී සමා වන lsofman පිටුව ).

ඒවා දර්ශණය නොවනු ඇත lsof +f -- /dev/<device>, එබැවින් ඔබට අවශ්‍ය වන්නේ:

lsof | grep a_inode

නිර්නාමික ඉනෝඩ රඳවා තබා ගැනීමේ ක්‍රියාවලීන් සඳහා, බලන්න: වත්මන් inotify ඔරලෝසු ලැයිස්තුගත කරන්න (pathname, PID) .


5

විවරයක් සවි කර ඇති PIDs ගැන වාර්තා කිරීමට ෆියුසර් සඳහා ඔබ -m භාවිතා කළ යුතුය

fuser -m /path

2
ඇත්ත, නමුත් අදාල නොවේ: lsof /pathPID වල ලැයිස්තුවම සපයයි fuser -m /path.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

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

මේ tag DELප්රතිදානයේ. මකාදැමුණු ගොනුව මත රැඳී සිටීමේ ක්‍රියාවලිය නැවත ආරම්භ කිරීම ගැටළුව විසඳීය.


3
එබැවින් සාරාංශය: ඉවත් කරන ලද ගොනුවක් විවෘත කිරීමේ ක්‍රියාවලිය. හොඳ ආදානය.
ඔලේ ටැන්ජ්

4

lsofහා fuserඑක්කෝ මට කිසිම දෙයක් කළේ නැහැ.

හැකි සෑම නාමාවලියක්ම .old ලෙස නම් කිරීම සහ පද්ධතිය නැවත පණගැන්වීමේ ක්‍රියාවලියකින් පසු මම වෙනස්කම් සිදු කළ සෑම අවස්ථාවකම වගකිව යුතු එක් විශේෂිත නාමාවලියක් (පෝස්ට්ෆික්ස් වලට අදාළව) මට හමු විය.

මම වරක් සිට symlink අත්කරගෙන ඇති බව පෙන්වා හැරී /var/spool/postfixකිරීමට /disk2/pers/mail/postfix/varspoolඉතා SD කාඩ්පතේ මත පදනම් මූල ගොනු පද්ධතිය (Sheeva ප්ලග්) මත තැටිය අවම කිරීම සඳහා.

මෙම symlink සමග, රඳවා තබා පසුව පවා postfixහා dovecotසේවා (දෙකම ps auxමෙන්ම netstat -tuanpඅදාළ ඕනෑම දෙයක් පෙන්නුම් කෙළේ නැත) මට හැකි වූයේ නැත unmount /disk2/pers.

මම සිම්ලින්ක් ඉවත් කර නව වින්‍යාස වෙත කෙලින්ම යොමු කිරීම සඳහා postfixසහ dovecotවින්‍යාස ගොනු යාවත්කාලීන කළ /disk2/pers/විට සේවා සහ unmountනාමාවලිය සාර්ථකව නැවැත්වීමට මට හැකි විය .

ඊළඟ වතාවේ මම මෙහි ප්‍රතිදානය දෙස වඩාත් සමීපව බලමි:

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

ඉහත විධානය මඟින් නාමාවලි ගසක ඇති සංකේතාත්මක සබැඳි නැවත නැවත ලැයිස්තු ගත කරනු ඇත (මෙහි සිට ආරම්භ වේ /var) සහ නිශ්චිත ඉලක්ක සවිකිරීමේ ස්ථානයකට යොමු කරන එම නම් පෙරහන් කරන්න (මෙහි තැටිය 2).


3

මට මෙම ගැටළුව ඇති අතර, මා නොදන්නා පසුබිමෙහි සක්‍රීය තිර සැසි ඇති බව පෙනී ගියේය. මම අනෙක් සක්‍රීය තිර සැසියට සම්බන්ධ වූ අතර එහි කවචය දැනට සවිකර ඇති නාමාවලියෙහි වාඩි වී නොමැත. අනෙක් ෂෙල් සැසි illing ාතනය කිරීම මට ගැටලුව විසඳීය.

මම හිතුවා මගේ යෝජනාව බෙදා ගන්නම් කියලා.


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 වෙනස් කිරීමට උත්සාහ කළෙමි, එබැවින් මට එය ගණනය කිරීමට අවශ්‍ය විය. මම මෙම ලිපියේ අදහස් දැක්වූ සහ පිළිතුරු දුන් සියල්ලන්ටම උත්සාහ කළෙමි (සැමට ස්තූතියි සහ විශේෂයෙන් ඔවුන් එක්රැස් කිරීම ගැන ole-tange) සහ තවමත් "උපාංගය කාර්යබහුලයි" දෝෂයකි.

ධාවන පථයේ 0 හි දක්වා ඇති අනුපිළිවෙලෙහි බොහෝ ක්‍රියාදාමයන් මරා දැමීමට මම උත්සාහ කළෙමි, මගේ නඩුවේ ඇණවුම අදාළ වූවත්, එයද උදව් නොවීය. ඉතින් මම කළේ මට 1 (තනි පරිශීලක මාදිලියකට) සමාන වන නමුත් ජාල හැකියාවන් (ssh ජාලය සහ xinet සමඟ) අභිරුචි ධාවන පථයක් (chkconfig හි ප්‍රතිදානය නව chkconfig --level විධානයන් සමඟ ඒකාබද්ධ කිරීම) නිර්මාණය කිරීමයි.

මම redhat භාවිතා කරන විට, runlevel 4 "භාවිතයට නොගත් / පරිශීලක අර්ථ දක්වා ඇති" ලෙස සලකුණු කර ඇත, එබැවින් මම එය භාවිතා කර ධාවනය කරමි init 4 . මගේ නඩුවේදී ඕනෑම අවස්ථාවක සේවාදායකය නැවත ආරම්භ කිරීමට අවශ්‍ය බැවින් මෙය හරි ය, නමුත් බොහෝ විට එය එසේ වනු ඇත ඕනෑම කෙනෙකුගේ තැටි අතුල්ලමින්.


-1

ලෙස @LawrenceC යෝජනා, ඔබගේ ෂෙල් වත්මන් කම්කරු බහලුම පෙලෙබෙන මාවතේ නම්, ඔබ දෝෂයක් "උපාංගය කාර්යබහුලය" ලැබෙනු ඇත.

ubuntu@myip:~/efs$ sudo umount ~/efs
umount.nfs4: /home/ubuntu/efs: device is busy

cd දෝෂය නිරාකරණය කිරීම සඳහා සවිකිරීමේ ස්ථානය හැර වෙනත් ස්ථානයකට.


ඔහුගේ වර්තමාන වැඩ කරන නාමාවලිය සවිකිරීමේ මාවතේ නොමැති බව OP පැහැදිලිව ප්‍රකාශ කළේය .
ගුන්ට්බර්ට්

unt ගුන්ට්බර්ට් අදහස් දැක්වීම් ආධ්‍යාත්මික වන අතර වර්තමාන වැඩ කරන නාමාවලිය සවිකරන මාවතේ තිබේද යන ප්‍රශ්නය හෝ පිළිතුරෙහි සඳහන් නොවන බැවින් මම එය පැහැදිලි පිළිතුරක් ලෙස එක් කළෙමි.
එන්හාර්මොනික්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.