Eu tenho um disco de 400 GB com uma partição ext4 de 320 GB. Gostaria de aumentar a partição ext4 para usar o espaço restante (80 GB de espaço livre).
+--------------------------------+--------+
| ext4 | Free |
+--------------------------------+--------+
Como eu poderia fazer isso?
Já vi gente usando resize2fs
mas não entendo se redimensiona a partição.
Outra solução seria usar fdisk
, mas não quero excluir minha partição e dados soltos. Como eu poderia simplesmente aumentar a partição sem perder nenhum arquivo?
Nota: estou falando de uma partição de dados não montada sem LVM e tenho backups, mas gostaria de evitar gastar algum tempo na recuperação.
Você deve começar com a partição desmontada. Se você não puder desmontá-lo (por exemplo, é sua partição raiz ou outra coisa que o sistema precisa executar), use algo como o CD de recuperação do sistema .
Execute
parted
, ougparted
se preferir uma GUI, e redimensione a partição para usar o espaço extra. Eu prefirogparted
porque lhe dá uma boa representação gráfica, muito semelhante à que você desenhou na sua pergunta.resize2fs /dev/whatever
e2fsck /dev/whatever
(apenas para descobrir se você está no lado seguro)Remonte sua partição.
Embora eu nunca tenha visto isso falhar, faça backup de seus dados primeiro!
Sim, você pode aumentar o EXT4 fs online se tiver a partição já classificada. Você tem partição classificada? Você tem LVM?
fdisk
irá redimensionar sua partição, é verdade, mas se for uma partição raiz (ou se for uma partição montada), ela terá que ser desmontada primeiro. Então offline muito provavelmente!Como com qualquer coisa relacionada a operações de disco/fs, recomendo fortemente ter um processo de recuperação de backup e testado e bem compreendido.
Usando
growpart
eresize2fs
exemplo:Observe que, em alguns servidores VDS, você pode ter uma partição raiz não primária e precisa redimensionar o contêiner de partição estendida primeiro
Por exemplo, você acabou de atualizar seu plano e tem algo como:
Aqui /dev/vda2 - é o seu contêiner estendido. E /dev/vda5 - partição principal que precisamos redimensionar para todo o espaço disponível.
A maneira mais simples:
O Parted não funciona no ext4 no Centos. Tive que usar o fdisk para deletar e recriar a partição, que (validei) funciona sem perder dados. Eu segui as etapas em http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Aqui estão eles, em poucas palavras:
parted
podemresize
partições e seus sistemas de arquivos.Só para esclarecer como faço isso para quem ainda está lendo este tópico.
Se for a partição de inicialização que você deseja redimensionar, você deve inicializar a partir de uma unidade bootcd ou bootusb "rescue", que é apenas um Live Linux. Isso permite que você execute o Linux na máquina que não seja a unidade na qual deseja fazer alterações.
Eu acho que o melhor cd ou usb de " resgate " neste caso seria um USB ou CD
inicializável.
sda1 = boot (ou swap)
sda2 = swap (ou boot)
sda3 = /
espaço não utilizado
sda1 = boot
sda2 = / (partição a ser expandida não é a última)
sda3 = troca de
espaço não utilizado
Se você deseja alterar uma partição montada que não seja a partição "raiz" (/), como /home que é uma partição diferente, não há necessidade de usar uma imagem de recuperação. Isso é especialmente verdadeiro se for a última partição.
sda1 = boot
sda2 = /
sda3 = /home
espaço não utilizado
-ou-
sda1 = /
sda2 = /home
espaço não utilizado
Esta é a situação que tenho quando pego uma imagem de uma unidade ou SSD menor e a movo para um SSD maior.
Nesse caso, você só precisa desmontar /home enquanto o estende. Mas para desmontar /home, você precisa ter certeza de que não está logado em nenhuma conta de usuário cujo diretório inicial esteja dentro dela. Como o diretório inicial do usuário "root" está diretamente sob a raiz do sistema / como em /root, se você puder fazer login no root, poderá desmontar /home
Eu saio de uma sessão de GUI (KDE / Gnome / etc) e uso [CTRL] + [ALT] + [F1] para abrir uma sessão de shell.
Se você acabou de sair de um login de usuário, o Linux pode levar de 20 a 30 segundos para concluir o fechamento de todos os arquivos, portanto, você pode receber erros ao tentar desmontar /home.
1. umount /home (eu tento novamente este comando se ele falhar por até 30 segundos, então vá ver outras sessões para ver se eu estou "cd /home/xxx" em algum lugar.)
2. parted /dev/sda
a. redimensionar x (x = partição que você deseja redimensionar, use "p" para obter uma lista de partições)
b. Digite o último setor de redimensionamento = "-1" (menos 1 significa 1 setor do final do disco)
c. q (sai do parted)
3 resize2fs /dev/sda"x" (x = partição a ser redimensionada. Isso também remonta o sistema de arquivos)
4. df -m (verifico /home para verificar se foi redimensionado)
Nunca perdi arquivos ou corrompi a unidade usando este método.
Boa sorte
A resposta aceita está um pouco desatualizada: redimensionar um sistema de arquivos ext4 é melhor feito online do que offline, pois o caminho do código de expansão online é muito mais usado do que o offline.
O mais difícil provavelmente é expandir a partição subjacente, a menos que você esteja usando LVM e tenha espaço livre em seu grupo de volumes. Para expandir uma partição online, você pode usar
fdisk
ouparted
; então, você tinha que correrkpartx <device>
para informar o kernel da mudança. Se estiver usando o LVM, você precisapvresize
da partição recém-redimensionada anteslvresize
do volume.Finalmente, você pode emitir
resize2fs
seu sistema de arquivos.Você pode usar
fdisk
oucfdisk
para modificar (ou recriar) a partição (apenas certifique-se de não alterar seu limite inicial), reinicie eresize2fs
. Mas, em geral, é preferível usar LVM-2 em vez de MBR/GPT, pois permite que você faça essas alterações sem a reinicialização do kernel.Pediram-me para aumentar um disco montado como /scratch em um servidor Dell executando o CentOS 7 sem interromper os usuários atuais. Esta era uma partição XFS em um disco RAID 0 com um disklabel GPT normal. Isso funcionaria para uma partição ext4 quase exatamente da mesma maneira - veja mais adiante.
Foi assim que fiz isso sem desmontar, reiniciar ou interromper as operações no sistema. Acabei de usar os comandos do Linux (e as ferramentas RAID da Dell):
/sys/block/sdb/size
ainda estava no valor mais baixo. Isso foi corrigido usando o comando:echo 1 > /sys/block/sdb/device/rescan
para fazer com que o driver de disco atualize seu conhecimento sobre o tamanho e a forma do disco. Este parece um recurso mal anunciado: eu adivinhei o que ele fez pelo nome!
parted
para editar o disklabel e mover sua cópia no final do disco para o novo final do disco. Felizmente, ele adivinhou exatamente o que eu queria fazer sem encorajamento e me instigou. Primeiro, a cópia do disklabel:Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? F
E então o tamanho do disco refletido no disklabel:
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting? Fix/Ignore? F
Então eu tive que digitar "F" duas vezes e depois "q" para sair com o disklabel (e sua cópia) corrigido. Isso consertou a maior parte do que tinha que ser consertado sem qualquer pensamento ou trabalho duro.
parted
não me deixou fazer isso enquanto o disco ainda estava montado - então eu useifdisk
:fdisk /dev/sdb d 1 n 1 (defaults were correct for full size of disk) t 1 11 (That's Microsoft basic data - which is the same as xfs). w
Observe que eu tinha estabelecido que estava usando o número de bloco inicial correto, 2048. Caso contrário , não teria funcionado. Tive a sorte de usar duas ferramentas que tinham a mesma convenção para bloco inicial, mas verifiquei primeiro o bloco inicial inicial.
parted
neste ponto para dar à partição o mesmo nome que costumava ter, poisfdisk
não suporta nomear partições. Um pequeno detalhe.partprobe /dev/sdb
(epartprobe /dev/sdb1
para uma boa medida) para fazer o sistema operacional ler a tabela de partição novamente. Acho que apenas o primeiro comando realmente fez a diferença.xfs_growfs -d /scratch
o que levou apenas 1,6 segundos para aumentar a partição até seu tamanho final, preenchendo o disco recém-criado.Isso também funcionaria com volumes ext4: a única diferença seria usar
resize2fs /dev/sdb1
em vez dexfs_growfs -d /scratch
- e usar o número de tipo de partição correto para ext4 em vez de xfs. O comando fdisk pode listar os números de tipo para sistemas de disco comuns, incluindo ext4.