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

10

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

  • É o único volume físico no meu grupo de volumes vg01.
  • Atualmente, a vg01 contém um volume lógico lv01, usando os 100,00 GiB completos - bem, na verdade 99,99 GiB devido a alguns arredondamentos (é aí que o problema começa).
  • O lv01 contém um sistema de arquivos ext3, usando todo o espaço.

Quero reduzir o lv01 para aproximadamente 97 GiB, para que eu possa criar o lv02 com aprox. 3 GiB (eu preciso tirar instantâneos do lvm).

O que eu fiz até agora:

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

Isso funcionou bem. Mas agora vou ter que correr

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

E não tenho certeza, qual valor exato terei que especificar. A lvreducepágina de manual 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 97Gem resize2fs.
  • df -h diz, é 96 G.
  • df diz, são 100115936 blocos de 1K.
  • lvdisplay (é claro) ainda reporta 99,99 GiB para o volume lógico.

O que terei que especificar lvreduce?

Editar:

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

Chris Lercher
fonte
3
Você pode usar resize2fspara reduzir o sistema de arquivos para cerca de 90 GiB e, em seguida, mexer com argumentos para lvreduce(seguidos por resize2fs) para ver o que funciona melhor.
Larsks
@ larsks: Ótima idéia (porque o resize2fs pode se ajustar automaticamente ao tamanho das partições, enquanto o lvreduce não pode se ajustar automaticamente ao tamanho do fs). Se ninguém souber a resposta definitiva para minha pergunta, acho que essa será a solução.
22711 Chris Chrischer
Por que simplesmente não passar o mesmo tamanho para o lvreduce? A menos que você faça um erro de digitação, o lvm deve reconhecer que é do mesmo tamanho e não redimensioná-lo novamente. E se você digitar um erro de digitação, pelo menos evitou destruir seu sistema de arquivos. lvreduce -r -L 97G / dev / mapper / vg01-lv01
Bill

Respostas:

5

Na minha experiência, LVM e resize2fs têm as mesmas idéias sobre o que "97G" significa, portanto, especificar o mesmo tamanho nos dois lugares deve ser bom. No entanto, sou paranóico e, sempre que possível, sempre use a estratégia sugerida por larsks nos comentários da pergunta e redimensionada para ser um GB menor do que eu queria, fiz o lvresize para o tamanho que eu queria e execute novamente o redimensionamento2fs (sem um tamanho) para deixá-lo expandir novamente para preencher todo o VE.

mulher
fonte
Eu acho que é importante ser "paranóico" aqui - porque não só existe a possibilidade de os arquivos atuais serem danificados: Se o sistema de arquivos for maior que o LV, presumo que ele possa causar estragos nos seguintes volumes a qualquer momento no futuro.
22711 Chris Chrischer
Não, o LVM proibirá qualquer tentativa de gravação além do final do LV, para que nenhum outro LV possa ser danificado. Se o sistema de arquivos estiver truncado, ele resultará em resultados bastante catastróficos.
Womble
Isso é interessante - eu não sabia que verifica todas as gravações! Bom saber.
Chris Lercher
14

Eu acho que isso é melhor feito usando a opção --resizefs para lvreduce / lvresize:

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

É certo que isso não ajuda você agora , mas pode no futuro.

mjk
fonte
Era isso que eu estava procurando! Parece ser uma nova opção: está na versão 2.02.74 (2) -RHEL, mas está ausente na minha versão 2.02.66 das ferramentas LVM.
22711 Chris Chrischer
1
Quando eu já havia redimensionado o fs usando outras ferramentas, essa opção suprimia o aviso usual e imprimia a mensagem "O sistema de arquivos já possui 3932160 blocos. Nada a fazer!" Assim como desejado.
D Coetzee
Mesmo em 2020, nenhum dos vários tutoriais sobre a extensão / redução de volumes lvm propostos pelo Google em sua primeira página de resultados de pesquisa menciona essa opção. Muito obrigado!
Ivan Shatsky