Configurar volumes de provisionamento dinâmico no gerenciamento de volumes lógicos (LVM) - Parte IV
O gerenciamento de volume lógico possui ótimos recursos, como snapshots e thin provisioning. Anteriormente na (Parte – III) vimos como fazer um snapshot do volume lógico. Aqui neste artigo, veremos como configurar volumes de provisionamento thin no LVM.
O que é provisionamento dinâmico?
Thin Provisioning é usado no lvm para criar discos virtuais dentro de um thin pool. Vamos supor que eu tenha uma capacidade de armazenamento de 15 GB em meu servidor. Já tenho 2 clientes com 5 GB de armazenamento cada. Você é o terceiro cliente e solicitou 5 GB de armazenamento. Naquela época, costumávamos fornecer 5 GB completos (volume espesso), mas você pode usar 2 GB desses 5 GB de armazenamento e 3 GB serão gratuitos, que você poderá preencher mais tarde.
Mas o que fazemos no provisionamento thin é definir um pool thin dentro de um dos grandes grupos de volumes e definir os volumes thin dentro desse pool thin. Assim, todos os arquivos que você escrever serão armazenados e seu armazenamento será mostrado como 5 GB. Mas os 5 GB completos não alocarão o disco inteiro. O mesmo processo será feito para outros clientes também. Como eu disse, existem 2 clientes e você é meu terceiro cliente.
Então, vamos supor quanto GB total atribuí aos clientes? Totalmente 15GB já foi concluído, se alguém vier até mim e pedir 5GB posso dar? A resposta é “Sim“, aqui no thin Provisioning posso dar 5GB para o 4º Cliente mesmo tendo atribuído 15GB.
Aviso: A partir de 15GB, se estivermos provisionando mais de 15GB isso é chamado de Over Provisioning.
Como funciona? e Como fornecemos armazenamento a novos Clientes?
Forneci 5 GB, mas você pode usar apenas 2 GB e outros 3 GB serão gratuitos. No Thick Provisioning não podemos fazer isso, porque ele primeiro alocará todo o espaço.
No provisionamento thin, se eu estiver definindo 5 GB para você, ele não alocará todo o espaço em disco ao definir um volume, ele crescerá até 5 GB de acordo com a gravação de seus dados. Espero que você tenha conseguido! assim como você, outros clientes também não usarão os volumes completos, então haverá uma chance de adicionar 5 GB a um novo cliente. Isso é chamado de Provisionamento.
Mas é obrigatório monitorar todo e qualquer crescimento de volume, caso contrário, acabará em um desastre. Embora o provisionamento excessivo seja feito se todos os 4 clientes gravarem mal os dados no disco, você poderá enfrentar um problema porque ele preencherá seus 15 GB e transbordará para reduzir os volumes.
Requisitos
- Crie armazenamento em disco com LVM no Linux – PARTE 1
- Como estender/reduzir LVMs no Linux – Parte II
- Como criar/restaurar instantâneo de volume lógico no LVM – Parte III
Configuração do meu servidor
- Sistema operacional – CentOS 6.5 com instalação LVM
- IP do servidor – 192.168.0.200
Etapa 1: Configurar Thin Pool e Volumes
Vamos fazer de forma prática como configurar o pool fino e os volumes finos. Primeiro, precisamos de um grupo de volume grande. Aqui estou criando um grupo Volume com 15GB para fins de demonstração. Agora, liste o grupo de volumes usando o comando abaixo.
vgcreate -s 32M vg_thin /dev/sdb1
Em seguida, verifique o tamanho da disponibilidade do volume lógico antes de criar o thin pool e os volumes.
vgs
lvs
Podemos ver que há apenas volumes lógicos padrão para o sistema de arquivos e a troca está presente na saída lvs acima.
Criando um pool fino
Para criar um pool fino de 15 GB no grupo de volumes (vg_thin) use o comando a seguir.
lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
- -L – Tamanho do grupo de volumes
- –thinpool – Para criar um thinpool
- tp_tecmint_pool – Nome do pool fino
- vg_thin – Nome do grupo de volumes onde precisamos criar o pool
Para obter mais detalhes podemos usar o comando ‘lvdisplay’.
lvdisplay vg_thin/tp_tecmint_pool
Aqui não criamos volumes finos virtuais neste pool fino. Na imagem podemos ver os dados do pool alocado mostrando 0,00%.
Criando volumes finos
Agora podemos definir volumes finos dentro do pool fino com a ajuda do comando ‘lvcreate’ com a opção -V (Virtual).
lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool
Eu criei um volume virtual Thin com o nome thin_vol_client1 dentro do tp_tecmint_pool no meu grupo de volumes vg_thin. Agora, liste os volumes lógicos usando o comando abaixo.
lvs
Agora mesmo, criamos o volume fino acima, é por isso que não há dados mostrando, ou seja, 0,00%M.
Tudo bem, deixe-me criar mais 2 volumes Thin para outros 2 clientes. Aqui você pode ver que há 3 volumes thin criados no pool (tp_tecmint_pool). Então, a partir deste ponto, soubemos que usei todo o pool de 15 GB.
Criando sistema de arquivos
Agora, crie pontos de montagem e monte esses três volumes finos e copie alguns arquivos neles usando os comandos abaixo.
mkdir -p /mnt/client1 /mnt/client2 /mnt/client3
Liste os diretórios criados.
ls -l /mnt/
Crie o sistema de arquivos para esses volumes finos criados usando o comando ‘mkfs’.
mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3
Monte todos os três volumes de cliente no ponto de montagem criado usando o comando ‘mount’.
mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/
Liste os pontos de montagem usando o comando ‘df’.
df -h
Aqui, podemos ver que todos os 3 volumes de clientes estão montados e, portanto, apenas 3% dos dados são usados em todos os volumes de clientes. Então, vamos adicionar mais alguns arquivos a todos os três pontos de montagem da minha área de trabalho para preencher algum espaço.
Agora liste o ponto de montagem e veja o espaço usado em cada volume fino e liste o pool fino para ver o tamanho usado no pool.
df -h
lvdisplay vg_thin/tp_tecmint_pool
O comando acima mostra os três pontos de montagem junto com seus tamanhos em porcentagem.
13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3
Ao olhar para o thin-pool, podemos ver que apenas 30% dos dados estão totalmente gravados. Este é o total dos volumes virtuais de três clientes acima.
Sobre-aprovisionamento
Agora o quarto cliente veio até mim e pediu 5GB de espaço de armazenamento. Posso dar? Porque eu já havia dado Pool de 15GB para 3 clientes. É possível dar 5GB a mais para outro cliente? Sim, é possível dar. É quando usamos Over Provisioning, o que significa dar mais espaço do que o que tenho.
Deixe-me criar 5 GB para o 4º cliente e verificar o tamanho.
lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
lvs
Tenho apenas 15 GB de tamanho no pool, mas criei 4 volumes dentro do thin-pool de até 20 GB. Se todos os quatro clientes começarem a gravar dados em seus volumes para acelerar o ritmo, nesse momento enfrentaremos uma situação crítica; caso contrário, não haverá problema.
Agora eu criei o sistema de arquivos em thin_vol_client4, depois montei em /mnt/client4 e copiei alguns arquivos nele.
lvs
Podemos ver na imagem acima que o tamanho total usado no cliente recém-criado 4 é de até 89,34% e o tamanho do thin pool é de 59,19% usado. Se todos esses usuários não estiverem escrevendo mal no volume, ele estará livre de overflow, drop. Para evitar o estouro, precisamos estender o tamanho do thin-pool.
Importante: Thin-pools são apenas um volume lógico, então se precisarmos estender o tamanho do thin-pool podemos usar o mesmo comando que usamos para volumes lógicos se estendem, mas não podemos reduzir o tamanho do thin-pool.
lvextend
Aqui podemos ver como estender o thin-pool lógico (tp_tecmint_pool).
lvextend -L +15G /dev/vg_thin/tp_tecmint_pool
A seguir, liste o tamanho do pool fino.
lvs
Anteriormente, nosso tamanho de tp_tecmint_pool era de 15 GB e 4 volumes finos que ultrapassavam o provisionamento em 20 GB. Agora ele foi estendido para 30 GB, de modo que nosso provisionamento excessivo foi normalizado e os volumes finos estão livres de estouro e queda. Dessa forma, você pode adicionar cada vez mais volumes finos ao pool.
Aqui, vimos como criar um thin-pool usando um tamanho grande de grupo de volumes e criar thin-volumes dentro de um thin-pool usando over-provisioning e estendendo o pool. No próximo artigo veremos como configurar um Striping lvm.