Como posso minimizar o tamanho de uma partição ext3 (e seu volume lógico LVM)?

1

Estou usando o LVM no Ubuntu 9.10 (Karmic). Eu tenho um único volume físico LVM (e um único grupo de volume).

Eu tenho um sistema de arquivos ext3 dentro de um volume lógico LVM que não uso mais, mas por enquanto eu gostaria de não deletá-lo. Eu estou tentando descobrir como minimizar o espaço que ocupa dentro do meu PV. resize2fs tem a opção -M, que funciona bem ao redimensionar o sistema de arquivos para ter zero de espaço livre, mas é claro que isso não afeta o volume lógico. A maioria das receitas na web para encolher ext3 dentro de um LV (por exemplo, este aqui ), siga este padrão básico para aliviar problemas com cálculos imprecisos de limites do sistema de arquivos, etc.:

  • Reduza o ext3 mais do que você quer com resize2fs
  • Encolha o LV para o tamanho exato desejado
  • Execute novamente o resize2fs para aumentar o sistema de arquivos para usar com eficiência o LV completo.

Isso não resolve totalmente o problema no meu caso, porque eu quero que o tamanho de LV seja acionado pelo sistema de arquivos, e não o contrário.

Existe um comando ou comandos que eu possa executar para fazer isso? Alternativamente, é possível fazer o cálculo do tamanho do sistema de arquivos para aumentar o nível de confiança?

    
por Andrew Ferrier 22.12.2009 / 10:32

2 respostas

4

Em teoria, sim, você pode calcular o tamanho exato do LV requerido pelo sistema de arquivos - quando resize2fs faz isso, ele imprime quantos blocos estão em uso. Infelizmente, entender um pouco errado resulta em um sistema de arquivos quebrado, e gastar 100MB de espaço em troca de não desossar um sistema de arquivos é uma troca que a maioria das pessoas está disposta a fazer.

EDITAR : Com o risco de dar uma metralhadora a um macaco e limpar seus sistemas de arquivos o tempo todo, o seguinte processo funcionou para mim em um sistema de arquivos scratch:

  • fsck -f /dev/vg/sizetest
  • resize2fs -M /dev/vg/sizetest
  • Pegue o número de blocos (e o tamanho do bloco) da linha "Redimensionando o sistema de arquivos" de resize2fs e calcule o número de kilobytes envolvidos multiplicando a contagem de blocos pelo tamanho do bloco em kB:
    • "Redimensionar o sistema de arquivos em / dev / vg / sizetest para 119325 (4k) blocos" se traduz em 119325 * 4 => 477300 (número importante para a próxima etapa)
  • lvresize -L477300k vg/sizetest
  • Neste ponto, se o seu tamanho não estiver certo, você estará total e totalmente desossado - expandir o sistema de arquivos novamente não trará necessariamente os mesmos blocos de volta na mesma ordem.
  • fsck -f /dev/vg/sizetest
  • Remontar o sistema de arquivos, observe que o df mostra que o sistema de arquivos está 100% cheio, com 0 blocos disponíveis

Se isso atrapalhar o seu sistema de arquivos crucialmente importante, não me diga, pois eu apenas me empenharei em uma longa dança "contada", e ninguém quer me ver dançar. Confie em mim.

    
por 22.12.2009 / 12:55
-1

Pode não ser a melhor solução, mas é o que eu faria:

  • copie os dados para outro volume
  • redimensione seu volume (do jeito que você descreveu) para o tamanho desejado
  • coloque seus dados de volta

Espero que alguém tenha uma solução melhor, mas esta deve, pelo menos, funcionar se nenhuma outra solução.

    
por 22.12.2009 / 11:04