Eu tenho uma VM com um disco virtual (visível como /dev/sdb
) com tamanho de 10G
O administrador aumentou o tamanho do disco virtual para 60G.
Reiniciei a máquina e vejo agora que o disco está maior.
root@DMZMHLX3:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 60G 0 disk
└─sdb1 8:17 0 10G 0 part /app
...
Agora gostaria de adicionar outra partição:
gdisk me diz que o disco tem tamanho de 60G, mas que o último setor utilizável é um setor correspondente ao antigo tamanho da imagem de disco de 10G:
root@DMZMHLX3:~# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 125829120 sectors, 60.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): FCE659D1-3690-4C3C-93EC-79B51EE8556D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20969471 10.0 GiB 8300
o último setor utilizável deve ser algo como 125829120 e não 20971486.
Portanto, embora o tamanho da imagem do disco tenha aumentado e a VM veja a mudança, não sei como usar o espaço recém-disponível.
fdisk me mostra:
root@DMZMHLX3:~# fdisk -l /dev/sdb
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
Disk /dev/sdb: 60 GiB, 64424509440 bytes, 125829120 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: gpt
Disk identifier: FCE659D1-3690-4C3C-93EC-79B51EE8556D
Device Start End Sectors Size Type
/dev/sdb1 2048 20969471 20967424 10G Linux filesystem
Ele reconhece uma incompatibilidade:
A incompatibilidade de tamanho GPT PMBR (20971519! = 125829119) será corrigida por w (rite). Mas ao tentar escrever o fdisk falha:
Command (m for help): w
GPT PMBR size mismatch (20971519 != 125829119) will be corrected by w(rite).
fdisk: failed to write disklabel: Invalid argument
root@xxx:~#
Como posso corrigir esse problema?
O objetivo final é aumentar o tamanho da partição existente, mas mesmo que eu pudesse adicionar novas partições, já ficaria feliz
Responder1
De acordo comO redimensionamento da partição fdisk falha com argumento inválidopostar, parece que você usase separaram(por exemplo sudo parted -l
) e deixe "consertar"o problema com a tabela de partição não cobrindo todo o disco ou algo assim.
Depois que essa correção se aplica a essa ferramenta para solucionar esse problema, basta seguir em frente com o sudo fdisk /dev/sdb1
comando e, aparentemente, executar sudo resize2fs /dev/sdb1
depois para que as alterações sejam aplicadas.
Importante: Não se esqueça de fazer backups completos do sistema antes de fazer qualquer alteração na partição do disco.
Consegui resolver isso de forma bastante simples. Instalei o parted e quando executei ele me informou que a tabela de partições não cobria o disco inteiro (duh), então me pediu Corrigir/Cancelar ao qual respondi com Correção.
Aparentemente, isso funcionou, pois consegui modificar a partição para o tamanho total usando
sudo fdisk /dev/vda
, mas depois precisei executarsudo resize2fs /dev/vda3
para que as alterações fossem aplicadas.
Além disso, há conselhos de outras pessoas sobre oO redimensionamento da partição fdisk falha com argumento inválidoposte na forma de respostas e comentários que também podem ser úteis e benéficos.
Recursos de apoio
Responder2
A postagem Estendendo uma partição em um disco VMware no Linux tem esse procedimento:
- Repare a tabela GPT com parted:
sudo parted -l
Pare todos os serviços que acessam esses discos e desmonte o disco, por exemplo:
sudo systemctl stop jenkins.service sudo systemctl stop apache2.service sudo umount /dev/sdb1
Esta etapa pode ser evitada inicializando a partir do disco GParted, conforme descrito abaixo.
Estenda a partição do fdisk:
sudo fdisk /dev/sdb
Como ampliar o disco de dentro da VM requer a interrupção de qualquer serviço que possa estar usando o disco, isso pode ser evitado inicializando a VM com GParted.
O artigo Use GParted para aumentar o tamanho do disco de uma partição nativa do Linux descreve todo o procedimento em detalhes.
Responder3
A razão é que o GPT possui uma cópia de backup da tabela de partição colocada no final do disco, portanto, mesmo quando o disco tem um "novo final", o backup não vai automaticamente para ele e limita os blocos utilizáveis ao antigo "área".
Você pode simplesmente "zapar" (limpar) o GPT ( x
e depois z
entrar gdisk
) e, em seguida, criar um novo com as mesmas entradas de partição (inserindo o mesmo início e, opcionalmente, o mesmo final).
Se você estiver inicializando via UEFI, não há problema em eliminar o MBR de proteção também, pois não deve haver nenhum código de inicialização que precise ser mantido.
EDIT: Na verdade, parece que você pode simplesmente x
e depois e
entrar gdisk
.