Provisionamento espesso e fino: Qual é a diferença?

Neste artigo, vamos considerar em detalhes o aspecto de pré-alocação de armazenamento das configurações de disco virtual e descobrir o que são provisionamento espesso e fino, como eles diferem e qual desses tipos de pré-alocação de armazenamento é melhor para sua infraestrutura.

Provisionamento Espesso

O provisionamento espesso é um tipo de pré-alocação de armazenamento. Com o provisionamento espesso, a quantidade completa de capacidade de armazenamento de disco virtual é pré-alocada no armazenamento físico quando o disco virtual é criado. Um disco virtual com provisionamento espesso consome todo o espaço alocado para ele no datastore desde o início, tornando o espaço indisponível para uso por outras máquinas virtuais.

Há dois subtipos de discos virtuais com provisionamento espesso:

  • A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but this space may contain some old data on the physical media. This old data is not erased or written over, so it needs to be “zeroed out” before new data can be written to the blocks. This type of disk can be created more quickly, but its performance will be lower for the first writes due to the increased IOPS (input/output operations per second) for new blocks;
  • Um disco zerado com êxito é um disco que recebe todo o espaço necessário ainda no momento de sua criação, e o espaço é limpo de quaisquer dados anteriores no meio físico. A criação de discos zerados com êxito leva mais tempo, pois zeros são gravados em todo o disco, mas seu desempenho é mais rápido durante as primeiras gravações. Este subtipo de disco virtual com provisionamento espesso suporta recursos de cluster, como tolerância a falhas.

Por questões de segurança de dados, o preenchimento ansioso é mais comum do que o preenchimento preguiçoso com discos virtuais de alocação espessa. Por quê? Quando você exclui um VMDK, os dados no datastore não são totalmente apagados; os blocos são simplesmente marcados como disponíveis, até que o sistema operacional os sobrescreva. Se você criar um disco virtual de preenchimento ansioso neste datastore, a área do disco será totalmente apagada (ou seja, preenchida com zeros), impedindo assim que qualquer pessoa com más intenções possa recuperar os dados anteriores – mesmo que usem software especializado de terceiros.

Provisionamento Fino

O provisionamento fino é outro tipo de pré-alocação de armazenamento. Um disco virtual de provisionamento fino consome apenas o espaço necessário inicialmente e cresce com o tempo, de acordo com a demanda.

Por exemplo, se você criar um novo disco virtual de 30GB de provisionamento fino e copiar 10 GB de arquivos para ele, o tamanho do arquivo VMDK resultante será de 10 GB, enquanto você teria um arquivo VMDK de 30 GB se tivesse escolhido usar um disco de provisionamento espesso.

Os discos virtuais provisionados de forma fina são rápidos de criar e úteis para economizar espaço de armazenamento. O desempenho de um disco provisionado de forma fina não é maior do que o de um disco provisionado de forma espessa com zero preguiçoso, porque para ambos os tipos de disco, zeros precisam ser escritos antes de escrever dados em um novo bloco. Note que quando você exclui seus dados de um disco virtual provisionado de forma fina, o tamanho do disco não é reduzido automaticamente. Isso ocorre porque o sistema operacional exclui apenas os índices da tabela de arquivos que se referem ao corpo do arquivo no sistema de arquivos; ele marca os blocos que pertenciam aos arquivos “excluídos” como livres e acessíveis para que novos dados possam ser escritos. É por isso que vemos a remoção de arquivos como instantânea. Se fosse uma exclusão completa, onde zeros fossem escritos sobre os blocos que os arquivos excluídos ocupavam, levaria aproximadamente o mesmo tempo que copiar os arquivos em questão. Veja a ilustração simplificada abaixo.

Problemas que Podem Ocorrer ao Usar Discos Virtuais Provisionados de Forma Fina

O uso de discos virtuais provisionados de forma fina nem sempre é suave. Existem alguns problemas dos quais você deve estar ciente e preparado para lidar.

