Como calcular o volume físico do Linux e a sobrecarga de metadados do grupo de volumes?

2

Estou tentando instalar um sistema CentOS 7.4 usando um arquivo de kickstart e recebi o seguinte erro: 'new lv é muito grande para caber no espaço livre'

Existe uma mensagem adicional de que 752.85MiB é necessário.

Aqui estão as partes relevantes do arquivo de kickstart:

part pv.00 --size=77824 --asprimary volgroup vg00 pv.00 logvol / --fstype=ext4 --name=lv_root --vgname=vg00 --size=40960 logvol /tmp --fstype=ext4 --name=lv_tmp --vgname=vg00 --size=16384 --fsoptions="nodev,noexec,nosuid" logvol /var --fstype=ext4 --name=lv_var --vgname=vg00 --size=16384 --fsoptions="nodev,nosuid" logvol swap --name=lv_swap --vgname=vg00 --size=4096

Como você pode ver, o tamanho total dos volumes lógicos é igual ao tamanho do volume físico: 40960 + 16384 + 16384 + 4096 = 77824

É evidente que há alguma sobrecarga ou metadados que está ocupando parte do volume físico ou do grupo de volumes, mas não está claro como isso está sendo calculado.

Passei a manhã inteira pesquisando isso e não consegui encontrar nenhuma informação, mesmo nos guias Advanced LVM Configuration da RedHat.

Para os propósitos desta resposta, assuma que --grow não é uma opção e eu preciso saber o cálculo exato (haverá outro volume físico após este que precisa crescer, então este precisa ser fixo tamanho).

    
por Michael Day 11.12.2017 / 21:33

2 respostas

1
  • Por padrão, os metadados do LVM2 são 1 MiB por volume físico. Você usa pvs -o +pe_start para descobrir exatamente onde a carga começa.

  • Grupos de volumes e volumes lógicos não têm sobrecarga de metadados; somente volumes físicos carregam metadados.

  • Também por padrão, o LVM usa extensões físicas de 4 MiB.

O resultado final é que, se por razões estéticas você quiser que pvdisplay mostre " not usable 0 ", deverá:

  • Torne cada volume físico em um múltiplo de 4 MiB + 1 MiB,

  • Ou crie seus grupos de volumes com -s 1m para ter extensões físicas de 1 MiB.

Fontes:

  • O alinhamento padrão da área de dados (refletido no setor inicial da área de carga útil pvs -o +pe_start ) é de 1 MiB de acordo com este commit . Este é realmente um parâmetro configurável, veja a página de manual para lvm.conf ; Obviamente, ele pode ser controlado por volume físico no momento da criação do volume físico.

  • O tamanho da extensão física padrão está documentado na página de manual de vgcreate :

    -s, --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]
    Sets the physical extent size on physical volumes of this volume group. A size suffix (k for kilobytes up to t for terabytes) is optional, megabytes is the default if no suffix is present. The value must be at least 1 sector for LVM2 format (where the sector size is the largest sector size of the PVs currently used in the VG) or 8KiB for LVM1 format and it must be a power of 2. The default is 4 MiB.

por 17.12.2017 / 17:23
0

O comando dmsetup table mostra a posição inicial de um LV dentro de seu PV. Para meus PVs em sistemas mais antigos, o deslocamento mais baixo é 384:

start cmd: # dmsetup table | grep '\b384$'
storage-images: 0 62914560 linear 9:9 384
linux0-home: 0 2097152 linear 9:0 384

Em sistemas mais novos, o deslocamento é maior:

linuxbackup-rootfs: 0 18874368 linear 9:1 2048

Isso provavelmente significa que, dependendo da versão do LVM (ou da configuração específica da distribuição), os primeiros 384 ou 2048 setores são reservados para os metadados PV e VG. Pode haver metadados no final do PV também (se você forçar isso).

Se você quiser saber o valor relevante para você, basta criar um VG e verificar o valor usado. Mas para o seu propósito, pode ser o suficiente apenas calcular com o valor maior.

    
por 17.12.2017 / 16:54