Мои динамично растущие виртуальные диски (VDI) от различных установок Ubuntu в Виртуальном Поле на самом деле постоянно "растут" действительно.
Удаление файлов в виртуальной машине не освобождает место, которое мой файл VDI занял от пространства на жестком диске хоста.
Как я уменьшаю эти файлы для возвращения неиспользованного пространства на жестком диске к хосту?
Динамично растущий Виртуальный файл виртуального жесткого диска Поля способен к росту по требованию виртуальной машины до максимального размера, который мы определили в установке этого файла. Это однако не освобождает пространство файлов, мы удалили в госте ОС.
В случае, если диск вырос слишком много, мы можем уплотнить его снова, если неиспользуемое место заполнено нулями, и диск находится в формате VDI.
Для ext2 к расширению 4 файловых системы это может быть сделано от гостя Ubuntu с zerofreeутилитой командной строки *.
zerofree /dev/sdxX
Этому нужен диск не использоваться и быть размонтированным. Нам поэтому, вероятно, придется связать его временно с другим VM, который мы создали с этой целью, или мы должны загрузить продуктивную среду Ubuntu на этом VM.
Замена /dev/sdxX
с ext2 ext3 или ext4 отформатировал рассматриваемый раздел.
Больше чем на одном разделе мы мои должны повториться zerofree
для каждого раздела. Следует иметь в виду, что путем заполнения нулями виртуальный файл будет временно расти к, он - максимальный размер.
После того как все неиспользованное дисковое пространство заполнено нулями, с которыми мы затем уменьшаем диск
VBoxManage modifyhd <name>.vdi --compact
Это значительно уменьшит размер файла нашего файла VDI.
* В госте Windows мы можем заменить неиспользуемое место утилитой sdelete
.
Вот некоторые альтернативные способы обнулить свободное пространство на диске (который может быть самой трудоемкой частью). Впоследствии, необходимо будет все еще работать VBoxManage modifyhd <disk> --compact
для уплотнения файла фактической дисковой емкости.
<час> Эта команда может обнулить диск, в то время как это размонтировано:
apt-get install zerofree
zerofree -v /dev/sdxN
<час> Здесь пример того, как заставить dd периодически печатать вывод:
dd if=/dev/zero of=temp-file-on-disk bs=20M
# run this to get the process ID of the dd command
pgrep -l '^dd
<час> Здесь dd
- как программа, которая будет автоматически периодически печатать вывод: apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd
<час> Здесь dd
- как программа, которая будет автоматически периодически печатать вывод: apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M
| awk '{print $1}')
<час> Здесь
dd
- как программа, которая будет автоматически периодически печатать вывод: apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M