Capítulo 2. Mantendo a VDO

Após implantar um volume VDO, você pode realizar certas tarefas para mantê-lo ou otimizá-lo. Algumas das seguintes tarefas são necessárias para o correto funcionamento dos volumes VDO.

Pré-requisitos

2.1. Gerenciando o espaço livre em volumes VDO

O VDO é um alvo de armazenamento em bloco com pouca provisão. Devido a isso, é necessário monitorar e gerenciar ativamente o uso do espaço nos volumes VDO.

2.1.1. O tamanho físico e lógico de um volume VDO

Esta seção descreve o tamanho físico, o tamanho físico disponível e o tamanho lógico que a VDO pode utilizar:

Tamanho físico

Este é o mesmo tamanho que o dispositivo de bloco subjacente. A VDO usa este armazenamento para:

  • Dados do usuário, que podem ser deduzidos e comprimidos
  • Metadados VDO, tais como o índice UDS
Tamanho físico disponível

Esta é a porção do tamanho físico que a VDO é capaz de usar para os dados do usuário

É equivalente ao tamanho físico menos o tamanho dos metadados, menos o restante após a divisão do volume em placas pelo tamanho da laje dada.

Tamanho lógico

Este é o tamanho provisionado que o volume VDO apresenta para as aplicações. Geralmente é maior do que o tamanho físico disponível. Se a opção --vdoLogicalSize não for especificada, então o provisionamento do volume lógico é agora provisionado para uma proporção de 1:1. Por exemplo, se um volume VDO for colocado em cima de um dispositivo de bloco de 20 GB, então 2,5 GB é reservado para o índice UDS (se o tamanho padrão do índice for usado). Os 17,5 GB restantes são fornecidos para os metadados e dados do usuário do VDO. Como resultado, o armazenamento disponível para consumo não é superior a 17,5 GB, e pode ser menor devido aos metadados que compõem o volume real do VDO.

A VDO suporta atualmente qualquer tamanho lógico até 254 vezes o tamanho do volume físico com um tamanho lógico máximo absoluto de 4PB.

Figura 2.1. Organização do disco VDO

VDO disk organization

Nesta figura, o alvo de armazenamento dedicado do VDO fica completamente em cima do dispositivo de bloco, o que significa que o tamanho físico do volume do VDO é o mesmo tamanho do dispositivo de bloco subjacente.

Recursos adicionais

2.1.2. Provisão fina em VDO

O VDO é um alvo de armazenamento em bloco com pouca provisão. A quantidade de espaço físico que um volume VDO utiliza pode ser diferente do tamanho do volume que é apresentado aos usuários do armazenamento. Você pode fazer uso desta disparidade para economizar nos custos de armazenamento.

Condições fora do espaço

Tome cuidado para evitar que o espaço de armazenamento fique inesperadamente esgotado, se os dados escritos não atingirem a taxa de otimização esperada.

Sempre que o número de blocos lógicos (armazenamento virtual) excede o número de blocos físicos (armazenamento real), torna-se possível que os sistemas de arquivos e aplicações fiquem sem espaço inesperado. Por esse motivo, os sistemas de armazenamento que utilizam VDO devem fornecer uma forma de monitorar o tamanho do pool livre no volume do VDO.

Você pode determinar o tamanho deste pool gratuito usando o utilitário vdostats. A saída padrão deste utilitário lista informações para todos os volumes VDO em execução em um formato similar ao utilitário Linux df. Por exemplo, o utilitário VDO:

Device                1K-blocks   Used        Available   Use%
/dev/mapper/vdo-name  211812352   105906176   105906176   50%

Quando a capacidade de armazenamento físico de um volume VDO está quase cheia, a VDO relata um aviso no registro do sistema, semelhante ao seguinte:

Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool vdo-name.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool vdo-name is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool vdo-name is now 96.07% full.
Nota

Estas mensagens de aviso aparecem somente quando o serviço lvm2-monitor está em funcionamento. Ele é ativado por padrão.

Como evitar condições fora do espaço

Se o tamanho da piscina livre cair abaixo de um certo nível, você pode tomar providências:

  • Eliminação de dados. Isto recupera espaço sempre que os dados excluídos não forem duplicados. A eliminação de dados libera o espaço somente depois que os descartes são emitidos.
  • Acréscimo de armazenamento físico
Importante

