Redimensionando o volume lógico e o sistema de arquivos lvm2: tamanhos exatos?

9

No meu servidor de intranet, tenho uma partição GiB de 100,00 / dev / sda5, que eu uso como um volume físico para lvm2.

  • É o único volume físico no meu grupo de volume vg01.
  • vg01 contém atualmente um volume lógico lv01, usando o total de 100.00 GiB - bem, na verdade, 99.99 GiB devido a algum arredondamento (é aí que o problema é iniciado).
  • lv01 contém um sistema de arquivos ext3, usando todo o espaço.

Eu quero reduzir lv01 para aproximadamente 97 GiB, então eu posso criar lv02 com aprox. 3 GiB (eu preciso disso para tirar instantâneos lvm).

O que eu fiz até agora:

e2fsck -f /dev/mapper/vg01-lv01
resize2fs /dev/mapper/vg01-lv01 97G

Isso funcionou bem. Mas agora eu vou ter que correr

lvreduce --size ? /dev/mapper/vg01-lv01

E não tenho certeza, qual valor exato eu precisarei especificar. A página lvreduce man avisa explicitamente que o tamanho resultante não deve ser menor que o sistema de arquivos. Eu também não quero torná-lo maior do que tem que ser. Mas agora eu tenho números diferentes:

  • eu especifiquei 97G em resize2fs.
  • df -h diz que são 96 G.
  • df diz que são 100115936 blocos de 1K.
  • O lvdisplay (claro) ainda relata 99.99 GiB para o volume lógico.

O que devo especificar para lvreduce ?

Editar:

A resposta aceita atualmente fornece uma boa solução alternativa. No entanto, a fim de integrar essas coisas em scripts sólidos etc., eu geralmente preferiria usar medições precisas. Ou talvez já exista um script ou ferramenta confiável (!) Que execute todo o procedimento de redimensionamento em uma única etapa?

    
por Chris Lercher 08.07.2011 / 12:05

2 respostas

5

Na minha experiência, LVM e resize2fs têm as mesmas idéias sobre o que "97G" significa, então especificar o mesmo tamanho em ambos os lugares deve ser bom. No entanto, sou paranóico e, sempre que possível, sempre uso a estratégia sugerida por larsks nos comentários da pergunta e redimensionei para ser um GB menor do que eu queria, fiz o lvresize para o tamanho desejado e executei novamente resize2fs (sem um tamanho) para deixá-lo expandir de volta para preencher todo o LV.

    
por 08.07.2011 / 12:44
12

Acho que isso é feito da melhor forma usando a opção --resizefs para lvreduce / lvresize:

   -r, --resizefs
          Resize underlying filesystem together with the logical volume using fsadm(8).

É verdade que isso não ajuda agora , mas pode acontecer no futuro.

    
por 08.07.2011 / 15:36

Tags