Recuperando espaço de um sistema de arquivos para fornecê-lo para outro sem LVM

1

Eu quero adicionar um espaço de sistema de arquivos a outro sistema de arquivos.

/dev/cciss/c0d0p2    152358920 143606116    888588 100% /db2
/dev/cciss/c0d0p15   203899764  50767420 142607764  27% /db2/ade/sapdata1

De /db2/ade/sapdata1 para /db2 neste caso. Nosso servidor também não está instalado no formato LVM.

Como posso usar um pouco do espaço livre para /db2 ?

    
por D RAvi Kumar 29.05.2012 / 09:44

1 resposta

1

O nível de dificuldade de fazer isso depende do layout de bloco dessas duas partições: qual delas vem primeiro no disco em termos de bloco inicial e final, se existe alguma outra partição de qualquer espaço vazio entre elas, etc. ...

Também será necessário que o sistema de arquivos usado em /db2/ade/sapdata1 suporte encolhimento. xfs, por exemplo, não.

Eu apresento um exemplo para sua informação. É uma operação bastante perigosa e eu não recomendo que você faça isso. Mas isso lhe dará uma ideia do que está envolvido. O exemplo é o caso mais fácil. Outros casos são muito mais difíceis porque você pode ter que mover os dados para trás (contando do último bloco para o primeiro) de um local para outro em uma partição.

Digamos que p15 seja armazenado primeiro no disco seguido por p2, eles juntos ocupam todo o disco, não há outras partições e nenhum bloco livre. Isto é o que você teria que fazer:

  1. Diminuir o sistema de arquivos na p15
  2. Encolher a partição p15 para o novo tamanho do sistema de arquivos. Isso criará espaço livre entre as duas partições.
  3. Desmontar p2 (/ db2)
  4. Altere o bloco inicial da partição p2 para o primeiro bloco livre disponibilizado na etapa 2 (ou seja, faça o backup do início da partição para ser anterior no disco)
  5. Mova os dados para trás no disco com um comando como este:

    dd if=/dev/cciss/c0d0p2 of=/dev/cciss/c0d0p2 bs=xxx skip=yyy
    

    xxx deve ser um tamanho de bloco grande que divide sem o restante o valor pelo qual você está aumentando a partição e yyy deve ser o número de bytes pelo qual você está aumentando a partição dividida por xxx .

  6. Cresça o sistema de arquivos / db2.

Como você pode imaginar, o passo 5 é uma operação extremamente perigosa. Demorará muito tempo a executar e poderá ser muito difícil recuperar se falhar ou for interrompido. Você deve entender o que você está fazendo se você fizer isso.

Outra opção se você estiver executando no Linux seria deixar todos os dados existentes onde está e usar o mapeador de dispositivos para juntar uma partição existente e algum espaço vazio não adjacente em uma partição virtual maior. Isso é basicamente algo que o LVM faria, mas sem a interface de usuário e os metadados do LVM que une os intervalos de blocos de forma automática e transparente.

    
por 29.05.2012 / 17:09