Monitore o espaço físico em seus volumes VDO para evitar situações fora do espaço. Ficar sem blocos físicos pode resultar na perda de dados escritos recentemente, não reconhecidos, sobre o volume do VDO.

Provisão fina e os comandos TRIM e DISCARD

Para se beneficiar da economia de armazenamento do provisionamento fino, a camada de armazenamento físico precisa saber quando os dados são apagados. Sistemas de arquivos que trabalham com armazenamento thinly provisioned enviam os comandos TRIM ou DISCARD para informar o sistema de armazenamento quando um bloco lógico não for mais necessário.

Vários métodos de envio dos comandos TRIM ou DISCARD estão disponíveis:

  • Com a opção de montagem discard, os sistemas de arquivo podem enviar estes comandos sempre que um bloco for excluído.
  • Você pode enviar os comandos de forma controlada, utilizando utilitários como fstrim. Estes utilitários dizem ao sistema de arquivos para detectar quais blocos lógicos não são utilizados e enviar as informações ao sistema de armazenamento na forma de um comando TRIM ou DISCARD.

A necessidade de utilizar TRIM ou DISCARD em blocos não utilizados não é exclusiva da VDO. Qualquer sistema de armazenamento com pouca provisão tem o mesmo desafio.

2.1.3. Monitoramento VDO

Este procedimento descreve como obter informações de uso e eficiência de um volume VDO.

Pré-requisitos

Procedimento

  • Use o utilitário vdostats para obter informações sobre um volume VDO:

    # vdostats --human-readable
    
    Device                   1K-blocks    Used     Available    Use%    Space saving%
    /dev/mapper/node1osd1    926.5G       21.0G    905.5G       2%      73%
    /dev/mapper/node1osd2    926.5G       28.2G    898.3G       3%      64%

Recursos adicionais

  • A página do homem vdostats(8).

2.1.4. Recuperação de espaço para VDO em sistemas de arquivo

Este procedimento recupera espaço de armazenamento em um volume VDO que hospeda um sistema de arquivo.

A VDO não pode recuperar espaço a menos que os sistemas de arquivo comuniquem que os blocos estão livres usando os comandos DISCARD, TRIM, ou UNMAP.

Procedimento

  • Se o sistema de arquivo em seu volume VDO suportar operações de descarte, ative-os. Ver Capítulo 5, Descartando blocos não utilizados.
  • Para sistemas de arquivo que não utilizam DISCARD, TRIM, ou UNMAP, você pode recuperar manualmente o espaço livre. Armazene um arquivo composto de zeros binários para preencher o espaço livre e depois exclua esse arquivo.

2.1.5. Recuperação de espaço para VDO sem sistema de arquivo

Este procedimento recupera espaço de armazenamento em um volume VDO que é usado como um alvo de armazenamento em bloco sem um sistema de arquivo.

Procedimento

  • Use o utilitário blkdiscard.

    Por exemplo, um único volume VDO pode ser esculpido em vários subvolumes, implantando LVM em cima dele. Antes de desprovisionar um volume lógico, use o utilitário blkdiscard para liberar o espaço usado anteriormente por aquele volume lógico.

    A LVM suporta o comando REQ_DISCARD e encaminha as solicitações para a VDO nos endereços de bloco lógico apropriados, a fim de liberar o espaço. Se você usar outros gerentes de volume, eles também precisam suportar REQ_DISCARD, ou equivalente, UNMAP para dispositivos SCSI ou TRIM para dispositivos ATA.

Recursos adicionais

  • A página do homem blkdiscard(8)

2.1.6. Recuperação de espaço para VDO em Fibre Channel ou rede Ethernet

Este procedimento recupera espaço de armazenamento em volumes VDO (ou porções de volumes) que são provisionados para hosts em um tecido de armazenamento Fibre Channel ou em uma rede Ethernet usando estruturas-alvo SCSI, como LIO ou SCST.

Procedimento

  • Os iniciadores SCSI podem usar o comando UNMAP para liberar espaço em alvos de armazenamento pouco provisionados, mas a estrutura de alvos SCSI precisa ser configurada para anunciar o suporte a este comando. Isso normalmente é feito viabilizando o provisionamento fino sobre esses volumes.

    Verifique o suporte para UNMAP em iniciadores SCSI baseados em Linux executando o seguinte comando:

    # sg_vpd --page=0xb0 /dev/device

    Na saída, verifique se o valor Maximum unmap LBA count é maior que zero.