Como estender uma partição ext4 e um sistema de arquivos?

44

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 esquerdo (80 GB de espaço livre).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Como eu pude fazer isso?

Já vi pessoas usando, resize2fsmas não entendo se redimensiona a partição.

Outra solução seria usar, fdiskmas não quero excluir minha partição e perder dados. 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 em recuperação.

mimipc
fonte
Este tipo de pergunta foi feita e respondida várias vezes que tenho conhecimento. Você consultou os arquivos aqui?
Mdpc 22/05

Respostas:

45

Você deve começar com a partição desmontada. Se você não conseguir desmontá-lo (por exemplo, é a sua partição raiz ou outra coisa que o sistema precise executar), use algo como o CD do System Rescue .

  1. Execute parted, ou gpartedse você preferir uma GUI, e redimensione a partição para usar o espaço extra. Eu prefiro gparted, pois fornece uma boa representação gráfica, muito semelhante à que você desenhou na sua pergunta.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (apenas para descobrir se você está do lado seguro)

  4. Remonte sua partição.

Embora eu nunca tenha visto isso falhar, faça backup dos seus dados primeiro!

Flup
fonte
5
A resize2fspágina do manual diz: Se o sistema de arquivos estiver montado, ele poderá ser usado para expandir o tamanho do sistema de arquivos montado, assumindo que o kernel suporte o redimensionamento on-line. (Até o momento em que este artigo foi escrito, o kernel do Linux 2.6 suporta redimensionamento on-line para sistemas de arquivos montados usando ext3 e ext4.). No entanto, redimensionar um sistema de arquivos montado é uma operação mais perigosa, pois o kernel pode congelar ou travar facilmente ao executar código raramente exercido, deixando seu sistema de arquivos em mau estado.
200_success
1
Verdadeiro - mas você não quer mexer com sua tabela de partições com o sistema de arquivos montado. Por isso comecei com o fs desmontado.
Flup
1
Para ext4, pode ser resize4fsvez no RHEL 5.
Zac Thompson
1
O crescimento da partição com o sistema de arquivos raiz deve funcionar bem desde que: 1.Você não altere o número do setor inicial. 2.Você reinicia após alterar a tabela de partição antes de dar o próximo passo.
kasperd
parted se recusa a redimensionar uma partição ext4 no CentOS 6. #
reinierpost
21

Sim, você pode aumentar o EXT4 fs online se já tiver uma partição classificada. Você tem a partição classificada? Você tem LVM?

sudo resize2fs /dev/drive_to_grow

fdiskredimensionará sua partição, é verdade, mas se for uma partição raiz (ou se houver uma partição montada), ela deverá ser desmontada primeiro. Tão offline, provavelmente!

Como em qualquer coisa relacionada às operações de disco / fs, recomendo fortemente que o processo de recuperação seja testado e bem entendido.

Chris
fonte
Se você usar, fdiskverifique se usa MBR e não GPT (com MBR híbrido, por exemplo).
precisa
2
No meu servidor debian XEN, redimensionei meu volume lógico e lvextend +40G /dev/vg0/volumeName, em seguida, efetuei login como root na vm e entrei, o resize2fs /dev/xvda2que aumenta o sistema de arquivos raiz em execução para o novo máximo. Não tenho certeza se isso era necessário, mas reiniciei o vm após esta ação. Tudo parece bem.
rubo77
1
@ rubo77 Não, não há necessidade de um reboot,
Chris
5

Observe que em alguns servidores VDS você pode ter uma partição raiz não primária e precisar redimensionar o contêiner de partição estendida primeiro

Por exemplo, você acabou de atualizar seu plano e tem algo como:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Aqui / dev / vda2 - é o seu contêiner estendido. E / dev / vda5 - partição principal que precisamos redimensionar para o espaço disponível completo.

A maneira mais simples:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
WSR
fonte
O que realmente me ajudou foi ver que você pode definir ENDum número negativo. Geralmente você não sabe o tamanho exato do linux de uma partição redimensionada - não sabe como definir ENDargumentos resizepart. A configuração para -1sredimensionará sua partição para no máximo.
srigi 2/07/2018
Erro: token -1s inválido
starbeamrainbowlabs
3