Vamos considerar um exemplo que torna as máquinas virtuais inutilizáveis. Por exemplo, temos um datastore de 20GB com três máquinas virtuais em execução nele. Cada máquina virtual tem um disco virtual provisionado fino definido com um tamanho máximo de 10 GB. (Essa prática é chamada de “superprovisionamento” – atribuímos discos virtuais mais espaço do que podem ocupar fisicamente. Isso é feito com frequência, pois permite dimensionar o sistema adicionando mais armazenamento físico à medida que for necessário.) O tamanho do arquivo de cada disco virtual aumentará à medida que dados são adicionados, até que não haja mais espaço livre no datastore. A situação se torna crítica quando só resta 1GB de espaço livre no datastore, como quando, por exemplo, a VM1 ocupa 8 GB, a VM2 ocupa 7 GB e a VM3 – 4 GB.

Métodos regulares de exclusão de arquivos dentro das máquinas virtuais não ajudarão a encolher os discos virtuais provisionados finos. Se mais de 1 GB de novos dados forem gravados em qualquer uma dessas máquinas virtuais, todas as três falharão e você precisará migrar uma ou mais das máquinas virtuais para outro datastore para restaurar seus estados de execução.

Como Reduzir o Tamanho do Disco Virtual Provisionado Fino Após a Exclusão de Arquivos

Para poder reduzir o tamanho do arquivo VMDK de seus discos virtuais provisionados finos, você precisa saber como zerar os blocos que os dados excluídos anteriormente ocuparam. Vamos descobrir como fazer isso.

Nota: Operações de encolhimento de disco só são possíveis se as máquinas virtuais não contiverem instantâneos. Além disso, por favor, tenha cuidado e execute comandos sob sua própria responsabilidade. Sempre faça backup de todos os seus dados importantes antes de realizar quaisquer operações de disco.

Reduzindo Discos VMware Thin-Provisioned no Linux

Vamos considerar um exemplo: temos um arquivo VMDK de 10.266.496 KB (10GB) (descobrimos seu tamanho indo para o diretório no datastore onde nossa máquina virtual está localizada) e queremos reduzir o disco virtual no qual o sistema operacional Linux convidado está instalado. Podemos tentar excluir arquivos desnecessários neste disco virtual. No entanto, o Linux não zera automaticamente os blocos após a exclusão de arquivos; você terá que fazer isso você mesmo. Você pode fazer isso usando a utilidade dd (duplicador de dados) para copiar e converter dados. Essa ferramenta está disponível em todos os sistemas Linux.

Observação: Antes de executar a utilidade dd, é necessário garantir que o datastore tenha capacidade suficiente para usá-lo (por exemplo, para o servidor ESXi, você pode verificar a capacidade de armazenamento na seção de armazenamento do cliente vSphere – vá para Configuração > Armazenamento).

