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

8302
Ilari Kajaste

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

Проблема в том, что всякий раз, когда я переключаю свой нетбук в спящий режим, моя точка монтирования нарушается. Монтирование все еще существует, и при запуске mountотображается как обычно:

/dev/mmcblk0p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal) 

Однако любая попытка чтения / записи в него терпит неудачу с Input/output error.

Если есть какие-либо открытые программы, пытающиеся размонтировать устройство, происходит сбой с

umount: /home/ilari/storage: device is busy 

Кажется, проблема в том, что устройство /dev/mmcblk0исчезло из системы во время сна. Но здесь происходят странные вещи. Предыдущее устройство еще доступно, только теперь стало /dev/mmcblk1! И я могу смонтировать его снова в ту же точку, что делает вывод mountдовольно забавным

/dev/mmcblk0p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal) /dev/mmcblk1p1 on /home/ilari/storage type ext4 (rw,nosuid,nodev,uhelper=hal) 

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

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

Как я могу принудительно размонтировать, когда устройство занято? Желательно автоматически при пробуждении и с автоматическим перемонтированием. Любая помощь приветствуется.

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

РЕДАКТИРОВАТЬ: Как упоминалось в комментариях, это, вероятно, хорошая идея, чтобы размонтировать систему перед сном, а затем перемонтировать ее при пробуждении. Фактически, это, кажется, даже останавливает устройство от изменения его индекса, поэтому оно остается неизменным /dev/mmcblk0. Проблема в том, что я могу размонтировать его только после закрытия всех программ, которые его используют. (Обратите внимание, что это работает и после сна - закрывая все программы, я всегда могу размонтировать точку останова.) umount -fТоже не поможет, ответив дополнительным umount2: Device or resource busy.

Я использую Ubuntu Netbook Remix 9.10 на Acer Aspire One. Точка монтирования находится в fstab по UUID файловой системы (поэтому, конечно, почему перемонтирование работает, даже если имя устройства изменилось). Естественно, альтернативным решением этого является предотвращение изменения номера устройства, но я боюсь, что это будет гораздо более сложной проблемой.

3
У меня была похожая проблема (монтирование отказывается размонтировать, потому что оно занято) с общими папками Windows, когда компьютер, на котором находится общий ресурс, больше не доступен, включая случаи, когда машина, которая просматривает общий ресурс, не была заменена. David Spillett 14 лет назад 0
Вы пробовали размонтировать перед тем, как перевести систему в спящий режим, и перемонтировать после пробуждения? твой альт. Решение похоже на работу для udev, но это может не помочь, если устройство «зависло» при пробуждении. вы подали ошибку в Ubuntu? quack quixote 14 лет назад 1
@ ~ шарлатан: На ​​самом деле, размонтирование перед сном, кажется, поддерживает постоянный номер устройства. Тем не менее, я все еще не могу выполнить размонтирование перед сном, пока есть открытые программы (которые используют файлы в точке монтирования). Ilari Kajaste 14 лет назад 0

2 ответа на вопрос

5
Brendan Long

Работает ли umount -l /home/ilari/storage? У меня нет хорошего раздела для тестирования, но он может делать то, что вы хотите.

Ну, на самом деле, это работает! Больше не отображаются дубликаты с `mount`. Тем не менее, система продолжает увеличивать количество устройств на случай, если программы открыты, поэтому я не уверен, что это лучше, чем дублирование монтирования. По крайней мере, это выглядит немного лучше, и это то, что я просил. Щедрость и принятый ответ были неуместны из-за тайм-аута, извините! Я бы с радостью пожертвовал вам дополнительную награду, если бы это было возможно. Ilari Kajaste 14 лет назад 0
Не волнуйтесь. Я полагал, что это будет иметь такой эффект (umount -l удаляет устройство из списка монтирования и затем монтирует его, когда это возможно), я просто надеялся, что оно может считать его размонтированным после сна. Brendan Long 14 лет назад 0
[umount -l опасен] (https://unix.stackexchange.com/q/390056/143394) и не поможет при увеличении имен устройств. Tom Hale 7 лет назад 0
3
innaM

Вы пробовали -fфлаг umount?

umount -f /home/ilari/storage 

Выполнение чего-то подобного автоматически приведет к небольшому сценарию /etc/pm/sleep.d/. Но я рекомендую вам отключить при переходе в режим сна и повторно подключить при пробуждении. Недавно я получил хороший ответ, который должен сказать вам, что нужно сделать, чтобы написать этот маленький сценарий.

`-f` не помогает,` umount2: устройство или ресурс занят`. Я исправлю пост, чтобы упомянуть об этом. Ilari Kajaste 14 лет назад 0
Да, размонтирование перед сном - действительно хорошая идея, если мне удастся размонтировать. Спасибо за ссылку! Ilari Kajaste 14 лет назад 0