Como criar um volume VDO em um dispositivo de armazenamento no RHEL 8
Introduzido pela RedHat no RHEL 7.5 e versões posteriores, VDO, abreviação de Virtual Date Optimizer, é uma tecnologia de virtualização de blocos que fornece desduplicação em linha e compactação de dados em nível de dispositivo de bloco.
A ideia da desduplicação é bastante simples: remover cópias de dados duplicados e ficar apenas com uma cópia. Quando um arquivo idêntico é adicionado em um dispositivo de bloco, ele é marcado como duplicado e o arquivo original é referenciado. Ao fazer isso, o VDO ajuda a economizar espaço no volume de blocos.
Neste tutorial, você aprenderá como criar um volume VDO em um dispositivo de armazenamento no sistema RHEL 8.
Etapa 1: Instale o VDO no RHEL 8
Para começar, faça login em seu servidor e atualize seu RHEL usando o comando dnf.
sudo dnf update -y
Após a conclusão da atualização dos pacotes e do kernel, prossiga e instale os módulos e dependências do kernel VDO usando o comando.
sudo dnf install kmod-kvdo vdo
- vdo – Este é um conjunto de ferramentas de gerenciamento para Virtual Data Optimizer.
- kmod-kvdo – Este é um grupo de módulos de kernel para Virtual Data Optimizer.
Após a instalação bem-sucedida, inicie, ative e verifique o daemon vdo.
sudo systemctl start vdo
sudo systemctl enable vdo
sudo systemctl status vdo
Etapa 2: Crie um volume VDO no RHEL 8
Antes de criar um volume vdo, certifique-se de ter um disco rígido adicional em seu sistema. Neste tutorial, anexamos um volume adicional xvdb
. Isso pode ser demonstrado executando o comando lsblk abaixo.
lsblk
Na saída, você pode ver claramente que o segundo disco tem capacidade de 100 GB.
Agora, criaremos um volume VDO vazio no disco /dev/xvdb
.
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
Você encontrará o erro mostrado.
Este é um bug comum e a solução alternativa é simplesmente reiniciar o servidor.
sudo reboot
Na segunda tentativa, o comando será executado, criando um volume VDO vazio no dispositivo /dev/xvdb
.
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
Vamos analisar o comando e dar uma olhada na opção usada:
- create – Inicia a criação do volume VDO.
- –name=vdo1 – Isso dá ao volume um rótulo conhecido como vdo1. Sinta-se à vontade para atribuir qualquer nome de sua escolha.
- –device=/dev/xvdb – A opção de dispositivo especifica o disco no qual o volume será criado.
- –vdoLogicalSize=300G – Indica a capacidade de volume efetiva a ser usada pelo sistema operacional, neste caso, 300G.
Etapa 3: sondando o novo volume VDO
O novo volume VDO foi criado em /dev/mapper/vdo1
seguindo a saída que vimos na etapa anterior. Podemos usar o comando ls conforme mostrado para investigar permissões e propriedade de arquivos.
ls -l /dev/mapper/vdo1
Para obter informações mais detalhadas, use o comando vdostats para recuperar estatísticas sobre o tamanho e o uso do volume.
vdostats --hu
O sinalizador --hu
exibe as informações em um formato legível por humanos, ou seja, um formato que é muito mais fácil de ler e decifrar com facilidade. Podemos visualizar atributos como o nome do dispositivo, o tamanho do disco adicional, o espaço usado e o espaço disponível como o uso de %
.
Observe atentamente que a economia de %
está indicada como Não Aplicável (N/A).
Além disso, observe que já temos algum uso de volume 4.1G, o que se traduz em 4%, mas ainda não escrevemos nada sobre o volume. Por que é que? Isso ocorre porque a desduplicação universal já foi gravada no disco e é o que torna possível a desduplicação.
O comando vdostats pode ser usado com o sinalizador --verbose
para recuperar informações mais detalhadas, conforme mostrado:
sudo vdostats --verbose /dev/mapper/vdo1 | grep -B6 ‘saving percent’
O que você pode ver são basicamente os mesmos dados do exemplo anterior, mas em um formato diferente.
Etapa 4: particionar o volume VDO
Depois de obter insights suficientes do volume, precisamos particioná-lo e posteriormente criar um sistema de arquivos para que possa ser usado como um disco normal.
Vamos criar um volume físico e um grupo de volumes conforme mostrado, execute os seguintes comandos.
sudo pvcreate /dev/mapper/vdo1
sudo vgcreate vdo1vg /dev/mapper/vdo1
Para exibir as estatísticas da execução do grupo de volumes:
sudo vgdisplay vdo1vg
Agora, criaremos 2 volumes lógicos de tamanhos iguais, cada um com capacidade de 50G.
sudo lvcreate -n vdo1v01 -L 50G vdo1vg
sudo lvcreate -n vdo1v02 -L 50G vdo1vg
Posteriormente, você poderá visualizar as estatísticas dos volumes recém-criados executando o comando.
sudo lvs
Etapa 4: formatação e montagem de sistemas de arquivos
Normalmente, quando um sistema de arquivos é criado, uma operação de corte é realizada no dispositivo. Isto é indesejável no caso do VDO. Ao formatar usando o comando mkfs, use a opção -K
para instruir o comando a não descartar blocos durante a criação do sistema de arquivos.
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v01
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v02
Se você estiver usando o sistema de arquivos EXT$, use a opção “-E nodiscard”.
Crie os pontos de montagem para montar os volumes:
sudo mkdir /data/v01
sudo mkdir /data/v02
Agora monte os sistemas de arquivos em seus pontos de montagem conforme mostrado.
sudo mount -o discard /dev/vdo1vg/vdo1v01 /data/v01
sudo mount -o discard /dev/vdo1vg/vdo1v02 /data/v02
Agora, ao inspecionar o volume VDO, você notará que a economia de %
mudou para 99%, o que é bastante impressionante. Isso implica que a desduplicação está funcionando conforme o esperado.
sudo vdostats --hu
Você pode investigar mais detalhadamente usando o comando df -Th. Na seção inferior, você verá os sistemas de arquivos montados em /data/v01
e /data/v02
respectivamente.
df -hT
Neste tutorial, demonstramos como você pode criar um volume VDO a partir de um dispositivo de armazenamento adicional no RHEL 8. Posteriormente, demonstramos como você pode criar mais volumes e sistemas de arquivos a partir desses volumes.