Estenda uma partição criptografada LUKS para preencher o disco

Estenda uma partição criptografada LUKS para preencher o disco

Recentemente, atualizei meu disco de um SSD de 128 GB para um SSD de 512 GB. A partição / é criptografada com LUKS. Estou procurando ajuda para estender a partição para usar todo o espaço livre no novo disco. Eu já coloquei a unidade antiga na nova:

[root@localhost ~]# fdisk -l /dev/sda
Disk /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00009f33

Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1  *       2048   1026047   1024000   500M 83 Linux
/dev/sda2       1026048 250064895 249038848 118.8G 83 Linux

Há cerca de 380 GB de espaço não utilizado após o sda2.

Informações mais relevantes:

[root@localhost ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  fedora_chocbar   1   3   0 wz--n- 118.75g 4.00m

[root@localhost ~]# lvs
  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home fedora_chocbar -wi-a----- 85.55g                                                    
  root fedora_chocbar -wi-a----- 29.30g                                                    
  swap fedora_chocbar -wi-a-----  3.89g

[root@localhost ~]# pvs
  PV                    VG             Fmt  Attr PSize   PFree
  /dev/mapper/encrypted fedora_chocbar lvm2 a--  118.75g 4.00m

Parece haver muitas informações sobre como fazer isso, mas muito pouca explicação. Agradeço qualquer ajuda sobre isso.

Responder1

OK! A resposta definitiva finalmente. Meus passos para expandir um volume criptografado LUKS...

  1. cryptsetup luksOpen /dev/sda2 crypt-volumepara abrir o volume criptografado.
  2. parted /dev/sdapara estender a partição. resizepart NUMBER END.
  3. vgchange -a n fedora_chocbar. Pare de usar o VG para poder dar o próximo passo.
  4. cryptsetup luksClose crypt-volume. Feche o volume criptografado para as próximas etapas.
  5. cryptsetup luksOpen /dev/sda2 crypt-volume. Abra novamente.
  6. cryptsetup resize crypt-volume. Redimensionará automaticamente o volume LUKS para o espaço disponível.
  7. vgchange -a y fedora_chocbar. Ative o VG.
  8. pvresize /dev/mapper/crypt-volume. Redimensione o PV.
  9. lvresize -l+100%FREE /dev/fedora_chocbar/home. Redimensione o LV de /home para 100% do espaço livre.
  10. e2fsck -f /dev/mapper/fedora_chocbar-home. Jogue um pouco de magia fsck no fs redimensionado.
  11. resize2fs /dev/mapper/fedora_chocbar-home. Redimensione o sistema de arquivos em /home (usa automaticamente 100% de espaço livre)

Espero que alguém ache isso útil. Agora tenho mais de 300 GB para minhas VMs de teste em meu laptop!

Responder2

Para aqueles que têm a resposta para descobrir como simplesmente redimensionar uma partição LUKS para o tamanho do contêiner redimensionado, os comandos são os seguintes:

  • com volume criptografado LUKSabertoe o volume aberto mapeado como opened-volume, execute

    sudo cryptsetup resize /dev/mapper/opened-volume
    

    para redimensionar o volume criptografado LUKS online...

  • em seguida, redimensione o conteúdo.

    • Por exemplo, se for umSistema de arquivos Ext4, você pode redimensioná-lo mesmo se estiver montado com

      sudo resize2fs /dev/mapper/opened-volume
      
    • Ou se você tivesse umLVMvolume físico dentroo volume criptografado LUKS, basta usar pvresize:

      sudo pvresize /dev/mapper/opened-volume
      

Eu fiz isso com um sistema de arquivos montado/PV ativado sem interrupção; foi possível redimensionar o contêiner sem desmontá-lo primeiro porque o volume criptografado estava em um volume lógico LVM (usando lvresize) / usando partedpara redimensionar uma partição GPT para conter o espaço livre que o seguiu imediatamente!

Responder3

Encontrei uma solução muito mais fácil. Execute o Xubuntu live, instale e inicie o gerenciador de partições. Ele pode muito bem lidar com partições criptografadas.

Os detalhes completos estão aqui:http://e1z.ca/devlog/encrypted_partition_resize.html

Responder4

Redimensionar a partir da linha de comando com partedsem LVM(em uma tabela de partição ms-dos para maior diversão).

Expandi meu VPS de 50G para 150G.

Crypttab lê:

# cat /etc/crypttab 
vda5_crypt UUID=c5e67d21-6af4-4d55-a4bc-2978e50c00c3 none luks
vda6_crypt /dev/vda6 /dev/urandom cipher=aes-xts-plain64,size=256,swap

Tamanhos:

# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vda5_crypt   47G   12G   35G  26% /
/dev/vda1               641M   63M  532M  11% /boot

O layout da partição é:

# parted /dev/vda print                                                        
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 161GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  700MB   699MB   primary   ext4         boot
 2      701MB   53.7GB  53.0GB  extended
 5      701MB   51.7GB  51.0GB  logical
 6      51.7GB  53.7GB  1985MB  logical

Como você pode ver, minha partição swap (partição 6) está no caminho; preciso removê-lo para expandir a partição. Primeiro desligue a troca:

swapoff -a && free -lm

A linha 'Swap:' deve conter apenas zeros.

Agora, o complicado é redimensionar as partições e restaurá-las antes de reiniciar e expandir (o parted irá reclamar que não pode informar o kernel, eu (eu) ignorei isso várias vezes).

Primeiro remova a partição swap:

parted /dev/vda
(parted) rm 6
Error: Partition(s) 6 on /dev/vda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel? i 

Estenda a partição lógica (2) para conter as partições estendidas, até o final do disco (-1):

(parted) resizepart 2 -1

Redimensione a partição lógica 5, mantendo espaço para a partição swap (o parted irá reclamar novamente, basta continuar e (i)ignorar:

(parted) resizepart 5 -4G

Recrie a partição swap - como você pode ver no crypttab ela é aleatória a cada inicialização, então não nos preocupamos com o UUID - não é bom para suspender - mas para servidores e sem suspensão é a forma preferida. Crie-o do final da partição anterior (157G) até o final do disco (-1):

(parted) mkpart                                                           
Partition type?  primary/logical? l                                       
File system type?  [ext2]? linux-swap                                     
Start? 157GB                                                              
End? -1    

Confira os resultados:

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

Number  Start   End    Size    Type      File system     Flags
 1      1049kB  700MB  699MB   primary   ext4            boot
 2      701MB   161GB  160GB   extended
 5      701MB   157GB  156GB   logical
 6      157GB   161GB  3998MB  logical   linux-swap(v1)  lba
(parted) quit

Agorareinícioe você normalmente deve inicializar o sistema, desbloqueando a partição.

Após a reinicialização, verifique seu swapspace:

# swapon
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition 3.7G   0B   -1

É hora de expandir! Use 'cryptsetup resize /dev/mapper/opened-volume' e 'resize2fs /dev/mapper/opened-volume'

cryptsetup resize /dev/mapper/vda5_crypt
resize2fs /dev/mapper/vda5_crypt

Resultando no meu volume criptografado redimensionado para 132G:

# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/vda5_crypt  144G   12G  132G   9% /
/dev/vda1               641M   63M  532M  11% /boot

informação relacionada