2012-03-16 3 views
8

У меня есть машина Windows, и я запускаю VMWare Player. У меня есть изображение 1 Centos. В какой-то момент VM составляла около 12 ГБ.Shrink vmware disk

Я удалил много ненужных файлов, сбросив размер до 4 Гб

Однако это снижение не было отражено в VMDK.

Windows, сообщает, что размер около 10Гб, в то время как Centos использует только 4 Гб

Есть ли способ, чтобы вернуть это пространство?

ответ

6

Да, вы можете уменьшить это, используя «vmware-vdiskmanager». Оформить заказ article.

Также спросите себя - вам нужно это пространство позже? Если это непроизводственная среда, и вы используете ее для «домашних» целей, я настоятельно рекомендую перейти на другую платформу виртуализации (например, VirtualBox), поскольку она более удобна для пользователя, более современна и поддерживает большинство форматов файлов VMDK (так что миграция будет простой).

+0

Спасибо за помощь. Посмотрите также на виртуальную коробку – Thomas

12

Проблема заключается в том, что, хотя вы удалили файлы в образе 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, чем здесь, на переполнении стека, который предназначен для программирования вопросов.

+0

, для чего вам нужна синхронизация? ведь закрытие должно также привести к 'sync', правильно? – 0xC0000022L

+0

Пояс, фигурные скобки и кусочек струны Я думаю @ 0xC0000022L. Попробуйте это и посмотрите, работает ли это. Я полагаю, что теория состоит в том, что без «sync; sleep 1; sync» тогда Centos может отбросить любые незаписанные кэшированные записи на «zero.fill», как только он получит команду «rm zero.fill», оставив их un -zeroed. –

+0

Извините @EricGuo, ваш комментарий неясен. Вы имеете в виду, что вам нравится мой ответ здесь или вам нравится другой ответ, к которому вы пытались связаться? Если последнее, то ваша ссылка указывала на вопрос, а не на ответ, поэтому я понятия не имею, о ком вы говорите. Используйте ссылку «Share» perma внизу ответа, а не копируйте ссылку non perma из адресной строки. –

3

То, что вы ищете (в 5 версии проигрывателя):

  1. питания вниз VM (после необходимого домашнего хозяйства своих дисков)
  2. Изменить настройки виртуальной машины
  3. Нажмите на Жесткий диск (в левой панели)
  4. Нажмите на Утилиты
  5. Select Compact
+0

Также работает в VMWare Player – rboy

+0

Работает только на том, что у VMWare Player есть некоторые подсказки, какие части вашего виртуального диска можно сжать. Вы можете использовать такие инструменты, как 'zerofree' (Linux) или' sdelete' (Windows), для «неиспользуемого/неиспользуемого» неиспользуемого пространства. Впоследствии опция Compact может работать. – AnDus

11

Ударьте в этот вопрос, поскольку у меня это с VMware Player 5, и GUI инструментов удаляется даже на панели управления, и выполнение этого с хоста больше не работает. В любом случае, чтобы получить виртуальную машину, чтобы уменьшить открытую командную строку в Windows, Гость и перейти к

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe

и тип помощи для всех вариантов так что я использовал

C: \ Program Files \ VMware \ VMware Tools \ VMwareToolboxCmd.exe диск термоусадочная C: \

он работает в то время как го e машина включена, проверьте ее и наслаждайтесь

+0

На какой диск ссылается 'c: \' в конце? –

+1

Это относится к пользователям Windows, которые относятся к корневому диску операционной системы, я не пробовал его в гостевой книге Unix и предположил бы, что файл справки будет итерировать то, что поддерживает '/' –

0

К сожалению, ни один из предоставленных ответов не работал для меня (я использую Windows 8.1 как мою хост-систему, CentOS 7 - гостевая система, работающая внутри VMWare Player).

С помощью инструментов VMWare, установленных в гостевой системе, я мог бы вызвать следующие команды, которые сделали трюк для меня.

vmware-toolbox-cmd disk list показывает все смонтированные разделы, которые могут быть термоусаживаемые:

/ 
/boot 
/home 

использования, например, vmware-toolbox-cmd disk /home, чтобы сжать данный раздел.