Como redimensionar / ampliar / aumentar uma partição ext4 não-LVM

16

Já pesquisei nos fóruns, mas não encontrei uma boa resposta adequada:

Eu tenho um servidor Ubuntu 10.04 como host KVM e um sistema convidado, que também roda 10.04. O sistema host usa o LVM e há três volumes lógicos, que são fornecidos ao convidado como dispositivos de bloco virtual - um para /, um para / home e um para swap. O convidado foi particionado sem LVM.

Eu já ampliei o volume lógico no sistema host - o convidado vê com sucesso o disco virtual maior. No entanto, esse disco virtual contém uma partição "boa e velha", que ainda tem o antigo tamanho pequeno.

A saída do fdisk -l é

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

A saída da impressão parcial é toda

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

O que eu quero alcançar é simplesmente aumentar ou redimensionar a partição / dev / vdc1 para que ela use todo o espaço fornecido pelo dispositivo de bloco virtual / dev / vdc. O problema é que quando eu tento fazer isso com o parted, ele reclama:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

Então, o que posso fazer? Este é um sistema de produção sem cabeça. O que é uma maneira segura de aumentar essa partição? Eu posso desmontá-lo, embora - então este não é o problema.

Editar: O Cfdisk mostrou um pequeno espaço livre não particionado, depois a partição (sinalizada como "boot" e Linux / ext3) e depois o resto do espaço não particionado. Após excluir a partição e criá-la novamente usando cfdisk - o cfdisk mostra uma grande área particionada (o que seria bom para mim) e como o tipo de sistema de arquivos apenas "Linux"

Resize2fs retorna esse erro resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

    
por Mischa 23.03.2012 / 08:59

3 respostas

17

Esta página indica que a maneira de fazer isso é desmontar, excluir, recriar partição com o tamanho desejado e use resize2fs para estender a partição. A página de manual resize2fs concorda.

Eu sei que 'delete the partition' parece assustador, mas isso não altera os dados. Apenas muda a coisa que referencia o container. Contanto que você NÃO mkfs.ext4 você deve estar bem.

Seu ponto de início de partição precisa ser o mesmo ou o sistema operacional não saberá como interpretar o que está por trás dele. O ponto final pode então ser mais adiante para criar uma partição maior.

Acho que o erro no comentário está relacionado a mover o ponto inicial. Você precisa iniciá-lo exatamente no mesmo ponto em que foi iniciado. O ponto final pode se mover.

Agradecemos a psusi por sugerir fdisk em vez de cfdisk e confirmar a questão do ponto de partida.

    
por RobotHumans 23.03.2012 / 11:26
4

Um exemplo:

/ dev / sdb2 é a partição / boot. É 100 MB, o que é bastante pequeno. Para aumentar esta partição ext4 em um sistema em execução, faça (como root ou sudo):

  

umount / boot

     

parted / dev / sdb

     

(parted) print

     
    

Modelo: ATA Patriot Torqx 2 (scsi)
       Disco / dev / sdb: 32.0 GB
       Tamanho do setor (lógico / físico): 512B / 512B
       Tabela de Partição: msdos

         

Number Start End Tamanho Tipo Sistema de arquivos Sinalizadores
        1 1049kB 12.9GB 12.9GB tipo primário = 83
        2 12.9GB 13.0GB 107MB tipo primário ext4 = 83

  
     

(parted) rm 2

     

(parted) mkpart

     
    

Tipo de partição? primário / estendido? primário
       Tipo de sistema de arquivos? [ext2]?
       Começar? 12,9 GB
       Fim? 13,4 GB

  
     

(parted) quit

     

resize2fs / dev / sdb2

     
    

resize2fs 1.42.6 (21-Set-2012)
     O sistema de arquivos em / dev / sdb2 é montado em / boot; redimensionamento on-line necessário
     old_desc_blocks = 1, new_desc_blocks = 2
     O sistema de arquivos em / dev / sdb2 agora tem 498688 blocos.

  

feito!

Todos os dados permanecem no lugar. / boot está pronto para uso e 472MB grande (parted não é tão seguro com os tamanhos, leia o manual para saber o porquê)

Todos os dados foram copiados antes, mas apenas como precaução. Eu recomendo fazer o mesmo.

Use o seguinte comando para encontrar o processo que está parando a desmontagem do / boot se ele falhar:

  

lsof / boot

Boa sorte!

    
por user157258 09.05.2013 / 22:57
0

Se você tentar excluir & amp; recriar uma partição, quando sua partição começou abaixo de 2048 você pode estar em algum problema, como eu estava com resize2fs .

Couldn't find valid filesystem superblock.

De fdisk versão 2.17.2 , o fdisk IIUC obriga você a começar a partir de 2048, a fim de garantir o seu disco drive está "alinhado corretamente". Então, se a sua partição original começou antes de 2048, você está em uma difícil jornada tentando recriar a partição.

A melhor abordagem é o rsync ao clonar um disco.

    
por hendry 08.10.2013 / 04:55