Como estender uma partição com um LVM e o volume físico e o volume lógico contidos?

33

No meu SSD de 240 GB, eu tinha duas primeiras partições, uma contendo o Volume Lógico com Linux Mint e a outra continha uma partição NTFS para compartilhar com o Windows. Agora eu removi a partição NTFS e quero estender meu grupo de volumes lógicos para usar o espaço em disco liberado.

Como estender o grupo de volumes , meu volume lógico contendo / home e o sistema de arquivos (ext4) em / home? Isso é possível fazer online?

PS: Sim, eu sei que tenho que fazer backup dos meus dados :)

/dev/sdb/  (240GB)
    linuxvg  (160GB) should use 100% of the disk space
        swap
        root
        home (ext4, 128GB) should be extended to use the remaining space

saída de sudo vgdisplay:

  --- Volume group ---
  VG Name               linuxvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               160,00 GiB
  PE Size               4,00 MiB
  Total PE              40959
  Alloc PE / Size       40959 / 160,00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ...

  --- Logical volume ---
  LV Path                /dev/linuxvg/swap
  LV Name                swap
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:32 +0200
  LV Status              available
  # open                 2
  LV Size                8,00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/linuxvg/root
  LV Name                root
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:43 +0200
  LV Status              available
  # open                 1
  LV Size                24,00 GiB
  Current LE             6144
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Path                /dev/linuxvg/home
  LV Name                home
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:57 +0200
  LV Status              available
  # open                 1
  LV Size                128,00 GiB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               ...
  PV Status             allocatable
  Total PE / Free PE    40959 / 0

saída de sudo fdisk -l:

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   468862127   234431063+  ee  GPT

Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 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/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 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
klingt.net
fonte
2
Bem, a maneira mais fácil seria apenas criar a partição NTFS e usá-la vgextend, em vez de removê-la completamente. Se você aumentar a partição PV existente, provavelmente precisará reiniciar, pois o Linux se recusa a reler a tabela de partições enquanto o disco estiver em uso. Trabalhar em torno deste online é estranho. - Por favor, mostre sua tabela de partição atual.
Frostschutz 31/10
Eu posso reiniciar se necessário.
Klingt.net

Respostas:

44

Você pode fazer isso de maneira bastante simples. Meio surpreso por não haver uma resposta para isso aqui já.

Você pode executar todo esse processo enquanto executa o sistema de arquivos que deseja redimensionar (sim, é seguro e totalmente suportado). Não há necessidade de CDs de resgate ou sistemas operacionais alternativos.

  1. Redimensione a partição (novamente, você pode fazer isso com o sistema em execução). O GParted é fácil de usar e suporta redimensionamento.
    Você também pode usar uma ferramenta de nível inferior, como fdisk. Mas você terá que excluir a partição e recriá-la. Apenas certifique-se de que a nova partição inicie exatamente no mesmo local.
  2. Reinicie. Como a tabela de partição foi modificada no sistema em execução, ela não entrará em vigor até que seja reiniciada.
  3. Execute pvresize /dev/sdXYpara que o LVM pegue o novo espaço.
  4. Redimensione o volume lógico com lvextend. Se você quiser usar a coisa toda lvextend -r -l +100%FREE /dev/VGNAME/LVNAME,. O -rredimensionará o sistema de arquivos também.
    Embora eu sempre recomendo não usar todo o grupo de volumes. Você nunca sabe o que precisará no futuro. Você sempre pode expandir mais tarde, não pode encolher.
Patrick
fonte
3
Gostaria de aceitar sua resposta, mas não funcionei como você sugeriu, porque o GParted não pode redimensionar a partição raiz em um sistema em execução (pelo menos no meu caso).
Klingt.net #
@HalosGhost Reverti sua edição. partprobe -snão faz o que você pensa que faz. O kernel não pegará o redimensionamento de uma partição que está sendo usada. partprobe -ssó funciona se a partição estava em uso durante o redimensionamento (portanto, quando o fdisk notificou o kernel, ela falhou), mas não está mais.
Patrick
@ Patrick, eu não adicionei a idéia para isso; Eu "aprimorei" a edição colocando o comando nas reticências (a guerra pelo código escapa aos salários!).
HalosGhost
Desculpe, leia o nome do evento errado da história. @Qetesh que se aplica a você, então :-) #
Patrick Patrick
1
É possível não reiniciar usando o "partx -u" da etapa 2, para dizer ao kernel para atualizar o tamanho da partição: funciona mesmo em partições ativas e pode ser verificado verificando /sys/.../sdXY/size antes e depois de.
AB
11

Nenhuma das respostas faz justiça ao poder do LVM.

(Isso é baseado no comentário @frostchutz da pergunta acima.)

Vamos ver os fatos:

  • O OP tem duas partições, sdb1 e sdb2 é um volume físico para LVM.
  • sdb1 é ntfs agora, precisamos dar esse espaço ao homevolume lógico dentro do linuxvggrupo de volumes.

Etapas do LVM usando o "caminho pragmático":

  • crie um volume físico no sdb1: pvcreate /dev/sdb1
  • adicione sdb1 a linuxvg:vgextend linuxvg /dev/sdb1
  • estenda o volume lógico homecom todo o espaço livre:lvextend -l +100%FREE /dev/linuxvg/home
  • estender ext4 fs: resize2f /dev/linuxvg/home

LVM permite grande nível de indireção. Um volume lógico está dentro de um grupo de volumes, que pode estar usando vários discos.

home -> linuxvg -> (sdb1, sdb2, sdc1)

http://tldp.org/HOWTO/LVM-HOWTO/createvgs.html

MGP
fonte
10

A questão foi resolvida depois de ler este post do blog. Escreverei a solução em forma abreviada:

  • inicialize a partir de um CD ao vivo com
  • use gdisk(se você usar GPT), caso contrário, você poderá usarfdisk
  • observe suas configurações de partição, no meu caso gdisk -l /dev/sdb
  • exclua sua partição com
  • crie uma nova partição com exatamente o mesmo alinhamento que a anterior (no meu exemplo, começando no bloco 2048)
  • escreva sua nova tabela de partição
  • execute partprobe -spara atualizar a tabela de partição sem uma reinicialização
  • redimensionar seu volume físico com pvresize /dev/sdb1ou onde estiver seu PV (use pvspara determinar se você não sabe)
  • agora redimensione seu volume lógico com lvextend -l +100%FREE /dev/file/of/your/lv, no meu casosudo lvextend -l +100%FREE /dev/linuxvg/home
  • redimensionar o sistema de arquivos sudo resize2fs /dev/linuxvg/home
  • primeiro verifique a consistência sudo e2fsck -f /dev/linuxvg/home
  • apreciar :)
klingt.net
fonte
Na verdade, você pode cortar cerca de metade dessas etapas e fazê-lo com apenas 1 reinicialização.
31313 Patrick
GParted se recusou a redimensionar a partição, porque estava bloqueada (este símbolo de chave).
Klingt.net
4

Algumas ótimas respostas já.

Se você estiver usando xfs, use o comando

xfs_growfs /mountpoint

em vez de resize2fs. Você pode fazer isso enquanto esse ponto de montagem estiver ativo, como se você tiver crescido a partição raiz, e não precisar reinicializar depois.

Paul M
fonte