Почему размер файла моей виртуальной машины более чем в 2 раза больше, чем у реальной FS?
У меня виртуальная машина с небольшим сервером Debian 7 внутри виртуальной машины VM ware Player. Диск имеет максимальный размер 55 ГБ, свойства виртуальной машины показывают текущий размер 46,5 ГБ.
Никакие другие диски / тома не монтируются на устройстве, debian говорит мне, что диск используется только для 16 ГБ, как может фактический размер файла виртуальной машины почти в 3 раза больше?!
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 сетевых устройства и ничего больше не настроено, только простая маленькая система веб-сервера.
2 ответа
Любой блок на виртуальном диске, который вы когда-либо использовали, будет учитываться в размере вашего виртуального жесткого диска, удаление файлов в файловой системе не освобождает блоки в виртуальном жестком диске. Для файлов виртуальных дисков не существует эквивалентного механизма "TRIM".
Первая причина заключается в том, что, возможно, диск вашей виртуальной машины был подготовлен как "фиксированный размер" или "толстое обеспечение", вариант, который выделяет весь объем дискового пространства перед форматированием. Второй вариант (который более вероятен) заключается в том, что, поскольку форматирование диска в файловой системе ext4 создает структуры FS по всему диску, в результате VMware Player выделяет все пространство для файла vdisk. Наиболее вероятная причина выделения всего размера - расположение (я) суперблока в ext4, эта файловая система дублирует свой суперблок в нескольких местах с большим расстоянием по всему диску, а VMware Player может не поддерживать редкие виртуальные жесткие диски, поэтому будет выделять Весь размер VHD на диске.
О том, почему размер составляет 48 ГБ, а размер VHD - 55 ГБ - в файловой системе ext4 есть определенные структуры данных, которые занимают дисковое пространство, которое эффективно уменьшается при взгляде на df
выход. Чтобы определить фактический размер дискового устройства из вашей гостевой ОС, используйте любое решение из этого вопроса, либо cat /proc/partitions
или же blockdev --getsize64 (device)
,