Страница 1 из 1
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 01:28
Olej
Есть у нас тут тема
VirtualBox: увеличение размера диска VM
Теперь хотелось бы решить обратную задачу: уменьшить размера слабо заполненного диска VM...
В частности, VDI диска EXT4 для
локальные инсталляции форума
Olej писал(а): ↑15 ноя 2023, 15:40
сохранить целиком образ диска + поднять его в виртуальной машине VirtualBox...
Код: Выделить всё
root@virtualbox:/etc# df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev 2005656 0 2005656 0% /dev
tmpfs 404128 46004 358124 12% /run
/dev/sda1 15389720 5215828 9371136 36% /
tmpfs 2020624 0 2020624 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2020624 0 2020624 0% /sys/fs/cgroup
tmpfs 404124 0 404124 0% /run/user/0
tmpfs 404124 0 404124 0% /run/user/1001
Это вообще случай, когда:
- заведомо не будет
больших изменений занятого размера...
- но нельзя и
поджимать впритык, чтобы иметь возможность устанавливать apt/dpkg некоторые полезные утилиты.
Т.е., вместо 15Gb для локальной инсталляции этого форума вполне можно было бы обойтись диском ... скажем 6.5Gb.
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 01:46
Olej
Olej писал(а): ↑16 ноя 2023, 01:28
уменьшить размера слабо заполненного диска VM...
Беглый поиск показывает что...
Изменение размера виртуального диска в VirtualBox
Опубликовано 11.11.2018
Следует отметить, что в интернете есть информация, что можно увеличить размер только ДИНАМИЧЕСКИХ виртуальных дисков форматов VDI или VHD, уменьшить — только VDI.
Уменьшаем объем виртуального диска VDI в VirtualBox
00:02, 04.02.2021
Перед тем, как уменьшить занимаемый динамическим диском VDI объём, стоит учесть, что в этой процедуре придётся заполнить всё свободное пространство на диске VDI нулями.
То есть, на время виртуальный диск расширится до своего максимально размера и для этого необходимо иметь запас свободного пространства на жестком диске.
Перед началом процедуры оптимизации диска стоит сделать резервную копию, так как теоретически возможно повреждение данных.
Открываем терминал Linux в виртуальной машине и вводим следующие команды:
Код: Выделить всё
sudo dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sudo dd if=/dev/zero of=zero.file bs=1024
sudo sync ; sleep 60 ; sync
sudo rm zero.small.file
sudo rm zero.file
Уменьшаем размер динамичиских виртуальных дисков VirtualBox
13-02-2016, 06:30
Для гостевых Linux машин все проще. Создаем в гостевой машине файл размером в пустое пространство, а потом удаляем его:
Код: Выделить всё
dd if=/dev/zero of=/tmp/zerofile; rm /tmp/zerofile
Теперь выключаем вирутальну машину и открываем консоль на хосте, где переходим в папку с нужным виртуальным диском и выполняем команду:
Сжатие образов HDD VirtualBox.
21 ноября 2014
Сколько уже версий прошло, а графического интерфейса для утилиты VBoxManage я так и не наблюдаю в составе Virtual Box, а эта программка умеет довольно много в сравнении с графическим менеджером виртуальных машин. И кроме всего прочего умеет сжимать и преобразовывать образы жестких дисков.
Для Linux есть пакет secure-delete, в который входит программа sfill. Запустить стирание можно так:
Но у программы есть одно побочное действие - она создает огромный файл с нулями, которые раздует образ диска до максимума. Лучшего варианта я пока не нашел.
Процедуры эти необходимо проделать для всех дисков, которые будут сжиматься.
После этих процедур выключаем виртуальную машину и уже из основной системы даём команду на сжатие образа:
Код: Выделить всё
vboxmanage modifyhd образ_диска.vdi --compact
Этот последний способ мне как-то больше приглянулся.
Идея же у всех одна и та же...
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 01:54
Olej
Olej писал(а): ↑16 ноя 2023, 01:46
Этот последний способ мне как-то больше приглянулся.
Код: Выделить всё
root@virtualbox:/etc# aptitude search secure-delete
p secure-delete - tools to wipe files, free disk space, swap and memory
Код: Выделить всё
root@virtualbox:/etc# apt install secure-delete
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
secure-delete
Обновлено 0 пакетов, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 69,6 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 160 kB.
Пол:1 http://debian.netforce.hosting/debian buster/main amd64 secure-delete amd64 3.1-6 [69,6 kB]
Получено 69,6 kB за 0с (299 kB/s)
Выбор ранее не выбранного пакета secure-delete.
(Чтение базы данных … на данный момент установлено 70527 файлов и каталогов.)
Подготовка к распаковке …/secure-delete_3.1-6_amd64.deb …
Распаковывается secure-delete (3.1-6) …
Настраивается пакет secure-delete (3.1-6) …
Обрабатываются триггеры для man-db (2.8.5-2) …
Код: Выделить всё
root@virtualbox:/etc# which sfill
/usr/bin/sfill
root@virtualbox:/etc# sfill --help
sfill v3.1 (c) 1997-2003 by van Hauser / THC <vh@thc.org>
Syntax: sfill [-fiIlvz] directory
Options:
-f fast (and insecure mode): no /dev/urandom, no synchronize mode.
-i wipe only inodes in the directory specified
-I just wipe space, not inodes
-l lessens the security (use twice for total insecure mode).
-v is verbose mode.
-z last wipe writes zeros, not random data.
sfill does a secure overwrite of the free space on the partition the specified
directory resides and all free inodes of the directory specified.
Default is secure mode (38 writes).
You can find updates at http://www.thc.org
Но как бы там не было ... начать процедуру нужно с того, что остановить VM и:
Olej писал(а): ↑16 ноя 2023, 01:46
Перед началом процедуры оптимизации диска стоит сделать резервную копию, так как теоретически возможно повреждение данных.
Код: Выделить всё
olej@R420:~/sdc3/VirtualBoxVMs/linux-ru.ru$ time cp linux-ru.ru.vdi linux-ru.ru.2.vdi
real 2m36,641s
user 0m0,308s
sys 0m30,846s
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 02:27
Olej
Olej писал(а): ↑16 ноя 2023, 01:54
стоит сделать резервную копию
После чего и загрузки VM:
Продолжается это долго ... понятно что будет долго - но не настолько же
И нагружен работой изрядно:
Код: Выделить всё
olej@virtualbox:~$ uptime
02:17:51 up 7 min, 3 users, load average: 2,14, 1,59, 0,76
Код: Выделить всё
olej@virtualbox:~$ uptime
02:26:58 up 16 min, 4 users, load average: 2,27, 2,12, 1,41
- Снимок экрана от 2023-11-16 01-21-34.png (213.37 КБ) 370 просмотров
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 03:54
Olej
Olej писал(а): ↑16 ноя 2023, 02:27
понятно что будет долго - но не настолько же
Закончилось это тем что...
Код: Выделить всё
olej@virtualbox:~$ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev 2005656 0 2005656 0% /dev
tmpfs 404128 45972 358156 12% /run
/dev/sda1 15389720 15373412 0 100% /
tmpfs 2020624 0 2020624 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2020624 0 2020624 0% /sys/fs/cgroup
tmpfs 404124 0 404124 0% /run/user/0
tmpfs 404124 0 404124 0% /run/user/1001
Код: Выделить всё
olej@virtualbox:~$ mc
Невозможно создать временный каталог /tmp/mc-olej: На устройстве не осталось свободного места (28)
Временные файлы будут создаваться в каталоге /tmp
Для продолжения нажмите любую клавишу...
Чего, по логике вещей и добивались...
Код: Выделить всё
root@virtualbox:/# ls -l /oooooooo.ooo
-rw------- 1 root root 10400096256 ноя 16 03:00 /oooooooo.ooo
Через 45 минут этого безобразия:
Код: Выделить всё
root@virtualbox:~# time sfill -fz /
Убито
real 49m8,337s
user 12m16,683s
sys 1m46,858s
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 03:55
Olej
Olej писал(а): ↑16 ноя 2023, 03:54
Через 45 минут этого безобразия:
После остановки VM:
Код: Выделить всё
olej@R420:/mnt/sdc3/VirtualBoxVMs/linux-ru.ru$ time VBoxManage modifyhd linux-ru.ru.vdi --compact
VBoxManage: error: Cannot register the hard disk '/mnt/sdc3/VirtualBoxVMs/linux-ru.ru/linux-ru.ru.vdi' {31314f59-3aad-437d-8608-3c4fd93c3f60} because a hard disk '/home/olej/sdc3/VirtualBoxVMs/linux-ru.ru/linux-ru.ru.vdi' with UUID {31314f59-3aad-437d-8608-3c4fd93c3f60} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 187 of file VBoxManageDisk.cpp
real 0m0,072s
user 0m0,018s
sys 0m0,046s
Облом
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 04:01
Olej
Olej писал(а): ↑16 ноя 2023, 03:55
Облом
Находит это разрешение вот здесь -
Как уменьшить размер динамического диска в VirtualBox для ОС Linux
23.11.2022
...
Если виртуальная машина (и ее диск) не зарегистрированы в VirtualBox, то сжатие происходит следующей командой:
Код: Выделить всё
$ vboxmanage modifymedium --compact "our_disk.vdi"
Если же окажется, что виртуалка и ее диск зарегистрированы, то такая команда может завершится ошибкой:
Код: Выделить всё
$ vboxmanage modifymedium --compact our_disk.vdi
VBoxManage: error: Cannot register the hard disk '/opt/vmFarm/our_disk.vdi' {1bbd8dbe-d0c7-4db7-9717-85313fe7e721} because a hard disk '/opt/vmFarm/our_disk.vdi' with UUID {1bbd8dbe-d0c7-4db7-9717-85313fe7e721} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox, callee nsISupports
VBoxManage: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 191 of file VBoxManageDisk.cpp
Такая ошибка может возникать в случае, если VDI-файл лежит в каталоге, который является линком (link) на другой каталог. Внутри VirtualBox файл видится по одному пути, а в момент выполнения консольной sh-команды полный путь к файлу разворачивается по другому пути. И тот и тот путь правильный, но VirtualBox считает их разными, т. е. не видит их эквивалентность, от чего и происходит ошибка.
В любом случе становится понятно, что диск виртуалки зарегистрирован. И для такого диска лучше применить ту же самую команду, но с использованием UUID. Если UUID диска неизвестен, его можно посмотреть командой:
По такой команде следует
большой список UUID
всех моих виртуальных машин...
Выбираю нужную:
Код: Выделить всё
olej@R420:/mnt/sdc3/VirtualBoxVMs/linux-ru.ru$ VBoxManage list hdds | grep linux-ru.ru.vdi -B4 -A3
UUID: 31314f59-3aad-437d-8608-3c4fd93c3f60
Parent UUID: base
State: created
Type: normal (base)
Location: /home/olej/sdc3/VirtualBoxVMs/linux-ru.ru/linux-ru.ru.vdi
Storage format: VDI
Capacity: 15360 MBytes
Encryption: disabled
И ужатие теперь пошло...
Код: Выделить всё
olej@R420:/mnt/sdc3/VirtualBoxVMs/linux-ru.ru$ time VBoxManage modifymedium --compact 31314f59-3aad-437d-8608-3c4fd93c3f60
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
real 1m11,780s
user 0m0,180s
sys 0m0,198s
Только закончился этот способ неудачей ... может я с утилитой недоработал...
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 04:06
Olej
Olej писал(а): ↑16 ноя 2023, 04:01
закончился этот способ неудачей
Пробую другой, и более понятный способ -
Уменьшаем объем виртуального диска VDI в VirtualBox
00:02, 04.02.2021
Открываем терминал Linux в виртуальной машине и вводим следующие команды:
Код: Выделить всё
sudo dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sudo dd if=/dev/zero of=zero.file bs=1024
sudo sync ; sleep 60 ; sync
sudo rm zero.small.file
sudo rm zero.file
Код: Выделить всё
root@virtualbox:~# dd if=/dev/zero of=zero.small.file bs=1024 count=102400
102400+0 записей получено
102400+0 записей отправлено
104857600 байт (105 MB, 100 MiB) скопирован, 0,432309 s, 243 MB/s
Код: Выделить всё
root@virtualbox:~# time dd if=/dev/zero of=zero.file bs=1024
dd: ошибка записи 'zero.file': На устройстве не осталось свободного места
10053385+0 записей получено
10053384+0 записей отправлено
10294665216 байт (10 GB, 9,6 GiB) скопирован, 184,961 s, 55,7 MB/s
real 3m4,965s
user 0m10,496s
sys 0m47,505s
Здесь нагрузочка (процессор) довольно приличная:
- Снимок экрана от 2023-11-16 02-33-17.png (71.35 КБ) 367 просмотров
На протяжении выполнения могу видеть в другом терминале:
Код: Выделить всё
olej@virtualbox:~$ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev 2005656 0 2005656 0% /dev
tmpfs 404128 5540 398588 2% /run
/dev/sda1 15389720 13016140 1570824 90% /
tmpfs 2020624 0 2020624 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2020624 0 2020624 0% /sys/fs/cgroup
tmpfs 404124 0 404124 0% /run/user/1001
...
Код: Выделить всё
olej@virtualbox:~$ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev 2005656 0 2005656 0% /dev
tmpfs 404128 5540 398588 2% /run
/dev/sda1 15389720 15373340 0 100% /
tmpfs 2020624 0 2020624 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2020624 0 2020624 0% /sys/fs/cgroup
tmpfs 404124 0 404124 0% /run/user/1001
Код: Выделить всё
root@virtualbox:~# ls -l zero*
-rw-r--r-- 1 root root 10294665216 ноя 16 03:35 zero.file
-rw-r--r-- 1 root root 104857600 ноя 16 03:31 zero.small.file
После чего:
Код: Выделить всё
root@virtualbox:~# sync ; sleep 60 ; sync
root@virtualbox:~# rm zero.small.file
root@virtualbox:~# rm zero.file
Нулями прописали диск, после чего протёрли...
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 04:10
Olej
Olej писал(а): ↑16 ноя 2023, 04:06
Нулями прописали диск, после чего протёрли...
После остановки VM
Код: Выделить всё
olej@R420:/mnt/sdc3/VirtualBoxVMs/linux-ru.ru$ VBoxManage list hdds | grep linux-ru.ru.vdi -B4 -A3
UUID: 31314f59-3aad-437d-8608-3c4fd93c3f60
Parent UUID: base
State: locked write
Type: normal (base)
Location: /home/olej/sdc3/VirtualBoxVMs/linux-ru.ru/linux-ru.ru.vdi
Storage format: VDI
Capacity: 15360 MBytes
Encryption: disabled
Код: Выделить всё
olej@R420:/mnt/sdc3/VirtualBoxVMs/linux-ru.ru$ time VBoxManage modifymedium 31314f59-3aad-437d-8608-3c4fd93c3f60 --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
real 1m14,279s
user 0m0,218s
sys 0m0,247s
И ... "великое чудо Виниту"
:
Код: Выделить всё
olej@R420:~/sdc3/VirtualBoxVMs/linux-ru.ru$ ls -l linux-ru.ru.vdi
-rw-r--r-- 1 olej olej 6925906432 ноя 16 02:43 linux-ru.ru.vdi
- Снимок экрана от 2023-11-16 02-45-24.png (79.45 КБ) 369 просмотров
При фактическом размере 6.45Gb ёмкость диска осталась та же - 15Gb
То чего и добивались...
VirtualBox: уменьшение размера диска VM
Добавлено: 16 ноя 2023, 04:12
Olej
Olej писал(а): ↑16 ноя 2023, 04:10
То чего и добивались...
Загрузка VM...
SSH подключение:
Код: Выделить всё
olej@R420:~$ ssh olej@192.168.1.35
olej@192.168.1.35's password:
Linux virtualbox 4.19.0-25-amd64 #1 SMP Debian 4.19.289-2 (2023-08-08) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Nov 16 03:34:22 2023 from 192.168.1.14
Код: Выделить всё
olej@virtualbox:~$ df
Файловая система 1K-блоков Использовано Доступно Использовано% Cмонтировано в
udev 2005656 0 2005656 0% /dev
tmpfs 404128 5540 398588 2% /run
/dev/sda1 15389720 5217780 9369184 36% /
tmpfs 2020624 0 2020624 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 2020624 0 2020624 0% /sys/fs/cgroup
tmpfs 404124 0 404124 0% /run/user/0
tmpfs 404124 0 404124 0% /run/user/1001
И готовый к использованию локальный форум на VM (смотрим что в адресной строке):
- Снимок экрана от 2023-11-16 03-14-07.png (150.23 КБ) 369 просмотров