Recentemente reduzi o tamanho do sistema de arquivos ext4 para 500 GB
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 493G 64G 404G 14% /
agora eu quero reduzir o tamanho da partição para caber exatamente no tamanho do sistema de arquivos.
Tentei usar parted e o comando resizepart. O problema é quando parted pede o novo tamanho. Se eu escolher 500 GB, a partição resultante será menor que 500 GB e, como resultado, o sistema de arquivos subjacente não caberá nessa partição. Alguma dica sobre como fazer os cálculos de tamanho corretos?
Os tamanhos relatados por
df
serão incorretos, pois representam apenas blocos de dados e blocos perdidos usados internamente pelo sistema de arquivos, bem como os blocos reservados.A maneira mais fácil é reduzir seu sistema de arquivos para ser menor do que você deseja em pelo menos 10%. Redimensione a partição para o tamanho desejado e aumente o sistema de arquivos com resize2fs.
Se você quiser calculá-lo manualmente, precisará saber o tamanho do sistema de arquivos internamente. Verifique isso
tune2fs -l /dev/sda2
e multiplique a contagem de blocos pelo tamanho do bloco. Ao redimensionar a partição em parted, alterne as unidades para setores comunit s
eprint
a tabela para obter o setor inicial e o tamanho do setor lógico. Divida o tamanho total em bytes acima pelo tamanho do setor. Arredonde para o múltiplo mais próximo de 2048 e redimensione para este número de setores (setor final = tamanho nos setores + setor inicial - 1).Equação (executável em python, basta preencher os 4 primeiros valores):
Aqui está um exemplo de todo o processo.
Este é o nosso disco rígido:
ele contém uma única partição (/dev/loop0p1) com 4,7 GB de tamanho. Este é o sistema de arquivos na partição:
Por padrão, tem o mesmo tamanho da partição (4,7 GB). Mas apenas 2,1 GB (45%) do sistema de arquivos é usado. Isso significa que poderíamos reduzir o sistema de arquivos e a partição para apenas 2,1 GB sem perder nenhum dado.
A primeira etapa é usar resize2fs com a opção -M na partição. Semelhante a um desfragmentador de disco, este comando tentará mover todos os arquivos para o início do sistema de arquivos para formar um bloco contíguo. Isso permite reduzir o sistema de arquivos ao menor tamanho possível.
O sistema de arquivos agora se parece com isso:
O disco rígido agora contém uma partição de 4,7 GB com um sistema de arquivos de 2,1 GB que é 100% usado. A próxima etapa é reduzir o tamanho da partição para caber no sistema de arquivos menor.
Para isso, precisamos calcular o tamanho do sistema de arquivos. A ferramenta dumpe2fs é muito útil para isso, pois mostra informações detalhadas sobre um sistema de arquivos.
Isso nos diz que existem 565.950 blocos e o tamanho do bloco é de 4.096 bytes. Isso nos permite calcular o tamanho do sistema de arquivos:
565950 blocos * 4096 bytes = 2318131200 bytes
A partir disso, podemos calcular o tamanho do sistema de arquivos em setores. Da saída do fdisk acima, sabemos que o tamanho do setor do disco rígido é de 512 bytes:
2318131200 bytes / 512 = 4527600 setores
Como a partição não inicia no setor 0, precisamos adicionar o setor inicial da saída do fdisk:
4527600 + 8192 (setor inicial) = 4535792
Este é o novo setor final para nossa partição. Apenas para jogar pelo seguro, adicione 10 setores (cerca de 5 KB) a esse número: 4535802
Agora podemos usar parted para encolher a partição para este novo setor final. O comando "unidade s" é usado para alternar as unidades para setores.
Ele nos avisa sobre uma possível perda de dados, mas como movemos todos os dados para o início da partição antes, isso pode ser ignorado com segurança. Feito! Agora temos uma partição de 2,1 GB com um sistema de arquivos de 2,1 GB que está 100% ocupado.