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:
-
Criar um grupo de volume com o comando
vgcreate
. -
Criar um pool fino com o comando
lvcreate
. -
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.
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.
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.