Qual é a maneira mais fácil de descriptografar uma partição de disco?

5

Eu cometi um erro ao criptografar todo o volume físico do LVM (contém home, root e swap) ao instalar uma caixa do CentOS 6.4 (2.6.32-358.6.1.el6.x86_64). Logo percebi que mover arquivos leva uma quantidade horrenda de tempo devido a kcryptd rodando a 90% da CPU e que a criptografia não era realmente necessária, já que é apenas um servidor doméstico que não contém dados cruciais. No entanto, eu já o configurei e instalei muitos pacotes, ajustei o quanto o gerenciamento de energia foi feito e configurei todos os serviços.

Existe alguma maneira de remover a criptografia sem ter que reinstalar tudo e passar pela configuração novamente? Eu adoraria uma opção que levaria menos de 30 minutos, mas não tenho certeza se existe uma.

Além disso, se alguém tiver alguma recomendação sobre como tornar kcryptd mais fácil de usar, avise-me.

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
    
por mart1n 04.05.2013 / 17:24

1 resposta

3

Isso é possível. Requer

  1. outro Linux para inicializar (CD / DVD está OK)
  2. algum espaço extra fora do PV (100M seria bom)
  3. uma certa dose de destemor ...

Em seguida, você copia um bloco do volume criptografado para a área fora do PV e (após o sucesso) para o dispositivo de base não criptografado. Depois disso, você aumenta um contador na área segura para poder continuar a transformação em caso de falha. Dependendo do tipo de criptografia, pode ser necessário (ou pelo menos útil) copiar do final do dispositivo de bloco para o início.

Se esta é uma opção para você, posso oferecer algum código.

Editar 1

Desative a partição swap (comente em etc/fstab ). Em seguida, inicialize outro Linux (de CD / DVD) e abra o volume LUKS ( cryptsetup luksOpen /dev/sda2 lukspv ), mas não monte os LVs. Talvez você precise executar pvscan para que o dispositivo descriptografado seja reconhecido. Então vgchange -ay vg_centos pode ser necessário para ativar os volumes. Assim que eles estiverem, você poderá reduzir os sistemas de arquivos neles:

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

Depois disso, você pode reduzir o tamanho dos LVs (e excluir o swap LV):

# 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

Agora o PV pode ser reduzido (emocionante, eu nunca fiz isso sozinho ;-)):

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

Editar: Talvez pvmove seja necessário antes que pvresize possa ser chamado. Em caso de erro, consulte esta questão .

Antes de reduzir o tamanho da partição, faça um backup da tabela de partições e armazene-a no armazenamento externo .

sfdisk -d /dev/sda >sfdisk_dump_sda.txt

Você pode usar este arquivo para reduzir o tamanho da partição LUKS. Adapte o tamanho (em setores) a cerca de 6 GiB (reserva de pânico novamente ...): 12582912. Em seguida, carregue o arquivo adaptado:

sfdisk /dev/sda <sfdisk_dump_sda.mod.txt

Se tudo parecer bem após a reinicialização, você pode criar uma nova partição no espaço livre (na melhor das hipóteses, não consumindo todo o espaço, você provavelmente sabe por que ...) e torná-la uma partição LVM. Em seguida, torne a partição um PV do LVM ( pvcreate ), crie um novo grupo de volumes ( vgcreate ) e volumes lógicos para raiz, home e swap ( lvcreate ) e formate-os ( mke2fs -t ext4 , mkswap ). Então você pode copiar o conteúdo dos volumes de criptografia abertos. Finalmente você tem que reconfigurar seu gerenciador de partida para que ele use o novo rootfs.

A cópia em bloco que mencionei no começo não é necessária devido à grande quantidade de espaço livre.

    
por 04.05.2013 / 18:20