Aumentar o tamanho da partição em que o Ubuntu está instalado?

60

Eu tenho o Ubuntu instalado em uma unidade. O problema é que ele está com pouco espaço em disco. Isso está instalado no vmware. Expandi o drive virtual e inicializei no ubuntu. Mas quando eu abri o gparted (sudo gparted), a opção mover / redimensionar fica indisponível. Esta é a partição que o Ubuntu está instalado, mas preciso redimensioná-la. Alguma ideia? Estou confortável usando a linha de comando

user51447
fonte
Você pode ver como eles fazem isso no raspi-configRaspberry Pi, onde expandir o sistema de arquivos raiz é algo que você faz quase sempre que configura um novo Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
sshow

Respostas:

16

Você está quase lá.
Você não pode redimensionar a partição usando GParted enquanto o Ubuntu está sendo executado.
Você precisará anexar os ISOs do GParted como um CD à máquina VM e reiniciar a máquina para que o GParted seja carregado em vez do Ubuntu (acho que você pode inicializar a partir do CD virtual pressionando F12 imediatamente após o início da máquina).
Depois de inicializado no GParted, a opção de mover / redimensionar será ativada, pois o Ubuntu não está em execução no momento.

yossile
fonte
139

De fato, você PODE ampliar o sistema de arquivos raiz enquanto o Ubuntu estiver em execução (eu aprendi isso aqui recentemente ) - isso parece incrível, mas é verdade :)

Aqui está a lista de etapas para um cenário simples em que você tem duas partições: /dev/sda1uma partição ext4 da qual o sistema operacional é inicializado e /dev/sdb2é permutado. Para este exercício, queremos remover a partição swap e estender /dev/sda1o disco inteiro.

  1. Como sempre, verifique se você tem um backup dos seus dados - já que vamos modificar a tabela de partições, há uma chance de perder todos os seus dados se você digitar um erro de digitação, por exemplo.

  2. Corre sudo fdisk /dev/sda

    • use ppara listar as partições. Anote o cilindro de partida de/dev/sda1
    • use dpara excluir primeiro a partição swap ( 2) e depois a /dev/sda1partição. Isso é muito assustador, mas na verdade é inofensivo, pois os dados não são gravados no disco até você gravar as alterações no disco.
    • use npara criar uma nova partição primária. Verifique se o cilindro de partida é exatamente o mesmo que o antigo /dev/sda1. Para o cilindro final, concorde com a opção padrão, que é fazer a partição abranger todo o disco.
    • use apara alternar o sinalizador inicializável no novo/dev/sda1
    • revise suas alterações, respire fundo e use-o wpara gravar a nova tabela de partição no disco. Você receberá uma mensagem informando que o kernel não pôde reler a tabela de partição porque o dispositivo está ocupado, mas tudo bem.
  3. Reinicie com sudo reboot. Quando o sistema inicializar, você terá um sistema de arquivos menor vivendo dentro de uma partição maior .

  4. O próximo comando mágico é resize2fs. Executar sudo resize2fs /dev/sda1- este formulário assumirá como padrão o sistema de arquivos para ocupar todo o espaço disponível na partição.

É isso, redimensionamos uma partição na qual o Ubuntu está instalado, sem inicializar a partir de uma unidade externa.

Sergey
fonte
@EliahKagan: Por favor, dê uma olhada na resposta (de Gilles) a que vinculei. A idéia é que é possível usar fdiskpara ampliar a partição , enquanto o sistema operacional continua usando o sistema de arquivos menor. Então. após uma reinicialização, após o kernel reler a tabela de partições atualizada, podemos redimensionar o sistema de arquivos porque ele agora vive em uma partição maior.
21414 Sergey
1
@ Isaac: Sim, ainda precisamos reiniciar para fazer o kernel reler a tabela de partições. No entanto, uma reinicialização rápida em muitos cenários é um problema muito menor do que arrancar a partir de um meio externo (pense em máquinas remotas, máquinas sem cabeça, VPSes etc.)
Sergey
2
Duas notas rápidas: 1. Você pode usar dfpara mostrar o espaço "resultante" depois disso (confirmar se funcionou) e 2. lembre-se de recriar algum espaço de troca!
Christian Rondeau
1
Muito obrigado. O Ubuntu nunca usou o espaço que eu dei ao VirtualBox vdisk. Agora eu sei o porquê. Muito Obrigado!
penderi
1
@ Sid: É muito importante que o cilindro de partida seja exatamente o mesmo. Se o espaço livre estiver em qualquer lugar, mas imediatamente após a partição, você precisará usar outro método (que exigiria a inicialização a partir de outra unidade)
Sergey
21

Dois métodos

1. Testado no Ubuntu Server 16.04 a 18.10

