Cómo redimensionar las particiones encriptadas por defecto en Trisquel

Esta guía asume que usted ha usado el instalador de imágenes Live USB/DVD ISO de Ubiquity y ha elegido encriptar su disco usando la opción por defecto haciendo click en "Siguiente" hasta que el sistema se instale.

Para esta guía vamos a utilizar:
Disco: 100GB
El disco se identifica como: vda

Después de un par de días o semanas e instalando todos tus programas habituales, aplicando actualizaciones, el espacio disponible en tu partición raíz puede ser bastante bajo, mientras que la partición home tiene suficiente espacio disponible. Puedes empezar a eliminar programas innecesarios, pero incluso eso tiene un límite.

Revisemos el caso en cuestión:

DETALLES DE LA PARTICIÓN DEL DISCO

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  /boot/efi
├─vda3                  252:3    0  1.7G  0 part  /boot
└─vda4                  252:4    0 97.8G  0 part  
  └─vda4_crypt          253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 23.3G  0 lvm   /
    ├─vgtrisquel-swap_1 253:2    0  3.9G  0 lvm   [SWAP]
    └─vgtrisquel-home   253:3    0 70.6G  0 lvm   /home

Esto muestra que
- vda4 contiene un volumen cifrado (TYPE: crypt)
- contiene 3 volúmenes lógicos (TYPE: lvm)
- hay volúmenes separados para / (root) y /home

Esta guía sólo es aplicable si puedes ver esto.

$ df -h -t ext4

S.ficheros                 Tamaño Usados  Disp Uso% Montado en
/dev/mapper/vgtrisquel-root   23G    19G  3.5G  84% /
/dev/vda3                    1.7G   173M  1.4G  12% /boot
/dev/mapper/vgtrisquel-home   69G   4.4M   66G   1% /home

Si /home no aparece con este comando, esta guía no es aplicable.

Lo vemos:
/ (llamado "root") está usado al 80% y sólo dispone de 3,5G.
/home está casi vacío y tiene 65,4G disponibles.

Así que podríamos tomar 10 GB de home para root.

OBJETIVO

Mover 10 GBs del volumen home al volumen raíz (root).

REQUISITOS

Consigue una ISO de Trisquel, verifícala y prepara un Live USB desde el que arrancar, hay muchas formas de hacerlo en la documentación.

PROCESO

1. Habilitar partición encriptada LVM

Comencemos arrancando en el Live ISO, y seleccionemos «Probar sin instalar», luego familiaricémonos con los detalles del disco usando el sistema en vivo. En una terminal:

$ lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0  2.8G  1 loop /rofs
sr0     11:0    1  2.9G  0 rom  /cdrom
vda    252:0    0  100G  0 disk 
├─vda1 252:1    0    1M  0 part 
├─vda2 252:2    0  513M  0 part 
├─vda3 252:3    0  1.7G  0 part 
└─vda4 252:4    0 97.8G  0 part

Podemos identificar que vda4 es la partición encriptada principal con todos los datos; así que abrimos el dispositivo encriptado, que requerirá la clave de acceso

$ sudo cryptsetup luksOpen /dev/vda4 mydisk
Introduzca la frase de contraseña para /dev/vda4:

ahora podemos ver las particiones en el interior del bloque encriptado en un detalle;

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
loop0                     7:0    0  2.8G  1 loop  /rofs
sr0                      11:0    1  2.9G  0 rom   /cdrom
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  
├─vda3                  252:3    0  1.7G  0 part  
└─vda4                  252:4    0 97.8G  0 part  
  └─mydisk              253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 23.3G  0 lvm   
    ├─vgtrisquel-swap_1 253:2    0  3.9G  0 lvm   
    └─vgtrisquel-home   253:3    0 70.6G  0 lvm

2. Redimensionar HOME

Asegúrese de obtener los nombres LV (volumen lógico) y VG (grupo de volúmenes) correctos:

$ sudo lvs 

  LV     VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home   vgtrisquel -wi-a----- 70.64g                                                    
  root   vgtrisquel -wi-a----- 23.28g                                                    
  swap_1 vgtrisquel -wi-a----- <3.86g

Necesitamos especificar el volumen como VG/LV. Aquí, queremos reducir vgtrisquel/home en 10 GB y redimensionar el sistema de ficheros:

$ sudo lvresize -r -L -10G vgtrisquel/home

fsck from util-linux 2.37.2
/dev/mapper/vgtrisquel-home: 151/4636672 files (2.0% non-contiguous), 436537/18519040 blocks
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/mapper/vgtrisquel-home to 15897600 (4k) blocks.
The filesystem on /dev/mapper/vgtrisquel-home is now 15897600 (4k) blocks long.

  Size of logical volume vgtrisquel/home changed from 70.64 GiB (18085 extents) to 60.64 GiB (15525 extents).
  Logical volume vgtrisquel/home successfully resized.

