У меня есть VM с маленьким сервером Debian 7 в VM VMware Player. Диск имеет максимальный размер 55 ГБ, свойства виртуальной машины показывают текущий размер 46,5 ГБ.
Никакие другие диски/объемы не смонтированы на устройстве, debian говорит мне, что диск только используется для 16 ГБ, как фактический vm дисковый файл может быть почти 3x размер?!
root@websrv:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
...
/dev/disk/by-uuid/ac9f2318-3e32-4b50-9178-20e5362013b0 ext4 48G 16G 30G 36% /
...
PS: vm не имеет никаких снимков, всего 2 сетевых устройства и ничто иное настроенное, просто простая небольшая система веб-сервера.
Любой блок на виртуальном диске, который вы когда-либо использовали, будет засчитываться в размер VHD, удаление файлов в файловой системе не освобождает блоки в VHD. Для файлов виртуального диска нет механизма, эквивалентного "TRIM".
.Первая причина заключается в том, что, возможно, на диске ВМ был установлен "фиксированный размер" или "толстый размер", вариант, который распределяет весь объем дискового пространства перед форматированием. Второй вариант (что более вероятно) заключается в том, что форматирование диска в файловой системе ext4 создает структуры FS по всему диску, что приводит к тому, что VMware Player выделяет все пространство под файл vdisk. Наиболее вероятной причиной выделения всего размера является расположение суперблока в ext4, эта файловая система дублирует свой суперблок в нескольких местах, сильно разбросанных по всему диску, и VMware Player может не поддерживать разреженные VHD, таким образом, выделяет весь размер VHD на диске.
О том, почему размер 48Гб, а размер VHD 55Гб - в файловой системе ext4 есть определенные структуры данных, которые занимают необработанное дисковое пространство, которое эффективно уменьшается, если посмотреть на вывод df
. Для определения фактического размера дискового устройства из гостевой операционной системы, используйте либо решение из этого вопроса , либо cat /proc/partitions
, либо blockdev --getsize64 (device)
.