2) redimensionar a partição fisicamente: Para isto, utiliza-se o comando fdisk.
Quando nós redimensionamos o sistema de arquivos é como dar um aviso ao kernel que os arquivos da partição podem ser encontrados entre o cilindro xxx do disco ao cilindro yyy, e a partição, quando as coisas estão funcionando, vai do cilindro xxx ao cilindro yyy. Entretanto, pode ser que não haja correspondência entre o que informa o sistema de arquivo ao kernel, e o tamanho físico da partição mesmo.
Assim, quando queremos diminuir o tamanho de uma partição, devemos, primeiro, diminuir o tamanho do sistema de arquivo com resize2fs, para depois diminuir seu tamanho físico com fdisk. Desde 2002 que esse software suporta o redimensionamento não só de partições ext2, mas também de ext3, portanto não é necessário tirar o journaling da partição.
No caso de querermos expandir o tamanho de uma partição, precisamos fazer o caminho inverso, desde que haja espaço livre começando quando termina originalmente o a partição que queremos expandir: aumentamos seu tamanho fisico para depois redimensionar o seu sistema de arquivo.
Bem, vamos aos passos:
No caso, eu queria diminuir o tamanho da minha partição /home de 50GB para 10GB.
Se você vai fazer isto com a partição raiz do seu sistema, ou a partição que contém outros executáveis importantes do sistema operacional, é necessário reiniciar o sistema e utilizar um disco/CD/DVD de recuperação, ou uma distribuição live-CD, pois é necessário executar os procedimentos com a partição com a qual queremos trabalhar desmontada.
Primeira parte: Checando informações sobre o disco e a partição, e redimensionando o Sistema de arquivos
- Checando informações:
fdisk -l /dev/sda --> Este comando dá informações sobre todas as partições do disco, tais como o cilindro inicial e final da partição, e número de blocos que ocupa. Lembrando que /dev/sda é apenas o exemplo utilizado, e o dispositivo que será utilizado dependo de como está configurado o seu HD, e de qual tecnologia ele utiliza (para HDs IDE, utilizamos /dev/hd(letra), e para primeiro hd, a letra a. Para HDs SCSI ou SATA, utilizamos /dev/sd(letra), e para o segundo hd, utilizamos a letra b. Utilizariamos também a letra a, no caso de ser o primeiro hd, que é o caso do exemplo.
No meu caso, eu queria informações da partição /dev/sda2, que no meu caso, normalmente é montada em /home. LEMBRE-SE QUE TODOS OS PROCEDIMENTOS DEVEM SER FEITOS COM A PARTIÇÃO DESMONTADA.
e2fsck -f /dev/sda2 -->substitua /dev/sda2 pela partição que desejar/precisar checar.
resize2fs /dev/sda2 10G
Ele, depois, vai retornar o número de blocos que a nova partição deverá ocupar. Mas atenção, ele informa isso para o Kernel, mas não fez nenhuma modificação física, como, aliás, discutimos acima. É importante mencionar que o número de blocos informado pode estar ligeiramente errado, devido a um bug conhecido e mencionado no próprio manual do comando (man resize2fs). O que fazer em relação a isso, veremos na segunda parte.
Segunda Parte: Redimensionando a partição
Se o procedimento for feito corretamente, não haverá nenhuma perda de dados. Entretando, devido ao risco, é extremamente aconselhável fazer um backup dos dados mais importantes da partição, senão de toda ela. Eu estava muito "com o cú na mão", então fiz 2 backups!
fdisk /dev/sda --> Para iniciar operações de particionamento do disco.
Resposta do comando:
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): d
Partition number (1-5): 2
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 2
Last cylinder or +size or +sizeM or +sizeK (xxx-yyy, default yyy ): +númeroK --> onde xxx-yyy é o intervalo, em cilindros, do número do cilindro que termina a partição. yyy, é o limite final do disco. + é a opção para declarar o tamanho da partição, em vez do cilindro final, e deixar a tarefa de descobrí-lo para o fdisk, número, é o tamanho em KiloBytes da Partição, e K é a opção especificando que o tamanho será mesmo dado em Kilobytes.
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
É preciso, agora, reiniciar o sistema (ou não).
Com a partição redimencionada desmontada, vamos à terceira e última parte:
3) Checagem do sitesma, e re-redimensionamento:
Com o sistema reiniciado para que a nova tabela de partições seja reconhecida, digite:
e2fsck -f /dev/sda2 --> (com a partição desmontada e ,novamente, substitua a partição utilizada no exemplo pela que você quer redimensionar efetivamente)
E depois o comando:
resize2fs /dev/sda2
Agora, não tem mais o tamanho da partição, porque, com a nossa preucaução, o tamanho informado pelo sistema de arquivos é menor do que o tamanho físico da partição, e queremos apenas que o sistema de arquivos seja redimensionado para o tamanho máximo da partição física.
Referências:
http://usefulfor.com/nothing/2007/12/14/howto-resize-an-ext3-partition-without-losing-data/
http://www.howtoforge.com/linux_resizing_ext3_partitions
Manual do resize2fs (man resize2fs)
Parabéns pelo seu blog, fiz aqui este procedimento e funcionou perfeitamente, Obrigado.
ResponderExcluirObrigado.
ExcluirFico feliz que esta informação tenha sido útil.
Pena não conseguir atualizar o blog... :-(