ディスク パーティションを復号化する最も簡単な方法は何ですか?

ディスク パーティションを復号化する最も簡単な方法は何ですか?

CentOS 6.4 (2.6.32-358.6.1.el6.x86_64) ボックスをインストールするときに、LVM 物理ボリューム全体 (ホーム、ルート、スワップの両方を含む) を暗号化するというミスを犯しました。すぐに、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

編集:を呼び出す前にMaybepvmoveが必要です。エラーの場合は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 ext4mkswap)。次に、開いた暗号ボリュームの内容をコピーできます。最後に、新しい rootfs を使用するようにブート ローダーを再設定する必要があります。

最初に述べたブロックのコピーは、空き領域が大量にあるため必要ありません。

関連情報