zerofree на человечности 18.04

Я использую Ubuntu 18.04 для разработки на VM VirtualBox на окнах 10 про хостов, я уплотнил виртуальный жесткий диск ранее путем выполнения шагов отсюда: https://www.howtogeek.com/312883/how-to-shrink-a-virtualbox-virtual-machine-and-free-up-disk-space/

кроме обычных обновлений - я не бездельничал с ним, (недавно просто установил обновление для дополнений предположения virtualbox),

ранее, у меня только был один/dev/sda1, обнаруживающийся - сегодня я имел три и когда я пытаюсь выполнить zerofree на любом из тех, я получаю это, устройство смонтировано в rw

enter image description here

Я следовал некоторым инструкциям здесь также, чтобы остановить некоторые сервисы и попробовать к remount-, но он не работал

https://unix.stackexchange.com/questions/42015/mount-is-busy-when-trying-to-mount-as-read-only-so-that-i-can-run-zerofree

это все еще говорит, что точка монтирования занята

Я не уверен, если это произошло из-за недавнего обновления? Я также протестировал путем удаления гостевых дополнений VMware - но это не работало

Предложения?

6
задан 9 October 2019 в 20:42

10 ответов

Как упомянуто в одном из комментариев, у Вас есть три смонтированные раздела (sda1, sda2 и sda3) и несколько временных файловых систем, используемых для других целей.

Руководство для zerofree указывает, что, если Вы хотите выполнить это в файловой системе, затем та файловая система должна быть или смонтирована только для чтения, или размонтирована. Когда Вы запускаете Ubuntu, точно корневой раздел /, который является /dev/sda1 на Вашем компьютере, смонтирован таким образом, команда даст отказ.

Если Вы хотите работать zerofree на /dev/sda1 Вы должны будете или загрузиться от альтернативного устройства, UCH как загрузочный USB или ISO-образ, или выполнить chroot к альтернативному изображению Linux. Ссылка, на которую Вы ссылаетесь, имеет конкретные инструкции для Вас, о том, как запустить эту программу на Вашем корневом разделе. Перечитайте их инструкции относительно того, как использовать эту программу в Linux:

  • Начальная загрузка и Личинка доступа перед загрузками ОС
  • Выберите 'Advanced Options' из меню личинки
  • Введите сессию режима восстановления
  • используйте 'корневой' вход в систему
  • Определите диск
  • Выполненный zerofree
  • остановите машину
  • выключение питания и перезапуск VM

22.01.2019

Текущая версия Ubuntu делает выполнение zerofree трудный от сессии восстановления - в этом случае, легче запустить эту программу от живого USB:

  • Загрузите текущую Ubuntu файл ISO
  • Создайте живой USB / CD с ISO Ubuntu
  • Загрузите свое устройство от живых медиа (это может также быть сделано в VM's),
  • Установите программу zerofree, если это уже не установлено с командой sudo apt install zerofree
  • Выполните команду
  • Перезагрузите машину
4
ответ дан 23 November 2019 в 07:27

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

systemctl stop systemd-journald.socket && systemctl stop systemd-journald.service && sudo swapoff -a && mount -n -o remount,ro -t ext2 /dev/sda1 / && zerofree /dev/sda1

И это работало наконец.

1
ответ дан 23 November 2019 в 07:27

Я добавил бы комментарий к ответу Charles Green, но у меня нет достаточной репутации.

При выполнении zerofree команда, можно получить ошибку при высказывании что /dev/sda1 раздел смонтирован как чтение-запись. В этом случае необходимо повторно смонтировать такой раздел как только для чтения:

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

и повторно выполненный zerofree команда, как описано здесь

3
ответ дан 23 November 2019 в 07:27

Что работало на меня (объединяющиеся ответы от нескольких связанных вопросов и форумов):

  • VirtualBox 5.2.10
  • Windows 10 как хост ОС
  • Ubuntu 18.04 как гостевая ОС

Первая установка zerofree:

sudo apt-get install zerofree

Создайте 0s для получения, пространство, которое будет исправлено (удалите все файлы, Вы не нуждаетесь, а также освобождаете мусор),

Перезагрузка к меню GRUB (Нажимают Esc как Ubuntu, загружается),

Advanced options for Ubuntu > Recovery Mode (choose highest version number)

От Recovery Menu выбрать Drop to root shell prompt

df для получения разделов

df

Попытайтесь работать zerofree

zerofree /dev/sda1

Раздел является чтением-записью, должен быть смонтирован как только для чтения для zerofree к ошибке выполнения:

Если Вы получаете ошибку от zerofree как /dev/sda1 смонтирован как rw, затем необходимо смонтировать его как только для чтения для продолжения.

Смонтироваться /dev/sda1 или Ваш желаемый раздел как только для чтения для использования zerofree на нем:

Примечание: необходимо выполнить следующие шаги, относительно быстрые, чтобы смочь смонтировать диск как ro прежде чем сервисы и сокеты возвращаются в использование и начинают писать в диск снова. Иначе Вы, возможно, должны выполнить systemctl шаг снова для проверки, пишущий в диск остановился.

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

systemctl stop systemd-journald.socket && systemctl stop systemd-journald.service && sudo swapoff -a && mount -n -o remount,ro -t ext2 /dev/sda1 / && zerofree /dev/sda1

Шаги:

Сначала остановите все процессы, пишущие в диск, таким образом, Вы не добираетесь mount /: mount busy ошибка

systemctl stop systemd-journald.socket
systemctl stop systemd-journald.service

Проверьте, включены ли какие-либо разделы подкачки:

swapon -s

Если включено, то отключите их

sudo swapoff -a

Затем наконец необходимо смочь смонтироваться dev/sda1 как только для чтения

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

Затем наконец выполненный zerofree

zerofree /dev/sda1

Whens zerofree сделан, завершение работы Ubuntu

halt

Затем наконец, на Хосте ОС (в моем Windows 10 случая), уплотните vdi для освобождения пространства:

VBoxManage.exe modifymedium disk "C:\path\to\disk.vdi" --compact
3
ответ дан 23 November 2019 в 07:27

Я использовал решение Emmanuels, и оно только работало после остановки еще двух сокетов:

systemctl stop systemd-journald.socket 

новые строки:

systemctl stop systemd-journald-dev-log.socket
systemctl stop systemd-journald-audit.socket
systemctl stop systemd-journald.service
sudo swapoff -a 
mount -n -o remount,ro -t ext4 /dev/sda1 / 
zerofree /dev/sda1

Примечание: Я использую Ubuntu 18.04.3 и EXT4

Уменьшенный мой диск от 40 ГБ до 7 ГБ.Спасибо.:)