Parted não funciona no ext4 no Centos. Eu tive que usar o fdisk para excluir e recriar a partição, que (eu validei) funciona sem perder dados. Eu segui as etapas em http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Aqui estão eles, em poucas palavras:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
JTW
fonte
1
Bem-vindo à falha do servidor! Resuma as etapas da resposta em si, para se proteger contra a podridão do link.
200_success
Utilizou esse processo, mas usou o gdisk para criar a partição. Isso permitiu-me para salvar os dados e criar uma partição que era> 2TB
pcnate
2

partedpode resizepartições e seus sistemas de arquivos.

200_success
fonte
Obrigado, eu estava usando o gráfico e ele não suporta o redimensionamento de partições. Eu já vi a opção no programa cli, mas você poderia me dizer como usá-lo com segurança sem perder dados? Em resize NUMBER START END, START e END são os números do setor? Como eu saberia disso?
mimipc
É sempre recomendável fazer backup de seus dados antes de executar qualquer operação arriscada, como redimensionar uma partição. partedsuporta uma escolha de unidades - por exemplo, use o ssufixo para setores Bou GBbytes, %para porcentagem do tamanho do dispositivo e cylpara cilindros.
200_success
2

Você pode usar fdiskou cfdiskmodificar (ou recriar) a partição (apenas certifique-se de não alterar seu limite inicial), depois reinicie e resize2fs. Mas, em geral, é preferível usar o LVM-2 em vez do MBR / GPT, pois permite que você traga essas alterações sem a reinicialização do kernel.

poige
fonte
1

Apenas 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, será necessário inicializar a partir de uma unidade de "boot" bootcdb ou bootusb, que é apenas um Live Linux. Isso permite que você execute o Linux na máquina, exceto a unidade na qual deseja fazer alterações.

Eu acho que o melhor CD ou USB de "resgate" nesse caso seria um USB ou CD gparted inicializável
Casos em que você precisa de uma imagem de resgate
1. A partição a ser expandida é a última partição, mas você a inicializou e não pode desmontá-la.
sda1 = inicialização (ou troca)
sda2 = troca (ou inicialização)
sda3 = /
Espaço não utilizado

  1. Se a partição a ser expandida NÃO for a última, você deverá usar a imagem de inicialização gparted para mover ou redimensionar as partições.
    sda1 = inicialização
    sda2 = / (a ​​partição a ser expandida não é a última)
    sda3 = troca de
    espaço não utilizado

Se você desejar alterar uma partição montada que não seja a partição "raiz" (/), como / home, que é uma partição diferente, não será necessário usar uma imagem de recuperação. Isto é especialmente verdade se for a última partição.
sda1 = inicialização
sda2 = /
sda3 = /
espaço não utilizado em casa
-ou-
sda1 = /
sda2 = /
espaço não utilizado em casa

Essa é a situação que tenho quando tiro uma imagem de uma unidade menor ou SSD e a movo para um SSD maior.

Nesse caso, você só precisa desmontar / lar enquanto o estende. Mas, para desmontar / home, você precisa ter certeza de que não está conectado a nenhuma conta de usuário cujo diretório pessoal esteja nele. Como o diretório inicial do usuário "root" está diretamente na raiz do sistema / como em / root, se você pode efetuar login no root, pode desmontar / home

Saio de uma sessão da 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, para que você possa ter erros ao tentar desmontar / home.
1. umount / home (repito este comando se ele falhar por até 30 segundos, depois consulte outras sessões para ver se 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 no final do disco)
c. q (fecha)
3 resize2fs / dev / sda "x" (x = partição a ser redimensionada. Isso também remonta o sistema de arquivos)
4. df -m (eu verifico / home para verificar se foi redimensionado)
Nunca perdi arquivos ou danifiquei a unidade usando esse método.

Boa sorte

Chuck A
fonte
E, no entanto, você não faz backups.
Deer Hunter