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 as provisionamentos espessa e fina, como elas diferem e qual desses tipos de pré-alocação de armazenamento é melhor para sua infraestrutura.

Provisionamento Espesso

Provisionamento espesso é um tipo de pré-alocação de armazenamento. Com o provisionamento espesso, a quantidade completa de capacidade de armazenamento do disco virtual é pré-alocada no armazenamento físico quando o disco virtual é criado. Um disco virtual provisionado de forma espessa consome todo o espaço alocado para ele no datastore desde o início, então o espaço não está disponível para uso por outras máquinas virtuais.

Há dois subtipos de discos virtuais provisionados de forma espessa:

  • 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 com zero preenchido ansioso é um disco que obtém todo o espaço necessário ainda no momento de sua criação, e o espaço é limpo de qualquer dado anterior no meio físico. Criar discos ansiosamente preenchidos leva mais tempo, porque zeros são escritos em todo o disco, mas seu desempenho é mais rápido durante as primeiras gravações. Este subtipo de disco virtual provisionado de forma espessa suporta recursos de clusterização, como tolerância a falhas.

Por razões de segurança de dados, o preenchimento antecipado é mais comum do que o preenchimento preguiçoso com discos virtuais de alocação espessa. Porquê? Quando elimina 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 operativo os sobrescreva. Se criar um disco virtual preenchido antecipadamente neste datastore, a área do disco será totalmente apagada (ou seja, preenchida com zeros), impedindo assim que qualquer pessoa com más intenções consiga recuperar os dados anteriores – mesmo que use software de terceiros especializado.

Provisionamento Fino

O provisionamento fino é outro tipo de pré-alocação de armazenamento. Um disco virtual de provisionamento fino consome apenas o espaço que precisa inicialmente e cresce com o tempo de acordo com a procura.

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

Os discos virtuais thin-provisioned são rápidos de criar e úteis para economizar espaço de armazenamento. O desempenho de um disco thin-provisioned não é maior do que o de um disco thick-provisioned lazy zeroed, 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 virtua thin-provisioned, 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 gravados neles. É 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 Thin-Provisioned

O uso de discos virtuais thin-provisioned 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 possui um conjunto de discos virtuais de provisionamento fino com um tamanho máximo de 10 GB. (Essa prática é chamada de “sobreaprovisionamento” – atribuímos mais espaço aos discos virtuais do que eles podem ocupar fisicamente. Isso é feito com frequência, pois permite dimensionar o sistema adicionando mais armazenamento físico conforme necessário.) O tamanho do arquivo de cada disco virtual irá expandir à medida que os dados são adicionados, até que não haja mais espaço livre no datastore. A situação se torna crítica quando resta apenas 1GB de espaço livre no datastore, como por exemplo, quando a VM1 ocupa 8 GB, a VM2 ocupa 7 GB e a VM3 – 4 GB.

Os métodos regulares de exclusão de arquivos dentro das máquinas virtuais não ajudarão a reduzir o tamanho dos discos virtuais de provisionamento fino. Se mais de 1 GB de novos dados forem gravados em qualquer uma dessas máquinas virtuais, as três falharão e será necessário 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 de Provisionamento Fino Após Excluir Arquivos

Para poder reduzir o tamanho do arquivo VMDK dos seus discos virtuais de provisionamento fino, você precisa saber como zerar os blocos que os dados que você excluiu anteriormente ocupavam. Vamos descobrir como fazer isso.

Observação: As operações de redução de disco são possíveis apenas se as máquinas virtuais não contiverem instantâneos. Além disso, por favor, esteja atento e execute os comandos por sua própria conta e risco. 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 ao ir 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 blocos após excluir arquivos; você terá que fazer isso você mesmo. Você pode fazer isso usando a utilidade dd (duplicador de dados) para copiar e converter dados. Esta ferramenta está disponível em todos os sistemas Linux.

