
在安裝 CentOS 6.4 (2.6.32-358.6.1.el6.x86_64) 盒子時,我錯誤地加密了整個 LVM 實體磁碟區(包含 home、root 和 swap)。我很快意識到,由於kcryptd
CPU 佔用率為 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
這是可能的。這個需要
- 另一個 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
) 以及根磁碟區、主磁碟區和交換磁碟區 ( lvcreate
) 並格式化它們 ( mke2fs -t ext4
, mkswap
)。然後您可以複製開啟的加密磁碟區的內容。最後,您必須重新配置引導程序,以便它使用新的 rootfs。
由於可用空間很大,所以我在開始時提到的區塊複製是沒有必要的。