«mount: / занят» при попытке монтирования в режиме «только для чтения», чтобы я мог запустить zerofree

«mount: / занят» при попытке монтирования в режиме «только для чтения», чтобы я мог запустить zerofree

Я пытаюсь запустить zerofreeUbuntu 11.04, чтобы можно было сжать образ VirtualBox vdi с помощью:

VBoxManage modifyhd Ubuntu.vdi --compact

Для того, чтобы запустить zerofreeобраз диска, его нужно смонтировать только для чтения. Я следуюэти инструкциичто говорит использовать это для повторного монтирования в режиме «только для чтения» из режима восстановления (перейдите в командную строку root):

mount -n -o remount,ro -t ext2 /dev/sda1 /

Но когда я это делаю, я получаю ошибку:

mount: / is busy

Есть идеи, как это сделать?

Следовать за: После ответа Яри иэта почтавыполнение этих команд решает проблему.

service rsyslog stop
service network-manager stop
killall dhclient

решение1

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

Вы можете найти процессы, которые используют определенные файлы, используя программу fuser. Например, fuser -v -m /вернет список процессов. Однако я не уверен, является ли один из них тем, который занимает файловую систему.

решение2

Улучшаем ответ Питера:

Я не мог завершить процессы, которые используют мою точку монтирования. Поэтому я сделал это:

  • Изменить /etc/fstab, чтобы при следующей загрузке файл стал доступен только для чтения. Пример:/dev/sda1 / ext2 ro 0 1
  • Перезагрузите компьютер и откройте оболочку (например, Host Key + F2)
  • Запустить zerofree

Чтобы «восстановить» вашу систему:

  • Монтировать с возможностью чтения-записи:$ mount -o remount,rw /dev/sda1
  • Отредактируйте /etc/fstabеще раз, восстановив исходное значение.

Дополнительно: при необходимости открытьрежим восстановленияна любом этапе:

  • Перезагрузить
  • Удерживайте клавишу Shift во время загрузки виртуальной машины.
  • Дополнительные параметры > Параметр ядра с режимом восстановления > Перейти к приглашению оболочки root

решение3

Вы можете перемонтировать файловую систему только для чтения, если нет процесса, который имеет файл, открытый для записи. Запустите, lsof /чтобы увидеть, какие процессы имеют файлы, открытые в корневой файловой системе. Файлы, открытые для записи, будут указаны в FDстолбце. Вы можете отфильтровать их с помощью

lsof / | awk '$4 ~ /[0-9].*w/'

Чтобы автоматически отфильтровать идентификаторы процессов, проанализируйте вывод lsof -F pa:

lsof -F pa /home | awk '/^p/ {pid = substr($0, 2)} /^a.*w/ {print pid}'

решение4

Иногда монтирование занимает так много процессов, что проще просто перезагрузить его, оставив монтирование только для чтения.

Измените запись для корневой файловой системы в /etc/fstab, например:

/dev/sda1 / ext2 relatime,rw,errors=remount-ro 0 1

становится:

/dev/sda1 / ext2 noatime,ro 0 1

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

Закончив, перемонтируйте файловую систему снова в режиме чтения/записи ( mount -o remount,rw /) и отмените изменения в /etc/fstab.

Вдохновленhttps://wiki.debian.org/ReadonlyRoot#Enable_readonly_root

Связанный контент