Ленивый размонтировать создает кот Шредингера монтирования
- Вы не можете знать, действительно ли устройство отключено или нет
- «Несмонтированная» файловая система остается доступной в некоторых случаях
- «Демонтирована» файловая система не доступна в некоторых случаях
Существует ложное чувство безопасности : кажется, что файловая система была размонтирована, но в действительности она была скрыта только из пространства имен файлов / иерархии.
- Процессы все еще могут писать через дескрипторы открытых файлов
- Новые или существующие файлы могут быть открыты для записи процессами с рабочим каталогом внутри точки монтирования через относительные пути
Это означает, что если вы umount -l /media/hdd
больше не сможете получить доступ /media/hdd/dir/file
(абсолютный путь), но если у вас есть процесс с рабочим каталогом, /media/hdd
он все равно сможет создавать новые процессы, которые могут читать / записывать ./dir/file
(относительный путь).
Если вы попытаетесь размонтировать устройство, вы получите сбивающее с толку сообщение:
# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted
Это выглядит так, как будто устройство отключено, но все еще могут быть процессы записи на диск.
Поскольку существуют различные неочевидные ситуации, которые могут привести к блокировке umount , файловая система все еще не может быть размонтирована, даже если lsof +f -- /dev/device
ничего не показывает.
Вы никогда не узнаете, размонтирована ли файловая система. Там нет никакого способа узнать.
Съемные устройства
Если вы делаете umount -l
съемный диск, вы находитесь в подвешенном состоянии: вы не можете быть уверены, что все ожидающие данные были записаны на диск.
Лучшее, что вы можете сделать после a, umount -l
- это обеспечить завершение всей записи и предотвратить ее дальнейшую запись , но вы все равно не можете гарантировать, что она была размонтирована.
На съемных устройствах, если устройство не отключено должным образом, может произойти странное поведение при следующем подключении:
Устройство получит увеличенное имя устройства, т.е. /dev/sdb
станет /dev/sdc
. Сообщения журнала ядра могут по-прежнему ссылаться, /dev/sdb
даже если это устройство больше не существует в виде файла /dev
. (Единственный способ решить эту проблему - перезагрузить компьютер.)
Btrfs коррупция может привести к. btrfs ожидает, что только одна файловая система с данным UUID присутствует одновременно. Ядро все еще видит тот же UUID, который доступен на фантомном устройстве и новом устройстве. (Я должен был восстановить мой резервный жесткий диск btrfs).
systemd
подводные камни
umount(2)
недавно прочитал несколько раз. В нем говорится только: «Выполните отложенную размонтировку: сделайте точку монтирования недоступной для новых обращений, немедленно отключите файловую систему и все файловые системы, смонтированные под ней, друг от друга и от таблицы монтирования, и фактически выполните размонтирование, когда точка монтирования перестает быть занятой». «. Но, к сожалению, это менее подробно, чем то, что вы предоставили.umount(8)
говорит, что файловая система занята «например, когда на ней есть открытые файлы, или когда какой-то процесс имеет там свой рабочий каталог, или когда используется файл подкачки». Это не похоже на окончательный список, но, вероятно, так хорошо, как я смогу найти.