Lazy umount или Размонтирование занятого диска в Linux


19

Я прочитал, что можно «размонтировать» диск, который в противном случае занят, используя опцию «lazy». На этой странице есть что сказать:

umount - размонтировать файловые системы

ленивая разборка. Отключите файловую систему от иерархии файловой системы и очистите все ссылки на файловую систему, как только она больше не будет занята. Эта опция позволяет "занятой" файловой системе быть размонтированной. (Требуется ядро ​​2.4.11 или новее.)

Но какой в ​​этом смысл? Я подумал, почему мы вообще отключаем разделы:

  1. Чтобы удалить оборудование
  2. Для выполнения операций над файловой системой, которые было бы небезопасно делать при монтировании

В любом из этих случаев все «ленивое» размонтирование служит ИМХО, чтобы затруднить определение того, действительно ли диск размонтирован, и вы действительно можете выполнить эти действия. umount -lПохоже, что единственное приложение для неопытных пользователей «чувствует», что они достигли того, чего не достигли.

Почему вы используете ленивый размонтировать?

Ответы:


10

Потому что вы ленивы - вы хотите размонтировать после завершения операций с диском.

Вот вероятный сценарий:

Вы используете rsyncдля резервного копирования и уйти. Вы можете umount -lподключить диск, и после того, как он закончит копирование и синхронизацию, он отключится, поэтому, когда вы вернетесь после перерыва (который, как вы знаете, займет больше времени, чем резервное копирование), вы можете просто отключить диск вместо того, чтобы снова возиться с клавиатурой ,


Если бы вы были ленивы, наверняка вы бы хотели сэкономить БОЛЬШЕ времени, не используя аргумент, потому что, вернувшись, вы знали, что можете отключить его сразу же после завершения резервного копирования? Или сделать демонтаж диска частью операций после резервного копирования?
deed02392

Думайте об этом так: диск больше не занят - размонтируйте его сейчас. Он больше не монтируется, поэтому больше ничего не может писать в него. Это «делай это, когда можешь» вместо того, чтобы ошибаться.
Broam

Итак, как вы узнаете, когда будут выполнены операции с диском? Посмотрите на этот пример (ошибка?)
Том Хейл,

5

Это фактически реализовано, чтобы получить больше времени для выполнения последующих задач в административных задачах.

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

Пример : Задача 1 и Задача 2 - две административные задачи, запланированные вплотную.

Задача 1 Ежедневное резервное копирование

Он копирует большое количество файлов из раздела проекта в резервный раздел, например, / mnt / backupProj, который будет монтироваться на лету и размонтироваться в конце этой задачи. Копирование занимает значительное время.

Задача 2 Обновление SQL-представлений

Выполняет серию обновлений представления базы данных на выделенном сервере.

Задача 2, очевидно, полностью независима от задачи 1, поэтому мы можем lazy-unmount / mnt / backupProj, не дожидаясь завершения задачи резервного копирования.


1
Можете ли вы привести пример? В какой ситуации это «выиграет / сэкономит время»?
deed02392

4

Я использую lazy umount в тех случаях, когда он явно завис по разным причинам (например, отключение сервера nfs), а также когда мне нужно увидеть исходное содержимое каталога, который был смонтирован при монтировании. В обоих случаях монтировка занята. Я думаю, что есть и другие крайние случаи, но эти 2 являются наиболее распространенными причинами, по которым я использовал эту опцию.


Рекомендует --forceдля случая NFS.
Том Хейл,

3

Рассмотрим привязку, как вы можете видеть при работе с chroot:

mount --rbind /proc /mnt/proc
# do stuff
umount /mnt/proc

Если в вашей системе есть демон, который постоянно опрашивает /proc(я смотрю на вас ksysguardd), то вы не сможете umount /mnt/proc. Ленивый позволит вам umountв этом случае.


Почему бы не использовать --forceздесь вместо этого?
Том Хейл,

2

USB-накопители иногда зависают из-за аппаратного сбоя. Даже если вы подключите диск физически, вы получите другое имя устройства. Старое имя устройства не может быть размонтировано как обычно. сумма -l заставила мертвую запись исчезнуть.


1

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

При отложенном отключении можно безопасно отключить том во время работы программного обеспечения, подключить другой том к той же точке монтирования и дать команду программному обеспечению открыть файлы.

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

Перефразируя man-страницу, это означает, что если у тома есть открытые файлы, когда он лениво размонтирован, на самом деле он остается смонтированным, но просто недоступным через файловую систему и действительно только размонтируется, когда последний открытый файл закрыт.


1
Спасибо, это звучит как полезное приложение. Покажет ли lsofоткрытые файлы на старой точке монтирования? Также мне интересно, как это будет отличать открытые файлы на старом томе и новом?
deed02392

0

Я использую Encfs для шифрования части моих конфиденциальных данных.

Когда диск монтируется, nautilus создает превью (думаю, я не уверен) и блокирует файлы. Когда я хочу размонтировать его, он говорит, что он заблокирован другим процессом.

Из-за ленивого размонтирования папка исчезает из моей иерархии и скрывается. И когда фоновый процесс заканчивается, он успешно размонтируется.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.