Nota: 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
    

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

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

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

    Assim, nossa partição raiz agora contém 4,7 GB de arquivos. No entanto, ao ir 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, preencheremos 10 GB de 11 GB disponíveis). Primeiro, digitamos cd seguido pelo nome do diretório ao qual a partição que precisa ser zerada 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 superusuário.
    • bs define o tamanho do bloco (por exemplo, bs=1M lhe daria um tamanho de bloco de 1 Megabyte).
    • count especifica o número de blocos a serem copiados (o padrão é para o 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 origem de onde deseja copiar dados. No nosso caso, é /dev/zero – um arquivo especial (um pseudodispositivo) que fornece tantos caracteres nulos quanto você deseja 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 VMDK aumenta. Este é o resultado que vemos após o comando ser concluído com sucesso:

    10240+0 registros in
    10240+0 registros out
    10737418240 bytes (10 GB) copiados, 59,4348 s, 181 MB/s
    Comando concluído com sucesso.

    Portanto, agora o tamanho do nosso arquivo VMDK é de 11.321.856 KB (10,8 GB), significando que ele foi expandido. Além disso, se executarmos o comando df -h / novamente, veremos o seguinte:

    Sistema de arquivos   Tamanho   Usado   Disp.   Uso%   Montado em
    /dev/sda7    17G    15G    569M    97%    /

    Isto significa que quase toda a partição raiz (ou seja, 97%) está ocupada. Isso ocorre porque preenchemos a maior parte do espaço anteriormente “disponível” com zeros. Agora, nosso disco virtual provisionado finamente está pronto para ser reduzido.

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

  1. Para máquinas virtuais que estão sendo executadas no VMware ESXi ou no 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 em 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 em nosso caso:

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

    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 tinha antes).

Observação: Se a sua máquina virtual convidada estiver sendo executada em um servidor ESXi, após preencher os blocos com zeros, você pode seguir estas 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 Thin-Provisioned VMware no Windows

Como o Linux, o Windows não zera automaticamente os blocos após excluir arquivos. Para poder zerar o espaço livre nos discos de destino em sua máquina virtual Windows, você precisa baixar o SDelete – uma utilidade gratuita da Suíte 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 que temos no nosso caso:

    sdelete -z c:
    sdelete -z d:

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

  4. Verifique se o VMware Tools está instalado na 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 visualizar as partições de disco disponíveis, digite:

    vmwaretoolboxcmd disk list

  6. Reduza o tamanho das partições de disco que você precisa. No nosso caso, executamos os comandos:

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

    Aguarde até que o programa termine de reduzir o disco.

Você pode usar este método para máquinas virtuais que estão em execução no VMware ESXi ou VMware Workstation.

Programador de Recursos Distribuídos de Armazenamento do VMware

Acima, mencionamos uma solução para encolher discos de provisionamento fino manualmente. No entanto, há mais uma maneira de gerenciar seus discos virtuais (tanto de provisionamento fino quanto de provisionamento grosso), se você usar um cluster de datastore no vSphere. A VMware fornece migração automática de disco virtual dentro do cluster de datastore para evitar transbordamento de armazenamento de disco onde os discos virtuais de provisionamento fino estão localizados e para equilibrar recursos de E/S.

Se você tiver mais de um datastore compartilhado montado no servidor ESXi, pode configurar o Balanceador de Recursos Distribuídos de Armazenamento (Storage DRS). O Storage DRS é um recurso inteligente do vCenter Server para gerenciar eficientemente o armazenamento VMFS e NFS que fornece posicionamento e migração automática de disco de máquina virtual. Você também pode configurar o Storage DRS para o modo manual se preferir aprovar manualmente as recomendações de migração.

Siga estas etapas para ativar o Storage DRS:

  1. Acesse o cluster de datastore no Cliente da Web vSphere.
  2. Vá para vCenter > Cluster de Datastore.
  3. Selecione seu cluster de datastore e clique em Gerenciar > Configurações > Serviços > Storage DRS.
  4. Clique em Editar.
  5. Configure as configurações de automação, funções relacionadas a E/S e opções avançadas que você precisa.
  6. Clique em OK para finalizar.

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 vSphere.
  2. Clique com o botão direito no seu Datacenter e selecione Novo Cluster de Datastore.
  3. Insira o nome do seu cluster de datastore e marque a caixa de seleção perto de “Ativar SDRS de Armazenamento“.
  4. Selecione as configurações de automação, funções relacionadas a I/O e opções avançadas que você precisa.
  5. Clique em OK para finalizar.

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 provisionamento espesso e fino. Os discos provisionados com zero eager são os melhores em desempenho e segurança, mas exigem espaço de armazenamento livre suficiente e levam muito tempo para serem criados. Os discos provisionados com zero lazy são bons por seus tempos curtos de criação, mas não proporcionam tanta velocidade quanto os discos provisionados com zero eager, e são menos seguros. Discos provisionados finamente são a melhor escolha para economizar espaço de 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 que você tem disponível (“superprovisionamento”) e adicionar mais armazenamento físico no futuro, mas lembre-se de que se o espaço físico do disco encher e o disco provisionado fino não puder crescer para acomodar mais dados, suas máquinas virtuais se tornarão inutilizáveis – então não se esqueça de ficar de olho na quantidade de espaço livre. Também passamos por métodos de redução de discos virtuais VMware provisionados finamente, caso prefira não adicionar mais armazenamento e precise reduzir o espaço ocupado.

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