Após estender o volume no VMware ESXi (desligamento vm, backup / exportação vm, remova todos os instantâneos e, em seguida, um número aumentado no tamanho do disco, tire o instantâneo do vm novamente antes de seguir as próximas etapas para que você possa reverter o erro / erro).

O exemplo a seguir está estendendo o volume na partição raiz em um sistema que já está usando o LVM.

  1. sshno sistema, alterne para root e execute cfdisk
    # cfdisk

  2. insira a descrição da imagem aqui

  3. insira a descrição da imagem aqui

  4. insira a descrição da imagem aqui

  5. insira a descrição da imagem aqui

  6. insira a descrição da imagem aqui

  7. insira a descrição da imagem aqui

  8. insira a descrição da imagem aqui

  9. insira a descrição da imagem aqui

  10. insira a descrição da imagem aqui

  11. insira a descrição da imagem aqui

  12. insira a descrição da imagem aqui

  13. Depois de sair do cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disklabel type: dos
     Disk identifier: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. Reinicie o sistema antes da próxima etapa (ou você pode obter Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Inicialize o novo volume

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Obter o nome do volume para estender

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. Estender grupo de volumes

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Estender raiz

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. Obter nome do sistema de arquivos para a próxima etapa

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. Estender sistema de arquivos

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. Veja o tamanho aumentado

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. Método mais rápido testado no Ubuntu Server 18.04.3 LTS

Este método é um pouco mais rápido que o primeiro. Isso ocorre devido a uma nova opção no cfdiskmenu chamada "Redimensionar" que salva algumas etapas.

Após estender o volume no VMware ESXi (desligamento vm, backup / exportação vm, remova todos os instantâneos e, em seguida, um número aumentado no tamanho do disco, tire o instantâneo do vm novamente antes de seguir as próximas etapas para que você possa reverter o erro / erro).

O exemplo a seguir está estendendo o volume na partição raiz em um sistema que já está usando o LVM.

  1. sshno sistema, alterne para root e execute cfdisk.

  2. Escolha a partição para estender e selecione "Redimensionar". insira a descrição da imagem aqui

  3. Defina o "Novo tamanho". insira a descrição da imagem aqui

  4. Depois de pressionar enter, você verá a tela com a seguinte nota "Partition [someNumber] redized": insira a descrição da imagem aqui

  5. Em seguida, você precisará "Escrever" (salvar) suas alterações: insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

  6. Sair cfdisk. Quando você sair, poderá ver a mensagem "sincronizando discos". insira a descrição da imagem aqui insira a descrição da imagem aqui

  7. Reiniciei meu sistema neste momento, mas pode não ser necessário. Agora você pode pegar a partir da etapa 19 do primeiro método (repetido abaixo).

  8. (19) Obtenha o nome do sistema de arquivos para a próxima etapa

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) Estender o sistema de arquivos

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) Ver tamanho aumentado

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

Artigos:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm

jtlindsey
fonte
Uau. Isso foi extremamente útil. Gostaria de poder votar mais de uma vez. Obrigado!
Mario Tacke
1
Funcionou perfeitamente na 18.10 executando no ESXi. Obrigado!
John Vinopal 24/02
Absolutamente fabuloso, exatamente o que eu precisava como um noob linux. .
bigbadmouse
Ótimo guia! Seguiu isso para expandir o armazenamento no Ubuntu, executando como Proxmox VM.
tokenizer_fsj
Fantástico! Obrigado por isso. Isso funcionou para 18.04 em execução no ESXi.
one.time 12/07
0

A resposta de Sergey foi excelente. Se o espaço vazio não estiver diretamente no próximo dispositivo, será necessário excluir outros dispositivos. Por exemplo:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

No caso acima, se você deseja mesclar /dev/sda3com /dev/sda1, você precisa remover /dev/sda1, /dev/sda2e /dev/sda3(com dcomando), e re-adicionar /dev/sda2e atualizar o seu tipo (com ne tcomandos).

jaycode
fonte
0

Consegui ampliar minha partição ext4 principal usando a metodologia descrita aqui .

Algumas notas da minha experiência pessoal:

  • O exemplo do link é para diminuir a partição; portanto, o pedido é redimensionado2fs primeiro e depois fdisk. Ao ampliar a partição (como no meu caso), o pedido deve ser o fdisk primeiro, reinicie e redimensione2fs. Além disso, ao usar o fdisk, as partições primária e estendida devem ser removidas e redefinidas.
  • Inicializei o Ubuntu a partir de outra unidade e trabalhei nessa unidade, que na verdade era um espelho (usando o dd) da unidade mais antiga. Tornou inicializável usando GParted
  • A versão atual do resize2fs (estou usando o Ubuntu 12.04LTS) suporta ext4 - não é necessário executar as ações descritas no link para alterar o ext2.
Elchanan
fonte
1
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Braiam 12/08/13