Ahora:

$ sudo lvs 

  LV     VG         Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home   vgtrisquel -wi-a----- 60.64g                                                    
  root   vgtrisquel -wi-a----- 23.28g                                                    
  swap_1 vgtrisquel -wi-a----- <3.86g

Vemos que vgtrisquel/home se ha reducido de 70,64g a 60,64g.

Observando el volumen del grupo vgtrisquel:

$ sudo pvs

  PV                 VG         Fmt  Attr PSize   PFree 
  /dev/mapper/mydisk vgtrisquel lvm2 a--  <97.81g 10.02g

La última columna muestra que vgtrisquel tiene 10,02g libres.

3. Redimensionar ROOT

El volumen root es vgtrisquel/root. Aumentemos su tamaño para ocupar todo el espacio libre disponible en el grupo de volúmenes:

$ sudo lvresize -r -l +100%FREE vgtrisquel/root

fsck from util-linux 2.37.2
/dev/mapper/vgtrisquel-root: 303601/1525920 files (0.2% non-contiguous), 4888274/6103040 blocks
  Size of logical volume vgtrisquel/root changed from 23.28 GiB (5960 extents) to 33.30 GiB (8526 extents).
  Logical volume vgtrisquel/root successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/mapper/vgtrisquel-root to 8730624 (4k) blocks.
The filesystem on /dev/mapper/vgtrisquel-root is now 8730624 (4k) blocks long.

4. Confirmar el tamaño de las particiones

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
loop0                     7:0    0  2.8G  1 loop  /rofs
sr0                      11:0    1  2.9G  0 rom   /cdrom
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  
├─vda3                  252:3    0  1.7G  0 part  
└─vda4                  252:4    0 97.8G  0 part  
  └─mydisk              253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 33.3G  0 lvm   
    ├─vgtrisquel-swap_1 253:2    0  3.9G  0 lvm   
    └─vgtrisquel-home   253:3    0 60.6G  0 lvm

Así que root es ahora 33,3 GB en lugar de 23,3 GB.

5. Desmontar y reiniciar

En este punto podemos desmontar los volúmenes activos

$ sudo vgchange -an

  0 logical volume(s) in volume group "vgtrisquel" now active

Vemos que falta algo más,

$ lsblk

NAME           MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
loop0            7:0    0  2.8G  1 loop  /rofs
sr0             11:0    1  2.9G  0 rom   /cdrom
vda            252:0    0  100G  0 disk  
├─vda1         252:1    0    1M  0 part  
├─vda2         252:2    0  513M  0 part  
├─vda3         252:3    0  1.7G  0 part  
└─vda4         252:4    0 97.8G  0 part  
  └─mydisk     253:0    0 97.8G  0 crypt

Así que procedemos a cerrar el dispositivo encriptado,

$ sudo cryptsetup luksClose mydisk

Ahora es seguro reiniciar el sistema y confirmar el nuevo tamaño:

$ df -h

Filesystem                   Size  Used Avail Use% Mounted on
tmpfs                        392M  1.3M  390M   1% /run
/dev/mapper/vgtrisquel-root   33G   19G   13G  59% /
tmpfs                        2.0G     0  2.0G   0% /dev/shm
tmpfs                        5.0M  4.0K  5.0M   1% /run/lock
/dev/vda3                    1.7G  173M  1.4G  12% /boot
/dev/vda2                    512M  296K  512M   1% /boot/efi
/dev/mapper/vgtrisquel-home   60G  4.4M   57G   1% /home
tmpfs                        392M  120K  392M   1% /run/user/1000/

Ahora tenemos 13 GB disponibles para root, ¡¡éxito!!

Entonces... ¿qué pasa con el SWAP?

Hay muchas discusiones sobre cuánta swap podemos necesitar, si sigue siendo útil tener una partición swap, etc.

En cualquier caso, si quieres aumentar el tamaño de tu partición swap, verás que es muy similar al procedimiento anterior.

En esta guía, continuaremos con el mismo VM, y tamaños que dejamos antes:

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  /boot/efi
├─vda3                  252:3    0  1.7G  0 part  /boot
└─vda4                  252:4    0 97.8G  0 part  
  └─vda4_crypt          253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 33.3G  0 lvm   /
    ├─vgtrisquel-swap_1 253:2    0  3.9G  0 lvm   [SWAP]
    └─vgtrisquel-home   253:3    0 60.6G  0 lvm   /home

