Проблема заключается в том, что, хотя вы удалили файлы в образе VMware CentOS, VMware не пытается вернуть это пространство, пока вы явно не попросите его об этом. Даже тогда, если блоки диска, используемые файлами, не были обнулены, они будут продолжать занимать место в файлах vmdk. Если вы привыкли к сокращению виртуальных машин Windows, это может быть вам незнакомо.
Основная процедура освоения пространства является:
- Удалите ненужные файлы
- Нулевые все свободное пространство (не требуется для виртуальных машин Windows)
- Использование VMware Player или Workstation сжать виртуальные диски.
Конкретная процедура я использовал, чтобы уменьшить мой CentOS изображение было сделать следующее:
df -h
su
yum clean all
cd/; cat /dev/zero > zero.fill ; sync ; sleep 1 ; sync ; rm -f zero.fill
exit
Я после этого выключил мой CentOS VM и использовал Compact утилиту на Hardware страницы для Жесткий диск устройство в Настройки виртуальной машины.
После сжатия файл vmdk для корневой файловой системы был примерно того же размера, что и размер используемой корневой файловой системы, и vmdk начал расширяться по мере необходимости отсюда.
Обратите внимание, что мой VM был только один корневой раздел, если бы я имел какие-либо другие разделы или диски, я бы заменил cd /
часть заполнить линию с точкой монтирования других разделов, а затем запустить утилита усадки на каждом виртуальном диске.
Дополнительные сведения см. В разделе Shrinking VM Disk Images.
Если вам нужны инструкции для этого с Linux на базе Debian или хотите использовать служебную программу командной строки vmware-vdiskmanager
, а не графический интерфейс VMware, чтобы уменьшить размер дисков, ознакомьтесь со статьей How To Shrink VMware Virtual Disk Files (.vmdk).
Если вы используете VM в течение некоторого времени, вам также может быть полезно обнулить файл подкачки. В моей системе CentOS, я сделал следующее:
$ su
Password:
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 2064376 0 -1
# swapoff -a
# cat /proc/swaps
Filename Type Size Used Priority
# dd if=/dev/zero of=/dev/sda3 bs=1M
dd: writing `/dev/sda3': No space left on device
2017+0 records in
2016+0 records out
2113929216 bytes (2.1 GB) copied, 24.6894 s, 85.6 MB/s
- Примечания: Поскольку мы вытираем целый раздел здесь, убедитесь, что устройство, указанное для команды
dd
то же показанная командой cat /proc/swaps
, Чтобы быть в безопасности, создайте резервную копию своей виртуальной машины, прежде чем пытаться это сделать.
После сокращения виртуального диска вам необходимо снова включить файл подкачки. Например:
$ su
Password:
# free -o
total used free shared buffers cached
Mem: 1030684 344552 686132 0 20956 175912
Swap: 0 0 0
# mkswap /dev/sda3
Setting up swapspace version 1, size = 2064380 KiB
no label, UUID=80276a48-3581-4f7a-8b05-1f2a97169e22
# gedit /etc/fstab
# swapon -a
# free -o
total used free shared buffers cached
Mem: 1030684 346132 684552 0 20968 175912
Swap: 2064376 0 2064376
gedit/etc/fstab
должен был заменить старый своп UUID с новой созданной mkswap
.
Обратите внимание, что этот вопрос был бы более уместным на Superuser или Serverfault, чем здесь, на переполнении стека, который предназначен для программирования вопросов.
Спасибо за помощь. Посмотрите также на виртуальную коробку – Thomas