Red Hat Training

A Red Hat training course is available for RHEL 8

68.9.2. Criação de volumes lógicos pouco previsíveis

Este procedimento fornece uma visão geral dos comandos básicos que você usa para criar e crescer volumes lógicos pouco previsíveis. Para informações detalhadas sobre o provisionamento de LVM thin provisioning, bem como informações sobre o uso dos comandos e utilitários LVM com volumes lógicos thinly-provisioned, consulte a página de manual lvmthin(7).

Para criar um volume fino, execute as seguintes tarefas:

  1. Criar um grupo de volume com o comando vgcreate.
  2. Criar um pool fino com o comando lvcreate.
  3. Crie um volume fino no pool fino com o comando lvcreate.

Você pode usar a opção -T (ou --thin) do comando lvcreate para criar um pool fino ou um volume fino. Você também pode usar a opção -T do comando lvcreate para criar tanto um thin pool quanto um volume thin nesse pool ao mesmo tempo com um único comando.

O seguinte comando usa a opção -T do comando lvcreate para criar um pool fino chamado mythinpool no grupo de volume vg001 e que tem um tamanho de 100M. Note que, como você está criando um pool de espaço físico, você deve especificar o tamanho do pool. A opção -T do comando lvcreate não aceita um argumento; ela deduz o tipo de dispositivo a ser criado das outras opções que o comando especifica.

# lvcreate -L 100M -T vg001/mythinpool
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

O seguinte comando usa a opção -T do comando lvcreate para criar um volume fino chamado thinvolume no pool fino vg001/mythinpool. Note que neste caso você está especificando um tamanho virtual, e que você está especificando um tamanho virtual para o volume que é maior do que o do pool que o contém.

# lvcreate -V 1G -T vg001/mythinpool -n thinvolume
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV          VG       Attr     LSize   Pool       Origin Data%  Move Log Copy%  Convert
  mythinpool  vg001    twi-a-tz 100.00m                     0.00
  thinvolume  vg001    Vwi-a-tz   1.00g mythinpool          0.00

O seguinte comando usa a opção -T do comando lvcreate para criar um pool fino e um volume fino nesse pool, especificando tanto um argumento de tamanho como um argumento de tamanho virtual para o comando lvcreate. Este comando cria um thin pool chamado mythinpool no grupo de volume vg001 e também cria um thin volume chamado thinvolume nesse pool.

# lvcreate -L 100M -T vg001/mythinpool -V 1G -n thinvolume
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of thin pool vg001/mythinpool (100.00 MiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume "thinvolume" created.
# lvs
  LV         VG    Attr       LSize   Pool       Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-aotz-- 100.00m                   0.00   10.94
  thinvolume vg001 Vwi-a-tz--   1.00g mythinpool        0.00

Você também pode criar um pool fino especificando o parâmetro --thinpool do comando lvcreate. Ao contrário da opção -T, o parâmetro --thinpool requer um argumento, que é o nome do volume lógico do thin pool que você está criando. O exemplo a seguir especifica o parâmetro --thinpool do comando lvcreate para criar um thin pool chamado mythinpool no grupo de volume vg001 e que tem um tamanho de 100M:

# lvcreate -L 100M --thinpool mythinpool vg001
  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  Logical volume "mythinpool" created.
# lvs
  LV         VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mythinpool vg001 twi-a-tz-- 100.00m             0.00   10.84

Use os seguintes critérios para utilizar o tamanho do pedaço:

  • Um pedaço menor requer mais metadados e dificulta o desempenho, mas proporciona uma melhor utilização do espaço com instantâneos.
  • Um pedaço maior requer menos manipulação de metadados, mas torna o instantâneo menos eficiente em termos de espaço.

Por padrão, lvm2 começa com um pedaço de tamanho 64KiB e aumenta seu valor quando o tamanho resultante do dispositivo de metadados do pool fino cresce acima de 128MiB, isto mantém o tamanho dos metadados compacto. No entanto, isto pode resultar em alguns valores de tamanho de pedaços grandes, que são menos eficientes em termos de espaço para o uso de instantâneos. Nesses casos, um pedaço menor e um tamanho maior de metadados é uma opção melhor.

Se o tamanho dos dados de volume estiver na faixa de TiB, use ~15,8GiB como o tamanho dos metadados, que é o tamanho máximo suportado, e defina o tamanho do pedaço de acordo com sua necessidade. Mas, note que não é possível aumentar o tamanho dos metadados se você precisar ampliar o tamanho dos dados do volume e ter um pequeno pedaço de tamanho.

Atenção

A Red Hat não recomenda definir um pedaço de tamanho menor do que o valor padrão. Se o tamanho do pedaço for muito pequeno e seu volume ficar sem espaço para metadados, o volume é incapaz de criar dados. Monitore seus volumes lógicos para garantir que eles sejam expandidos, ou crie mais armazenamento antes que os volumes dos metadados fiquem completamente cheios. Assegure-se de configurar seu pool fino com um pedaço suficientemente grande para que não fiquem sem espaço para os metadados.

O Striping é apoiado para a criação de pools. O seguinte comando cria um pool fino de 100M chamado pool no grupo de volume vg001 com duas faixas de 64 kB e um pedaço de 256 kB. Ele também cria um volume fino de 1T, vg00/thin_lv.

# lvcreate -i 2 -I 64 -c 256 -L 100M -T vg00/pool -V 1T --name thin_lv

Você pode ampliar o tamanho de um volume fino com o comando lvextend. Você não pode, entretanto, reduzir o tamanho de uma piscina fina.

O seguinte comando redimensiona uma piscina fina existente de 100M de tamanho, ampliando-a com mais 100M.

# lvextend -L+100M vg001/mythinpool
  Extending logical volume mythinpool to 200.00 MiB
  Logical volume mythinpool successfully resized
# lvs
  LV           VG       Attr     LSize   Pool     Origin Data%  Move Log Copy%  Convert
  mythinpool   vg001    twi-a-tz 200.00m                   0.00
  thinvolume   vg001    Vwi-a-tz   1.00g mythinpool          0.00

Como com outros tipos de volumes lógicos, você pode renomear o volume com o lvrename, pode remover o volume com o lvremove, e pode exibir informações sobre o volume com os comandos lvs e lvdisplay.

By default, the lvcreate command sets the size of the thin pool’s metadata logical volume according to the formula (Pool_LV_size / Pool_LV_chunk_size * 64). If you will have large numbers of snapshots or if you have have small chunk sizes for your thin pool and thus expect significant growth of the size of the thin pool at a later time, you may need to increase the default value of the thin pool’s metadata volume with the --poolmetadatasize parameter of the lvcreate command. The supported value for the thin pool’s metadata logical volume is in the range between 2MiB and 16GiB.

Você pode usar o parâmetro --thinpool do comando lvconvert para converter um volume lógico existente em um volume de pool fino. Ao converter um volume lógico existente para um volume de thin pool, você deve usar o parâmetro --poolmetadata em conjunto com o parâmetro --thinpool do lvconvert para converter um volume lógico existente para o volume de metadados do thin pool.

Nota

A conversão de um volume lógico em um volume de pool fino ou um volume de metadados de pool fino destrói o conteúdo do volume lógico, já que neste caso o lvconvert não preserva o conteúdo dos dispositivos, mas, em vez disso, sobrescreve o conteúdo.

O exemplo a seguir converte o volume lógico existente lv1 no grupo de volume vg001 para um volume de pool fino e converte o volume lógico existente lv2 no grupo de volume vg001 para o volume de metadados para esse volume de pool fino.

# lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
  Converted vg001/lv1 to thin pool.