Vamos usar a utilidade dd.

  1. Primeiro, verificamos o espaço livre em uma máquina virtual Linux convidada usando o comando df -h:

    root@test-virtual-machine:/# df -h

    Obtemos a seguinte saída no console:

    Sistema de Arquivos   Tamanho   Usado   Disponível   Uso%   Montado em
    udev         469M   0      469M    0%     /dev
    tmpfs        99M    6,3M   92M     7%     /run
    /dev/sda7    17G    8,8G   6,4G    58%    /
    tmpfs        491M   116K   491M    1%     /dev/shm
    tmpfs        5,0M   4,0K   5,0M    1%     /run/lock
    tmpfs        491M   0      491M    0%     /sys/fs/cgroup
    /dev/sda1    945M   121M   760M    14%    /boot
    /dev/sda6    3,7G   13M    3,5G    1%     /var/log
    tmpfs        99M    36K    99M     1%     /run/user/1000
    

    Pode-se ver a partir desta saída que a partição / (raiz) contém 8,8 GB de arquivos.

  2. Vamos deletar alguns gigabytes de arquivos desnecessários na partição raiz. Isto é o que vemos no console se rodarmos o comando df -h /:

    Sistema de Arquivos   Tamanho   Usado   Disponível   Uso%   Montado em
    /dev/sda7    17G    4,7G   11G     31%    /

    Dessa forma, nossa partição raiz agora contém 4,7 GB de arquivos. No entanto, ao irmos para o diretório onde nosso arquivo VMDK está localizado, podemos ver que seu tamanho ainda é de 10.266.496 KB (10 GB).

  3. Agora vamos preencher o espaço livre com zeros (no nosso caso, vamos preencher 10 GB de 11 GB disponíveis). Primeiro, digitamos cd seguido pelo nome do diretório ao qual a partição que precisa ser preenchida com zeros está montada (no nosso caso é cd /, porque queremos navegar até a partição raiz). Depois disso, executamos o seguinte comando, alterando as variáveis para atender às nossas necessidades:

    dd bs=1M count=10240 if=/dev/zero of=zero

    Neste comando:

    • dd só pode ser executado como super usuário.
    •  bs define o tamanho do bloco (por exemplo, bs=1M resultaria em um tamanho de bloco de 1 Megabyte).
    •  count especifica o número de blocos a serem copiados (o padrão é para dd continuar para sempre ou até que a entrada acabe). No nosso caso, 10.240 MB é a quantidade de espaço livre que queremos preencher com zeros, então o número de blocos de 1 Megabyte é 10240.
    •  if significa “arquivo de entrada”. Aqui é onde você deve indicar a fonte da qual deseja copiar dados. No nosso caso, é /dev/zero – um arquivo especial (um pseudo-dispositivo) que fornece quantos caracteres nulos você quiser ler dele.
    •  of significa “arquivo de saída”. Aqui é onde você define o destino onde deseja escrever/colar seus dados (no nosso caso, o nome do arquivo é zero).

    Após executar o comando acima, o tamanho do nosso arquivo V

Nota: Para realizar a redução, é necessário instalar as VMware Tools.

  1. Para máquinas virtuais em execução no VMware ESXi ou VMware Workstation, executamos os dois seguintes comandos no sistema operacional convidado Linux.a) Para garantir que a partição do disco esteja disponível, executamos o comando:

    root@test-virtual-machine:/# vmware-toolbox-cmd disk list

    Este é o resultado que vemos no nosso caso (ou seja, vemos a lista de partições disponíveis):

    /
    /boot
    /var/log

    A partição raiz está presente, então podemos prosseguir.b) Para reduzir a partição, executamos o seguinte comando:

    root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /

    Este é o resultado que vemos no nosso caso:

    Por favor, ignore quaisquer avisos sobre espaço em disco durante o processo de redução.
    Progresso: 100 [===========>]
    Redução de disco concluída.
    

    Agora, o tamanho do nosso arquivo VMDK reduzido é de 5.323.456 KB (ou seja, 5,08 GB – muito menos do que os 10,8 GB que eram antes).

Observação: Se sua máquina virtual convidada está sendo executada em um servidor ESXi, após preencher os blocos com zeros, você pode seguir essas etapas:

  1. Desligue a máquina virtual ou desconecte o disco virtual que deseja reduzir.
  2. Conecte-se ao host ESXi com o cliente SSH.
  3. Navegue até a Pasta da Máquina Virtual.
  4. Verifique o uso do disco com du -h.
  5. Execute vmkfstools -K test-virtual-machine.vmdk.
  6. Verifique o uso do disco com du -h novamente.

Reduzindo Discos VMware Thin-Provisioned no Windows

Como o Linux, o Windows não zera automaticamente blocos após excluir arquivos. Para poder zerar o espaço livre dos discos de destino em sua máquina virtual Windows, você precisa baixar o SDelete – um utilitário gratuito da Suite Sysinternals da Microsoft – e descompactar os arquivos do arquivo baixado para c:\program files\sdelete

