¿Cuál es la forma más sencilla de descifrar una partición de disco?

¿Cuál es la forma más sencilla de descifrar una partición de disco?

Cometí un error al cifrar todo el volumen físico LVM (contiene home, root y swap) al instalar una caja CentOS 6.4 (2.6.32-358.6.1.el6.x86_64). Pronto me di cuenta de que mover archivos requiere una enorme cantidad de tiempo debido a que kcryptdse ejecuta al 90% de la CPU y que el cifrado no era realmente necesario ya que es solo un servidor doméstico que no contiene datos cruciales. Sin embargo, ya lo configuré e instalé muchos paquetes, lo ajusté en lo que respecta a la administración de energía y configuré todos los servicios.

¿Hay alguna forma de eliminar el cifrado sin tener que reinstalar todo y realizar la configuración nuevamente? Me encantaría una opción que tomaría menos de 30 minutos, pero no estoy seguro de que exista.

Además, si alguien tiene alguna recomendación sobre cómo hacerlo kcryptdmás fácil de usar, hágamelo saber.

Editar 1

~]# fdisk -l /dev/sda

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000078c9

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       19458   155777024   83  Linux

~]# dmsetup ls
vg_centos-lv_home       (253:3)
vg_centos-lv_swap       (253:2)
vg_centos-lv_root       (253:1)
luks-2ffcc00c-6d6e-401c-a32c-9c82995ad372       (253:0)

~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/mapper/luks-2ffcc00c-6d6e-401c-a32c-9c82995ad372
  VG Name               vg_centos
  PV Size               148.56 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              38030
  Free PE               0
  Allocated PE          38030
  PV UUID               euUB66-TP3M-ffKp-WhF5-vKI5-obqK-0qKoyZ

Editar 2

~]# df -h / /home /boot
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                       50G  2.3G   45G   5% /
/dev/mapper/vg_centos-lv_home
                       94G  1.3G   88G   2% /home
/dev/sda1             485M   53M  408M  12% /boot

Respuesta1

Eso es posible. Requiere

  1. otro Linux para arrancar (CD/DVD está bien)
  2. algo de espacio libre fuera del fotovoltaico (100M sería bueno)
  3. cierta cantidad de valentía...

Luego copia un bloque del volumen cifrado al área fuera del PV y (después del éxito) al dispositivo base no cifrado. Después de eso, aumentas un contador en el área segura para que puedas continuar la transformación en caso de un accidente. Dependiendo del tipo de cifrado, puede ser necesario (o al menos útil) copiar desde el final del dispositivo de bloque hasta el principio.

Si esta es una opción para usted, puedo ofrecerle algún código.

Editar 1

Desactive la partición de intercambio (coméntela en etc/fstab). Luego inicie otro Linux (desde CD/DVD) y abra el volumen LUKS ( cryptsetup luksOpen /dev/sda2 lukspv) pero no monte los LV. Tal vez necesite ejecutar pvscandespués para que se reconozca el dispositivo descifrado. Entonces vgchange -ay vg_centospuede ser necesario activar los volúmenes. Tan pronto como lo estén, puede reducir los sistemas de archivos que contienen:

e2fsck -f /dev/mapper/vg_centos-lv_root
resize2fs -p /dev/mapper/vg_centos-lv_root 3000M
e2fsck -f /dev/mapper/vg_centos-lv_home
resize2fs -p /dev/mapper/vg_centos-lv_home 2000M

Después de eso, puede reducir el tamaño de los LV (y eliminar el LV de intercambio):

# with some panic reserve... shouldn't be necessary
lvresize --size 3100M /dev/mapper/vg_centos-lv_root
lvresize --size 2100M /dev/mapper/vg_centos-lv_home
lvremove /dev/mapper/vg_centos-lv_swap

# vgdisplay should show now that most of the VG is free space
vgdisplay

Ahora el PV se puede reducir (emocionante, nunca lo he hecho yo mismo ;-)):

vgchange -an vg_centos
pvresize --setphysicalvolumesize 5500M /dev/mapper/lukspv

Editar:Quizás pvmovesea necesario antes de pvresizepoder ser llamado. En caso de error veresta pregunta.

Antes de reducir el tamaño de la partición, debe hacer una copia de seguridad de la tabla de particiones.y guárdelo en un almacenamiento externo.

sfdisk -d /dev/sda >sfdisk_dump_sda.txt

Puede utilizar este archivo para reducir el tamaño de la partición LUKS. Adapte el tamaño (en sectores) a unos 6 GiB (reserva de pánico otra vez...): 12582912. Luego cargue el archivo adaptado:

sfdisk /dev/sda <sfdisk_dump_sda.mod.txt

Si todo se ve bien después de reiniciar, puede crear una nueva partición en el espacio libre (en el mejor de los casos, sin consumir todo el espacio, mientras tanto probablemente sepa por qué...) y convertirla en una partición LVM. Luego convierta la partición en un LVM PV ( pvcreate), cree un nuevo grupo de volúmenes ( vgcreate) y volúmenes lógicos para raíz, inicio e intercambio ( lvcreate) y formatéelos ( mke2fs -t ext4, mkswap). Luego puede copiar el contenido de los volúmenes criptográficos abiertos. Finalmente tienes que reconfigurar tu gestor de arranque para que utilice el nuevo rootfs.

La copia en bloque que mencioné al principio no es necesaria debido a la gran cantidad de espacio libre.

información relacionada