Por que meu arquivo de disco VM é maior que 2x maior que o FS real?

5

Estou tendo uma VM com um pequeno servidor Debian 7 dentro de uma VM VMware Player. O disco tem um tamanho máximo de 55 GB, as propriedades da máquina virtual mostram um tamanho atual de 46,5 GB.

Não há outros discos / volumes montados no dispositivo, debian me diz que o disco é usado apenas para 16 GB, como o arquivo de disco vm pode ter quase 3x o tamanho?!

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: A vm não possui snapshots, apenas 2 dispositivos de rede e nada mais configurado, apenas um pequeno sistema de servidor web.

    
por peipst9lker 03.07.2015 / 16:10

2 respostas

8

Qualquer bloco no disco virtual que você já usou contará para o tamanho do seu VHD, a exclusão de arquivos no sistema de arquivos não libera os blocos no VHD. Não há mecanismo equivalente "TRIM" para arquivos de disco virtual.

    
por 03.07.2015 / 17:25
7

A primeira razão é que talvez o disco da sua máquina virtual tenha sido provisionado como "tamanho fixo" ou "disposição de espessura", a variante que aloca a quantidade total de espaço em disco antes da formatação. A segunda variante (que é mais provável) é porque a formatação de um disco no sistema de arquivos ext4 cria estruturas FS em todo o disco, o que faz com que o VMware Player aloque todo o espaço para o arquivo vdisk. A causa mais provável de alocar todo o tamanho é o (s) local (is) do superbloco no ext4, este sistema de arquivos duplica seu superbloco em vários locais altamente espaçados em todo o disco, e o VMware Player pode não suportar VHDs esparsos, assim alocará tamanho inteiro do VHD no disco.

Por que o tamanho é 48G e o tamanho do VHD é 55G - há certas estruturas de dados no sistema de arquivos ext4 que ocupam espaço em disco bruto que é efetivamente reduzido quando você olha para df output. Para determinar o tamanho real de um dispositivo de disco a partir do seu sistema operacional convidado, use qualquer solução desta questão , seja cat /proc/partitions ou blockdev --getsize64 (device) .

    
por 03.07.2015 / 16:30