0
ответ дан 23 November 2019 в 07:27

Вот как я это сделал на гостевом сервере Ubuntu 18.04

  1. Поместил Ubuntu 18.04 Рабочий стол Live CD в оптический привод виртуальной машины (убедитесь, что последовательность загрузки загружает его в первую очередь)
  2. Загрузите виртуальную машину, когда компакт-диск спросит: нажмите Попробуйте Ubuntu
  3. . После запуска графического интерфейса запустите терминал
  4. sudo apt install zerofree и дайте ему установить
  5. sudo fdisk -l и обратите внимание на систему HD например / dev / sda2
  6. sudo zerofree -v / dev / sda2 и дайте ему закончить
  7. остановить
  8. ACPI shutdown VM
  9. Удалите Ubuntu 18.04 Desktop Live CD с оптического привода виртуальной машины перед перезапуском
2
ответ дан 5 February 2020 в 12:06

установить zerofree

sudo apt install zerofree

перезагрузиться в консоль восстановления ubuntu, удерживая нажатой [RIGHT SHIFT]

дополнительные параметры -> режим восстановления -> корневая консоль

найти корневой каталог

mount | grep "sda"

запустить zerofree

echo "u" > /proc/sysrq-trigger
mount /dev/mapper / -o remount,ro
zerofree -v /dev/sda1

reboot

shutdown -r now

сжать диск

VBoxManage modifyhd /path/to/VDI/VM.vdi --compact

source: cyplex с сайта ubuntuforums.org

6
ответ дан 27 March 2020 в 08:40

Я использую виртуальные машины сервера Ubuntu 18.04, доступ к которым осуществляется удаленно через phpvirtualbox. Было похоже, что запущено много служб.

Я попробовал различные советы, упомянутые выше, но метод, указанный Теоманом, был единственным способом, которым я мог смонтировать диск ro, и поэтому смог запустить zerofree.

(Кроме того, нет смысла делать это, если ваша виртуальная машина зашифрована, так как сжатие виртуальной машины не может работать, когда она зашифрована. Каковы мои.)

0
ответ дан 7 April 2020 в 23:17

Мне удалось уменьшить размер образа виртуальной машины VBox, используя dd вместо zerofree.

  1. Обычный вход в Ubuntu (моя виртуальная машина — elementary OS 5.1)
  2. Выполнить sudo dd if=/dev/zero of=/EMPTY bs=1M
  3. Выполнить sudo rm -f /EMPTY
  4. Отключение питания: sudo poweroff
  5. В хост-ОС (windows 10) запустите VBoxManage.exe modifyhd vbox.vdi --compact.

Мой файл виртуальной машины уменьшен с 8 ГБ до 6 ГБ. ПРИМЕЧАНИЕ. Можно игнорировать некоторые предупреждения.

Ниже приведен полный пример моего ввода/вывода:

В ВМ:

erich@vbox:~$ sudo dd if=/dev/zero of=/EMPTY bs=1M status=progress
[sudo] password for erich:         
97889812480 bytes (98 GB, 91 GiB) copied, 415 s, 236 MB/s
dd: error writing '/EMPTY': No space left on device
93399+0 records in
93398+0 records out
97934905344 bytes (98 GB, 91 GiB) copied, 415.592 s, 236 MB/s
erich@vbox:~$ sudo rm -f /EMPTY
bash: cannot create temp file for here-document: No space left on device

В хост-ОС:

cd <C:/path/to/folder/of/vbox.vdi>
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd eOS.vdi --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
2
ответ дан 24 September 2020 в 07:29

Эта команда сработала. Лучше, если вы добавите -v к zerofree, потому что в противном случае терминал будет выглядеть так, как будто он не отвечает при выполнении команды. Добавить -v будет отображать процент статуса. ОС — Ubuntu 18.04.4.

$ systemctl stop systemd-journald.socket && systemctl stop systemd-journald.service && sudo swapoff -a && mount -n -o remount,ro -t ext4 /dev/sda1 / && zerofree -v /dev/sda1

После того как я выполнил приведенную ниже команду, я освободил размер образа VDI со 160 ГБ до 25 ГБ.

VBoxManage.exe modifymedium disk "C:\path\to\disk.vdi" --compact
0
ответ дан 29 December 2020 в 01:08

Другие вопросы по тегам:

Похожие вопросы: