Como redimensionar a partição LVM raiz no Fedora sem LiveCD ou reinicialização

24

Eu tenho uma máquina virtual que recentemente teve sua imagem de disco aumentada de 20 GB para 50 GB e fdisk -lverifica se a VM pode ver esse novo tamanho. Agora, preciso redimensionar minha partição LVM raiz para preencher os 30 GB extras.

Encontrei vários artigos sobre o redimensionamento do LVM, mas os poucos que cobrem o redimensionamento da partição raiz afirmam que você precisa inicializar a partir de um LiveCD. Existe alguma maneira de fazer isso sem derrubar o servidor? O servidor é crítico, então eu gostaria de minimizar o tempo de inatividade.

Edit: Saída de fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 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
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 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
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Edit: Como redimensionar a partição física? O fdisk pode ver o espaço livre, mas não sei como redimensionar a partição LVM principal para usá-la. Tentei inicializar em um LiveCD e usar o resizecomando parted'd , mas tudo o que me dá é o erro "Não foi possível detectar o sistema de arquivos". Encontrei este guia , que diz que preciso excluir a partição e criar uma nova com o tamanho correto, mas isso parece muito perigoso.

Edição final: o resizecomando Parted é estranhamente incapaz de redimensionar partições LVM. Vai saber. Em vez disso, simplesmente excluí a partição antiga e criei uma nova com o novo intervalo, conforme descrito no link acima, e que redimensionou corretamente a partição LVM. Segui o conselho abaixo para redimensionar os volumes e sistemas de arquivos dentro da partição LVM.

Cerin
fonte
Mostre-nos a saída do fdisk - l. Você redimensionou a partição e não apenas o volume, certo?
Zoredache
@ Zoredache, eu adicionei essa saída à pergunta.
Cerin

Respostas:

32

Você pode aumentar um volume lógico online. Você precisaria desmontá-lo para reduzi-lo (o que requer um LiveCD / Rescue Mode).

  1. pvresize /dev/sda2(supondo que sua partição LVM seja sda2. Substitua conforme necessário.)
  2. lvextend /dev/mapper/root -l+100%FREE (ou, seja qual for o nome do seu volume lógico raiz.)
  3. resize2fs /dev/mapper/root (assumindo ext2 / 3/4)
Aaron Copley
fonte
1
Eu pessoalmente prefiro lvextend -L [size][unit] /dev/group/volume, mesmo porque eu posso estender um volume de 10 gigabytes, especificando-L +10G
Hubert Kario
Sim, mas o OP perguntou; Now I need to resize my root LVM partition to fill the extra 30GB.(Que é crescer o volume lógico pelo espaço livre disponível.)
Aaron Copley
"Novo tamanho (1076 extensões) corresponde ao tamanho existente (1076 extensões)"
Cerin
7
Eu pensei que esse truque era legal: se você adicionar a -ropção lvextend, ele irá engatar fsadmpara redimensionar o FS. Isso tornaria o terceiro passo redundante.
Jodie C
3
Observe que esta resposta assume que a partição já foi estendida para preencher o espaço livre e apenas os volumes lógicos precisam ser atualizados. O pvresize /dev/sda2comando não faz nada até que a partição / dev / sda2 tenha sido redimensionada com parted ou fdisk. Eu tive que redimensionar o meu com o fdisk, pois as partes no meu sistema não seriam exibidas ou não possuem um comando de redimensionamento. O redimensionamento do Fdisk envolve excluir e recriar a partição.
Jason
2

Seu sistema realmente mudou de 20 para 50 GB? Isso parece realmente estranho, já que seu dispositivo sda2 tem ~ 40 GB, lv_root mostra 36 GB e swap mostra 6 GB.

Sua saída de fdisk -lmostra o total de setores de /dev/sdaé 104857600. O último setor usado por /dev/sda2é 83886079. Isso me diz que você não ajustou o tamanho da partição para usar todo o espaço disponível na unidade. O comando pvresize não altera a tabela de partição. Você precisa alterar a tabela de partição primeiro.

Zoredache
fonte
1

Instale o gparted. Execute como root (use ssh -X ou x2go se remoto). Selecione a partição. Ele deve mostrar espaço livre após o final (à direita). Caso contrário, você precisará reiniciar sua máquina virtual para ver o novo tamanho do dispositivo virtual. Esse deve ser o tempo de inatividade mínimo com o systemd.

Clique com o botão direito e selecione redimensionar. Arraste o final para o final do disco. Certifique-se de não tocar no começo. O gparted é capaz de mover uma partição durante o redimensionamento, mas isso naturalmente destruirá um sistema em execução. Mas mover o final é bom. Revise a operação pendente que o gparted executará para garantir que você esteja estendendo e não movendo a partição. Clique em aplicar. O gparted mudará a partição no disco e emitirá o kernel ioctl para reler a tabela de partições, alterando também o tamanho do dispositivo de bloco ativo. Então, como ele é um PV LVM, ele executa pvresize para você. Saia do gparted e o vgs agora mostra seu novo espaço.

Ouvi rumores de que se separaram podem fazer tudo isso sem a sobrecarga de uma GUI, mas nunca consegui descobrir o vodu. Parted deve ser uma das piores interfaces CLI que eu já tentei usar.

Não use o fdisk, você deve excluir e realocar a partição para redimensionar e, por padrão, ela limpará a assinatura do LVM2 na gravação. Acho que vi uma opção "avançada" para desativar esse comportamento destrutivo, mas nunca o testei.

Você também pode tentar o cfdisk (amaldiçoa o fdisk). Pode ter um redimensionamento de partição utilizável. É bastante fácil executar o pvresize manualmente, e há um comando para informar ao kernel que releia a tabela de partição. Mas eu teria que testar para garantir que ela não limpe a assinatura LVM como o fdisk.

Stuart Gathman
fonte
0

Se o volume físico do LVM estiver em uma partição, não será possível redimensioná-lo sem a reinicialização.

Você pode editar a tabela de partição na unidade, mas o Linux se recusará a usá-la até a reinicialização.

Se você estiver usando o XFS, mude resize2fspara xfs_growfs.

Você pode exibir os PVs usados ​​e os LVs no grupo de volumes usando pvse lvs.

PV no disco bruto

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV em uma partição

Primeiro você tem que redimensionar a partição, utilização parted, fdiskou uma ferramenta similar para isso. Lembre-se de que essas ferramentas editam apenas a descrição da localização das partições, elas não movem os dados. Em outras palavras, você pode estender facilmente apenas a última partição do disco. Em seguida, reinicie sua máquina e depois disso, você poderá informar ao LVM que ele possui espaço adicional disponível:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
Hubert Kario
fonte
Usando um Live CD do Gparted, os sudo pvresize /dev/sda2relatórios "1 volume físico foram redimensionados", mas sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gfalham com o erro "espaço livre insuficiente: 320 extensões necessárias, mas apenas 0 disponíveis". sudo fdisk -lrelatórios que tenho 54G disponíveis, enquanto sudo pvdisplayrelatórios apenas 40G estão em uso. Por que o lvextend está falhando?
Cerin
1
@Cerin, você perdeu a primeira declaração de Huberts para um PV em uma partição. Primeiro você deve redimensionar a partição, usar a ferramenta parted, fdisk ou similar para isso .
Zoredache
@ Zoredache, Ok, bem, essa é basicamente a minha pergunta. Eu não sei como fazer isso. Acabei de inicializar o Gparted LiveCD e tentei usar o resizecomando parted para aumentar o tamanho da partição principal, mas ele me deu o erro "Não foi possível detectar o sistema de arquivos". Como você redimensiona a partição usando o parted ou o fdisk?
Cerin
@Cerin: procurar SF ou fazer outra pergunta
Hubert Kario
0

Eu consideraria verificar o ssm (system-storage-manager) se ele estiver disponível na sua distribuição.

Confira isso para um pouco mais de informação: /unix//a/293173

O ssm parece facilitar o redimensionamento de volumes lógicos sem ter que fazer tudo sozinho.

Eu era capaz de estender minha partição pessoal depois de reiniciar o sistema operacional e fazer o login primeiro como root. (Tinha que reiniciar duas vezes no total, mas funcionou no final e agora tenho 50G extras disponíveis na minha partição / home.)

Bryan Cole
fonte
0

Depois de combinar 25 instruções, finalmente tenho esta solução. Não requer cd ao vivo, está completamente em movimento.

Etapa 1. Formate a partição com parted (no gui). Neste exemplo, o tamanho máximo do disco aumentou de 8BG para 32 GB na caixa virtual.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Etapa 2. Crie um volume físico com base na nova partição

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Etapa 3. Adicione o volume físico ao grupo de volumes. Em uma instalação simples do servidor fedora 28, o grupo de volumes é chamado fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Etapa 4. Adicione o espaço disponível no grupo de volumes ao volume lógico. Em uma instalação simples do servidor fedora 28, o volume lógico é chamado de raiz.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Etapa 5. Diga ao sistema de arquivos no volume lógico para usar o espaço extra. No fedora, o sistema de arquivos é xfs.

Atenção! xfs_growfs usa o ponto de montagem para identificar o sistema de arquivos, não o nome do sistema de arquivos encontrado na saída df !!!!!!!

O comando 'xfs_growfs / dev / mapper / fedora-root' dirá que / dev / mapper / fedora-root não é um sistema de arquivos XFS montado. Se você estiver usando um sistema de arquivos diferente, consulte https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Etapa 6. Aproveite

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....
Lieven Vanlerberghe
fonte
-1

Tente testdisk

sudo dnf instalar testdisk

sudo testdisk

Basta definir criar um arquivo de log. Em seguida, listará as partições, - selecione a mídia / partição -, digite - e analise - pesquisa rápida - selecione e escreva

Salil Kothadia
fonte