Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 17. Controle da alocação da LVM

Por padrão, um grupo de volume aloca extensões físicas de acordo com regras de senso comum, tais como não colocar faixas paralelas no mesmo volume físico. Esta é a política de alocação do normal. Você pode usar o argumento --alloc do comando vgcreate para especificar uma política de alocação de contiguous, anywhere, ou cling. Em geral, as políticas de alocação que não normal são necessárias somente em casos especiais onde é necessário especificar uma alocação de extensão incomum ou não padronizada.

17.1. Políticas de alocação da LVM

Quando uma operação LVM precisa alocar extensões físicas para um ou mais volumes lógicos, a alocação procede da seguinte forma:

  • O conjunto completo de extensões físicas não alocadas no grupo de volume é gerado para consideração. Se você fornecer qualquer faixa de extensões físicas no final da linha de comando, somente extensões físicas não alocadas dentro dessas faixas nos volumes físicos especificados são consideradas.
  • Cada política de alocação é tentada por sua vez, começando com a política mais rigorosa (contiguous) e terminando com a política de alocação especificada usando a opção --alloc ou definida como padrão para o volume ou grupo de volume lógico particular. Para cada política, trabalhando a partir da extensão lógica mais baixa do espaço de volume lógico vazio que precisa ser preenchido, é alocado o máximo de espaço possível, de acordo com as restrições impostas pela política de alocação. Se for necessário mais espaço, a LVM passa para a política seguinte.

As restrições da política de alocação são as seguintes:

  • Uma política de alocação do contiguous requer que a localização física de qualquer extensão lógica que não seja a primeira extensão lógica de um volume lógico seja adjacente à localização física da extensão lógica imediatamente anterior a ela.

    Quando um volume lógico é listrado ou espelhado, a restrição de alocação contiguous é aplicada independentemente a cada listra ou imagem de espelho (perna) que necessita de espaço.

  • Uma política de alocação do cling exige que o volume físico usado para qualquer extensão lógica seja adicionado a um volume lógico existente que já esteja em uso pelo menos uma extensão lógica mais cedo nesse volume lógico. Se o parâmetro de configuração allocation/cling_tag_list for definido, então dois volumes físicos são considerados iguais se alguma das tags listadas estiver presente em ambos os volumes físicos. Isto permite que grupos de volumes físicos com propriedades similares (como sua localização física) sejam etiquetados e tratados como equivalentes para fins de alocação.

    Quando um volume lógico é listrado ou espelhado, a restrição de alocação cling é aplicada independentemente a cada listra ou imagem de espelho (perna) que necessita de espaço.

  • Uma política de alocação do normal não escolherá uma extensão física que compartilhe o mesmo volume físico que uma extensão lógica já alocada a um volume lógico paralelo (ou seja, uma faixa ou imagem/perna espelhada diferente) com o mesmo offset dentro desse volume lógico paralelo.

    Ao alocar um registro espelho ao mesmo tempo que os volumes lógicos para armazenar os dados espelho, uma política de alocação do normal tentará primeiro selecionar diferentes volumes físicos para o registro e os dados. Se isso não for possível e o parâmetro de configuração allocation/mirror_logs_require_separate_pvs for definido como 0, ele então permitirá que o log compartilhe volume(s) físico(s) com parte dos dados.

    Da mesma forma, ao alocar metadados do thin pool, uma política de alocação de normal seguirá as mesmas considerações que para a alocação de um registro espelho, com base no valor do parâmetro de configuração allocation/thin_pool_metadata_require_separate_pvs.

  • Se houver extensões livres suficientes para satisfazer um pedido de alocação, mas uma política de alocação normal não as utilizaria, a política de alocação anywhere irá, mesmo que isso reduza o desempenho, colocando duas faixas no mesmo volume físico.

As políticas de alocação podem ser alteradas usando o comando vgchange.

Nota

Se você confiar em qualquer comportamento de layout além daquele documentado nesta seção de acordo com as políticas de alocação definidas, você deve observar que isto pode mudar em versões futuras do código. Por exemplo, se você fornecer na linha de comando dois volumes físicos vazios que tenham um número idêntico de extensões físicas livres disponíveis para alocação, a LVM atualmente considera usar cada um deles na ordem em que estão listados; não há garantia de que futuras liberações manterão essa propriedade. Se for importante obter um layout específico para um determinado volume lógico, então você deve construí-lo através de uma seqüência de etapas de lvcreate e lvconvert, de modo que as políticas de alocação aplicadas a cada etapa não deixem à LVM nenhum arbítrio sobre o layout.

Para ver a forma como o processo de alocação funciona atualmente em qualquer caso específico, você pode ler a saída de registro de depuração, por exemplo, adicionando a opção -vvvv a um comando.