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:
- Diminuir o sistema de arquivos na p15
- Encolher a partição p15 para o novo tamanho do sistema de arquivos. Isso criará espaço livre entre as duas partições.
- Desmontar p2 (/ db2)
- 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)
-
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 eyyy
deve ser o número de bytes pelo qual você está aumentando a partição dividida porxxx
. -
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.