Como instalar Stratis para gerenciar armazenamento local em camadas no RHEL 8
Stratis é um dos novos recursos fornecidos com a distribuição do RHEL 8. Stratis é uma solução de gerenciamento de armazenamento local que se concentra na simplicidade e na usabilidade aprimorada, ao mesmo tempo que fornece acesso a recursos avançados de armazenamento. Ele usa o sistema de arquivos XFS e concede acesso a recursos avançados de armazenamento, como:
- Provisionamento fino
- Instantâneos do sistema de arquivos
- Camadas
- Gerenciamento baseado em pool
- Monitoramento
Basicamente, Stratis é um pool de armazenamento criado a partir de um ou mais discos locais ou partições de disco. Stratis ajuda um administrador de sistema a configurar e gerenciar configurações de armazenamento complexas.
Antes de prosseguirmos, vamos dar uma olhada em alguns dos termos técnicos que você certamente encontrará à medida que avançamos:
- pool: Um pool é composto por um ou mais dispositivos de bloco. O tamanho total do pool é igual à soma total dos dispositivos de bloco.
- blockdev: Como você deve ter adivinhado, isso se refere a dispositivos de bloco, como partições de disco.
- Sistema de arquivos: Um sistema de arquivos é uma camada finamente provisionada que não tem um tamanho total fixo. O tamanho real do sistema de arquivos aumenta à medida que os dados são adicionados. O Stratis aumenta automaticamente o tamanho do sistema de arquivos à medida que o tamanho dos dados se aproxima do tamanho virtual do sistema de arquivos.
Os dispositivos de bloco que você pode usar com Stratis incluem:
- Volumes Lógicos LVM
- LUCAS
- SSDs (unidades de estado sólido)
- Multicaminho do mapeador de dispositivos
- iSCSI
- HDDs (unidades de disco rígido)
- mdraid
- Dispositivos de armazenamento NVMe
Componentes de software do Stratis
Stratis fornece 2 utilitários de software:
- Stratis-cli: Esta é a ferramenta de linha de comando que acompanha o Stratis.
- Daemon Stratisd: Este é um daemon que cria e gerencia dispositivos de bloco e desempenha um papel no fornecimento de uma API DBUS.
Como instalar o Stratis no RHEL 8
Tendo visto o que é Stratis e definido algumas terminologias. Vamos agora instalar e configurar o Stratis na distribuição RHEL 8 (também funciona no CentOS 8).
Instale Stratis no RHEL 8
Vamos ver como você pode instalar o Stratis em seu sistema RHEL 8, faça login como usuário root e execute o comando.
dnf install stratisd stratis-cli
Para encontrar mais informações sobre os pacotes instalados, execute o comando.
rpm -qi stratisd stratis-cli
Após a instalação bem-sucedida do Stratis, inicie o serviço executando o comando.
systemctl enable --now stratisd
Para verificar o status do Stratis, execute o comando.
systemctl status stratisd
Crie um pool Stratis
Para criar um pool Stratis você precisa de dispositivos de bloco que não estejam em uso ou montados. Além disso, presume-se que o serviço Stratisd esteja instalado e funcionando. Além disso, os dispositivos de bloco que você usará precisam ter pelo menos 1 GB de tamanho.
Em nosso sistema RHEL 8, temos quatro dispositivos de bloco adicionais: /dev/xvdb
, /dev/xvdc
, /dev/ xvdd
, /dev/xvde
. Para exibir os dispositivos de bloco, execute o comando lsblk.
lsblk
Nenhum desses dispositivos de bloco deve ter uma tabela de partições. Você pode confirmar isso usando o comando.
blkid -p /dev/xvdb
Se você não obtiver saída, significa que seus dispositivos de bloco não possuem nenhuma tabela de partição residente neles. No entanto, caso exista uma tabela de partição, você pode apagá-la usando o comando:
wipefs -a /<device-path>
Crie um pool Stratis a partir de um dispositivo de bloco
Você pode criar um pool Stratis a partir de um dispositivo de bloco único usando a sintaxe.
stratis pool create <pool-name> <block-device>
Por exemplo, para criar um pool de /dev/xvdb
execute o comando.
stratis pool create my_pool_1 /dev/xvdb
Para confirmar a execução do pool criado.
stratis pool list
Crie um pool Stratis a partir de vários dispositivos de bloco
Para criar um pool de vários dispositivos, use a sintaxe abaixo listando todos os dispositivos em uma linha.
stratis pool create <pool_name> device-1 device-2 device-n
Para criar um pool de /dev/xvdc
, /dev/xvdd
e /dev/xvde
execute o comando.
stratis pool create my_pool_2 /dev/xvdc /dev/xvdd/ /dev/xvde
Mais uma vez, liste os pools disponíveis usando o comando.
stratis pool list
Neste ponto, você deve ter dois pools: my_pool_1 e my_pool_2.
Como você pode ver acima, o espaço no disco rígido ocupado pelo pool my_pool_2 é três vezes maior que o do primeiro pool que criamos a partir de apenas um dispositivo de bloco com memória de 10GB.
Crie um sistema de arquivos a partir de um pool
Depois de criar seu sistema de arquivos, você pode criar um sistema de arquivos a partir de um dos pools usando a sintaxe.
stratis fs create <poolname> <filesystemname>
Por exemplo, para criar filesystem-1 e filesystem-2 a partir de my_pool_1 e my_pool_2, respectivamente, execute os comandos:
stratis fs create my_pool_1 filesystem-1
stratis fs create my_pool_2 filesystem-2
Para visualizar os sistemas de arquivos recém-criados, execute o comando.
stratis fs list
Para restringir os resultados de um sistema de arquivos a um pool, execute o comando:
stratis fs list <poolname>
Por exemplo, para verificar o sistema de arquivos em my_pool_2 execute o comando.
stratis fs list my_pool_2
Agora, se você executar o comando lsblk, a saída deverá ser um pouco semelhante ao exemplo de saída abaixo.
lsblk
Montando um sistema de arquivos Stratis
Agora vamos montar os sistemas de arquivos existentes para acessá-los. Primeiro, crie os pontos de montagem.
Para o sistema de arquivos no primeiro pool, execute o comando:
mkdir /data
mount /stratis/my_pool_1/filesystem-1 /data
Para o segundo sistema de arquivos no segundo pool, execute o comando.
mkdir /block
mount /stratis/my_pool_2/filesystem-2 /block
Para verificar a existência dos pontos de montagem atuais, execute o comando df:
df -Th | grep stratis
Perfeito! Podemos ver claramente que nossos pontos de montagem estão presentes.
Monte sistemas de arquivos Stratis persistentemente
Os pontos de montagem que acabamos de criar não podem sobreviver a uma reinicialização. Para torná-los persistentes, primeiro obtenha o UUID de cada um dos sistemas de arquivos:
blkid -p /stratis/my_pool_1/filesystem-1
blkid -p /stratis/my_pool_2/filesystem-2
Agora prossiga e copie as opções do UUID e do ponto de montagem para /etc/fstab conforme mostrado.
echo "UUID=c632dcf5-3e23-46c8-82b6-b06a4cc9d6a7 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
echo "UUID=b485ce80-be18-4a06-8631-925132bbfd78 /block xfs defaults 0 0" | sudo tee -a /etc/fstab
Para o sistema registrar a nova configuração execute o comando:
systemctl daemon-reload
Para verificar se a configuração funciona conforme o esperado, monte os sistemas de arquivos.
mount /data
mount /block
Removendo um sistema de arquivos Stratis
Para remover um sistema de arquivos, primeiro você precisa desmontar o sistema de arquivos conforme mostrado.
umount /mount-point
Neste caso teremos.
umount /data
Para destruir o sistema de arquivos, use a sintaxe:
stratis filesystem destroy <poolname> <filesystem-name>
Então, teremos:
stratis filesystem destroy my_pool_1 filesystem-1
Para confirmar a remoção do sistema de arquivos, emita o comando.
stratis filesystem list my_pool_1
Na saída, podemos ver claramente que o sistema de arquivos associado a my_pool_1 foi excluído.
Adicionando um disco a um pool Stratis existente
Você pode adicionar um disco a um pool existente usando o comando:
stratis pool add-data <poolname> /<devicepath>
Por exemplo, para adicionar um disco adicional /dev/xvdf
, em my_pool_1, execute o comando:
stratis pool add-data my_pool_1 /dev/xvdf
Observe que o tamanho de my_pool_1 dobrou de tamanho após adicionar o volume extra.
Crie instantâneos Stratis
Um instantâneo é uma leitura e gravação de uma cópia de um sistema de arquivos em um determinado momento.
Para criar um instantâneo, execute o comando:
stratis fs snapshot <poolname> <fsname> <snapshotname>
Neste caso o comando será:
stratis fs snapshot my_pool_2 filesystem-2 mysnapshot
Você pode anexar o atributo de dados -$ (data +%Y-%m-%d)
ao instantâneo e adicionar a tag de data conforme mostrado na captura de tela abaixo.
Para verificar a criação do snapshot, execute o comando:
stratis filesystem list <poolname>
Neste caso o comando será:
stratis filesystem list my_pool_2
Revertendo para um instantâneo anterior usando um sistema de arquivos
Para reverter um sistema de arquivos Stratis para um snapshot criado anteriormente, primeiro desmonte e destrua o sistema de arquivos original.
umount /stratis/<poolname>/filesystem
Em nosso cenário, isso será.
umount /stratis/my_pool_2/filesystem-2
Em seguida, crie uma cópia do snapshot usando o sistema de arquivos original:
stratis filesystem snapshot <poolname> filesystem-snapshot filesystem
O comando será:
stratis filesystem snapshot my_pool_2 mysnapshot-2019-10-24 block
Finalmente, monte o instantâneo.
mount /stratis/my-pool/my-fs mount-point
Removendo um instantâneo do Stratis
Para remover o instantâneo, primeiro desmonte o instantâneo.
unmount /stratis/my_pool_2/mysnapshot-2019-10-24
Em seguida, prossiga e destrua o instantâneo:
stratis filesystem destroy my_pool_2 mysnapshot-2019-10-24
Removendo uma piscina Stratis
Para remover um pool Stratis, siga as etapas simples abaixo.
1. Liste os sistemas de arquivos que existem no pool.
stratis filesystem list <poolname>
2. Em seguida, desmonte todos os sistemas de arquivos do pool.
umount /stratis//filesystem-1
umount /stratis//filesystem-2
umount /stratis//filesystem-3
3. Destrua os sistemas de arquivos.
stratis filesystem destroy <poolname> fs-1 fs-2
4. E então, livre-se da piscina.
stratis pool destroy poolname
Neste caso, a sintaxe será.
stratis pool destroy my_pool_2
Você pode verificar a lista de pools novamente.
stratis pool list
Finalmente, remova as entradas em /etc/fstab para os sistemas de arquivos.
Chegamos ao final do guia. Neste tutorial, esclarecemos como você pode instalar e usar o Stratis para gerenciar o armazenamento local em camadas no RHEL. Esperamos que você tenha achado útil. Experimente e conte-nos como foi.