解密磁盘分区的最简单方法是什么?

解密磁盘分区的最简单方法是什么?

在安装 CentOS 6.4 (2.6.32-358.6.1.el6.x86_64) 盒子时,我错误地加密了整个 LVM 物理卷(包含 home、root 和 swap)。我很快意识到,由于kcryptdCPU 占用率为 90%,移动文件需要花费大量时间,而且加密并不是真正必要的,因为它只是一个不包含关键数据的家庭服务器。但是,我已经配置了它并安装了负载的软件包,调整了电源管理,并设置了所有服务。

有没有什么方法可以删除加密,而不必重新安装整个系统并重新进行配置?我想要一个不到 30 分钟的选项,但我不确定是否存在。

另外,如果有人对如何变得kcryptd更易于使用有任何建议,请告诉我。

编辑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

编辑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

答案1

这是可能的。这个需要

  1. 另一个 Linux 启动(CD/DVD 都可以)
  2. PV外有一些空闲空间(100M就可以了)
  3. 一定程度的无所畏惧……

然后,将块从加密卷复制到 PV 外部的区域,并(成功后)复制到未加密的基本设备。之后,您在安全区域增加一个计数器,以便在发生崩溃时可以继续转换。根据加密的类型,可能有必要(或至少有用)从块设备的末尾复制到开头。

如果这是您的选择,那么我可以提供一些代码。

编辑1

停用交换分区(在 中将其注释掉etc/fstab)。然后启动另一个 Linux(从 CD/DVD)并打开 LUKS 卷 ( cryptsetup luksOpen /dev/sda2 lukspv),但不挂载 LV。也许您需要pvscan稍后运行才能识别解密的设备。然后vgchange -ay vg_centos可能需要激活卷。一旦它们存在,您就可以减少其中的文件系统:

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

之后,您可以减小 LV 的大小(并删除交换 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

现在PV可以减少(令人兴奋,我自己从来没有这样做过;-)):

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

编辑:也许在调用pvmove之前需要。pvresize如果出现错误,请参阅这个问题

在减少分区大小之前,您应该备份分区表并将其存储在外部存储器上

sfdisk -d /dev/sda >sfdisk_dump_sda.txt

您可以使用此文件来减小 LUKS 分区的大小。将大小(以扇区为单位)调整为大约 6 GiB(再次出现恐慌保留...):12582912。然后加载调整后的文件:

sfdisk /dev/sda <sfdisk_dump_sda.mod.txt

如果重新启动后一切看起来都很好,您可以在可用空间中创建一个新分区(最好不要消耗所有空间,同时您可能知道为什么......)并将其设为 LVM 分区。然后将该分区设为 LVM PV ( pvcreate),创建新卷组 ( vgcreate) 以及根卷、主卷和交换卷 ( lvcreate) 并格式化它们 ( mke2fs -t ext4, mkswap)。然后您可以复制打开的加密卷的内容。最后,您必须重新配置引导加载程序,以便它使用新的 rootfs。

由于可用空间很大,所以我在开始时提到的块复制是没有必要的。

相关内容