Назад | Перейти на главную страницу

Не удается размонтировать зацикленный файл, но нет открытых файлов?

В linux у меня есть файл, который я смонтировал с помощью -o loop вариант. Я хочу его размонтировать. Однако это говорит мне, что device is busy. Однако, делая lsof | grep pathofimagefile Я не получаю результатов. И все же я не могу размонтировать!

В своем вопросе вы написали grep pathofimagefile. Вы пробовали с grep pathofmountpoint?

Также убедитесь, что ни один процесс, запущенный на вашем компьютере, не имеет вашей точки монтирования (или ее подкаталога) в качестве текущего рабочего каталога.

sudo ls -l /proc/*/cwd | grep pathofmountpoint предоставит вам эти номера процессов.

Я считаю, что это то, что термоэлемент для. В частности, fuser -km /path/to/mount/point - обратите внимание, что -k flag убивает процессы с файлами, открытыми в этой файловой системе. Вы можете опустить этот флаг, чтобы сначала просмотреть список.

Вау, это действительно старое, но чтобы помочь тем, кто найдет это в будущем, вот что я обнаружил: У меня были вложенные крепления. То есть я смонтировал образ корневой файловой системы с устройством обратной связи на / mnt. Затем под этой точкой монтирования я смонтировал файловые системы proc и sysfs, смонтированные в / mnt / proc и / mnt / sys. Позже я забыл о файловых системах proc и sysfs, когда пытался размонтировать образ файловой системы.

# mount -o loop rootfs_disk.img /mnt
# mount proc /mnt/proc -t proc
# mount sysfs /mnt/sys -t sysfs
# # ... ages pass
# umount rootfs_disk.img
umount: /mnt: device is busy.
# umount /mnt
umount: /mnt: device is busy.

- Ной Спурриер

Убедитесь, что у вас нет открытой оболочки в смонтированном каталоге. Я никогда не смотрел, отображается ли это в lsof или нет. Также при выполнении lsof попробуйте greping на точке монтирования, а не на самом файле образа.

У меня такая же проблема. Каталог был смонтирован не только с помощью -o loop, но он экспортировался в NFS с помощью exportfs команда. fuser и lsof оба сказали, что устройство не использовалось. Так же exportfs -u претензий не было. Однако NFS все еще показывала устройство в / proc / fs / nfs / exports. Я перезапустил nfs и получил следующее:

Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS services:                                [FAILED]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]

Затем я мог размонтировать устройства. К сожалению, воспроизвести это довольно сложно. Может быть, кто-то может дать больше идей.

У меня была такая же проблема, umount не размонтирует мое устройство. Как ни странно, ни lsof, ни fuser не смогли найти какой-либо процесс, использующий эту точку монтирования. lsof нашел только поток ядра [loop0], я попытался убить его (даже с -9), но безуспешно.

Что меня действительно удивило, так это то, что после нескольких минут ожидания (после попытки umount -f / mnt и т. Д. - не сработало) я попробовал еще раз, и вуаля, теперь это сработало ?!

Я не уверен, но, может быть, само ядро ​​какое-то время не могло освободить loop0-thread, но потом могло закрыть его? Кто знает...

Итак, суть в следующем: попробуйте этот umount снова и снова, через определенное время вам может повезти :-)

бегать pwd ... ваш терминал все еще сидит в pathofimagefile? Если да, выйдите из pathofimagefile а затем повторно выполнить umount.

Что о:

sudo lsof | grep loop

Пытаться sudo losetup --detach /dev/loop0