El tamaño actual del swap es de ~4GB, añadamos otros 4GB desde el volumen home.

OBJETIVO:

Mover 4GB a swap desde home.

Vamos a tratar de acelerar las cosas; como antes, vamos a empezar por arrancar en la Live ISO, una vez en la sesión en vivo:

Confirmemos el nombre de la partición encriptada es vda4,

$ lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0  2.8G  1 loop /rofs
sr0     11:0    1  2.9G  0 rom  /cdrom
vda    252:0    0  100G  0 disk 
├─vda1 252:1    0    1M  0 part 
├─vda2 252:2    0  513M  0 part 
├─vda3 252:3    0  1.7G  0 part 
└─vda4 252:4    0 97.8G  0 part

Abre el dispositivo encriptado, te pedirá la frase de contraseña:

$ sudo cryptsetup luksOpen /dev/vda4 mydisk
Enter passphrase for /dev/vda4:

Entonces:

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
loop0                     7:0    0  2.8G  1 loop  /rofs
sr0                      11:0    1  2.9G  0 rom   /cdrom
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  
├─vda3                  252:3    0  1.7G  0 part  
└─vda4                  252:4    0 97.8G  0 part  
  └─mydisk              253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 33.3G  0 lvm   
    ├─vgtrisquel-swap_1 253:2    0  3.9G  0 lvm   
    └─vgtrisquel-home   253:3    0 60.6G  0 lvm

Reduzcamos vgtrisquel/home en 4G:

$ sudo lvresize -r -L -4G vgtrisquel/home

fsck from util-linux 2.37.2
/dev/mapper/vgtrisquel-home: 151/3981312 files (2.0% non-contiguous), 395404/15897600 blocks
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/mapper/vgtrisquel-home to 14849024 (4k) blocks.
The filesystem on /dev/mapper/vgtrisquel-home is now 14849024 (4k) blocks long.

  Size of logical volume vgtrisquel/home changed from 60.64 GiB (15525 extents) to 56.64 GiB (14501 extents).
  Logical volume vgtrisquel/home successfully resized.

Es hora de ampliar el volumen de intercambio (swap),

$ sudo lvresize -l +100%FREE vgtrisquel/swap_1

  Size of logical volume vgtrisquel/swap_1 changed from <3.86 GiB (988 extents) to <7.86 GiB (2012 extents).
  Logical volume vgtrisquel/swap_1 successfully resized.

Entonces, confirmamos:

$ lsblk

NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
loop0                     7:0    0  2.8G  1 loop  /rofs
sr0                      11:0    1  2.9G  0 rom   /cdrom
vda                     252:0    0  100G  0 disk  
├─vda1                  252:1    0    1M  0 part  
├─vda2                  252:2    0  513M  0 part  
├─vda3                  252:3    0  1.7G  0 part  
└─vda4                  252:4    0 97.8G  0 part  
  └─mydisk              253:0    0 97.8G  0 crypt 
    ├─vgtrisquel-root   253:1    0 33.3G  0 lvm   /mnt
    ├─vgtrisquel-swap_1 253:2    0  7.9G  0 lvm   [SWAP]
    └─vgtrisquel-home   253:3    0 56.6G  0 lvm

El intercambio es ahora de 7.9 GB, ¡¡éxito!!

Todavía tenemos que inicializar el espacio de intercambio (swap) ampliado:

$ sudo mkswap /dev/vgtrisquel/swap_1

mkswap: /dev/mapper/vgtrisquel-swap_1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 7.9 GiB (8438935552 bytes)
no label, UUID=4fc8c0c8-03cd-42c9-8e9a-66396ca98636

Ahora, comprobamos el fstab:

$ sudo mount /dev/mapper/vgtrisquel-root /mnt

$ grep swap /mnt/etc/fstab

La salida puede ser como una de las dos:
1. /dev/mapper/vgtrisquel-swap_1 none swap sw 0 0
2. UUID=368f4c5d-6b94-48d5-b44c-f8cef74af6df none swap sw 0 0

Sólo si es como el 2. (si no, sáltate esto):

$ sudo sed -i '/swap/d' /mnt/etc/fstab

$ echo UUID=$(lsblk -n -o UUID /dev/vgtrisquel/swap_1) none swap sw 0 0 | sudo tee -a /mnt/etc/fstab 1>/dev/null

Ahora, cerramos:

$ sudo umount /mnt

$ sudo vgchange -an
  0 logical volume(s) in volume group "vgtrisquel" now active

$ sudo cryptsetup luksClose mydisk

Hora de reiniciar.

Revisiones

11/08/2024 - 15:15
iShareFreedom