Em seguida, siga estas etapas:

  1. Execute cmd
  2. Vá para o diretório onde o SDelete está localizado. No nosso caso, é: cd c:\program files\sdelete

  3. Para cada partição no console, use o comando sdelete -z. Isso é o que temos no nosso caso:

    sdelete -z c:
    sdelete -z d:

    Esses comandos irão zerar qualquer espaço livre no seu disco de provisionamento fino preenchendo qualquer espaço não utilizado nas partições especificadas. Aguarde alguns minutos até que o processo seja concluído. Seu arquivo VMDK expandirá para seu tamanho máximo durante o processo.

  4. Certifique-se de que o VMware Tools esteja instalado em sua máquina virtual Windows. Por padrão, o VMware Tools é instalado em c:\Program Files\VMware\VMware Tools\

    Navegue até este diretório digitando:

    cd c:\Program Files\VMware\VMware Tools\

  5. Para ver as partições de disco disponíveis, digite:

    vmwaretoolboxcmd disk list

  6. Reduza as partições de disco que você precisa. Em nosso caso, executamos os seguintes comandos:

    vmwaretoolboxcmd disk shrink c:\
    vmwaretoolboxcmd disk shrink d:\

    Aguarde até que o programa conclua a redução do disco.

Você pode usar este método em máquinas virtuais que estejam rodando no VMware ESXi ou no VMware Workstation.

VMware Storage Distributed Resource Scheduler

Acima, mencionamos uma solução para reduzir discos provisionados manualmente. No entanto, há mais um modo de gerenciar seus discos virtuais (tanto provisionados finamente quanto provisionados grossamente), se você utilizar um cluster de datastore no vSphere. A VMware fornece a migração automática de discos virtuais dentro do cluster de datastore para evitar o transbordamento de armazenamento em disco onde os discos virtuais provisionados finamente estão localizados e para equilibrar os recursos de E/S.

Se você tiver mais de um datastore compartilhado montado no servidor ESXi, poderá configurar o Storage Distributed Resource Scheduler (Storage DRS). O Storage DRS é um recurso inteligente do vCenter Server para gerenciar de forma eficiente o armazenamento VMFS e NFS, que fornece o posicionamento e a migração automática de discos virtuais. Você também pode definir o Storage DRS no modo manual, se preferir aprovar as recomendações de migração manualmente.

Siga estas etapas para habilitar o Storage DRS:

  1. Navegue até o cluster de datastore no vSphere Web Client.
  2. Vá para vCenter > Datastore Clusters.
  3. Selecione seu cluster de datastore e clique em Manage > Settings > Services > Storage DRS.
  4. Clique em Edit.
  5. Configure as configurações de automação, funções relacionadas à E/S e opções avançadas que você precisa.
  6. Clique em OK para concluir.

Se não houver clusters de datastore em seu ambiente vSphere, siga estas etapas para criar e configurar um novo cluster de datastore:

  1. Navegue até vCenter > Datacenters no Cliente da Web do vSphere.
  2. Clique com o botão direito no seu Datacenter e selecione Novo Conjunto de Datastores.
  3. Insira o nome do seu conjunto de datastores e marque a caixa de seleção próxima a “Ativar DRS de Armazenamento“.
  4. Selecione as configurações de automação, funções relacionadas a E/S e opções avançadas necessárias.
  5. Clique em OK para concluir.

Conclusão

Neste post do blog, consideramos os tipos de discos virtuais e ponderamos as vantagens e desvantagens de cada um para entender melhor as diferenças entre alocamento espesso e fino. Discos de alocamento espesso, zerados de maneira ávida, são os melhores em desempenho e segurança, mas exigem espaço de armazenamento livre suficiente e levam muito tempo para serem criados. Discos de alocamento espesso, zerados de maneira preguiçosa, são bons por terem tempos curtos de criação, mas não proporcionam tanta velocidade quanto os discos zerados de maneira ávida e são menos seguros. Discos de alocamento fino são a melhor escolha para economizar espaço no datastore no momento da criação do disco.

Você pode criar um disco virtual com um tamanho máximo maior do que o espaço físico disponível (“sobreprovisionamento”) e adicionar mais armazenamento físico no futuro, mas lembre-se de que se o espaço em disco físico ficar cheio e o disco de alocamento fino não puder crescer para acomodar mais dados, suas máquinas virtuais se tornarão inutilizáveis – portanto, não se esqueça de monitorar a quantidade de espaço livre. Também passamos por métodos de redução de discos virtuais do VMware alocados de forma fina, caso você prefira não adicionar mais armazenamento e precise reduzir o espaço ocupado.

Source:
https://www.nakivo.com/blog/thick-and-thin-provisioning-difference/