解密磁碟分區的最簡單方法是什麼?
在安裝 CentOS 6.4 (2.6.32-358.6.1.el6.x86_64) 機器時,我錯誤地加密了整個 LVM 物理卷(包含 home、root 和 swap)。我很快意識到移動文件需要花費大量時間,因為它
kcryptd
執行在 90% 的 CPU 上,而且加密並不是真正必要的,因為它只是一個不包含關鍵數據的家庭伺服器。但是,我已經對其進行了配置並安裝了許多軟體包,在電源管理方面對其進行了調整,並設置了所有服務。有什麼方法可以刪除加密而不必重新安裝整個東西並重新進行配置?我喜歡一個不到 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
這是可能的。這個需要
- 另一個要啟動的 Linux(CD/DVD 可以)
- PV外的一些備用空間(100M會很好)
- 一定程度的無畏……
然後,您將一個塊從加密卷複製到 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
) 和 root、home 和 swap ( ) 的邏輯卷lvcreate
並格式化它們 (mke2fs -t ext4
,mkswap
)。然後您可以複製打開的加密卷的內容。最後,您必須重新配置引導載入程序,以便它使用新的 rootfs。由於可用空間很大,我在開頭提到的塊複製不是必需的。