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
- O VDO é instalado e implantado. Ver Capítulo 1, Implantação de VDO.
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 de1: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

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
- Para mais informações sobre a quantidade de metadados VDO de armazenamento necessária em dispositivos de bloco de diferentes tamanhos, consulte Seção 1.6.4, “Exemplos de requisitos VDO por tamanho físico”.
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.
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
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 comandoTRIM
ouDISCARD
.
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
- Instalar o software VDO. Ver Seção 1.7, “Instalando o VDO”.
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
, ouUNMAP
, 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 suportarREQ_DISCARD
, ou equivalente,UNMAP
para dispositivos SCSI ouTRIM
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.