Pesquisa de site

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

  1. Crie armazenamento em disco com LVM no Linux – PARTE 1
  2. Como estender/reduzir LVMs no Linux – Parte II
  3. Como criar/restaurar instantâneo de volume lógico no LVM – Parte III
Configuração do meu servidor
  1. Sistema operacional – CentOS 6.5 com instalação LVM
  2. 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
  1. -L – Tamanho do grupo de volumes
  2. –thinpool – Para criar um thinpool
  3. tp_tecmint_pool – Nome do pool fino
  4. 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.