我刚刚安装了 Debian 8.1。我将几乎所有磁盘 300 GiB 分配给加密分区,并分配一点用于引导。我想制作更小的 50GiB 加密物理卷,并在可用空间中安装不同的 xen 操作系统。
是否可以在不丢失数据的情况下做到这一点?如何?
系统信息:
/dev/dm-1 ext4 /
/dev/sda1 ext2 /boot
/dev/mapper 中的文件:
control
hostname--vg-root
hostname--vg-swap_1
sda5_crypt
添加第一条评论的答案:
root@X550C:/home/user# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 297.9G 0 part
└─sda5_crypt 254:0 0 297.9G 0 crypt
├─hostname--vg-root
254:1 0 290.1G 0 lvm /
└─hostname--vg-swap_1
254:2 0 7.8G 0 lvm [SWAP]
sdb 8:16 0 931.5G 0 disk
└─sdb1 8:17 0 931.5G 0 part /media/user/Seagate Backup Plus Drive
sr0 11:0 1 1024M 0 rom
答案1
从内到外减少每一块。您需要在/
未安装的情况下执行此操作,因此您需要从 Live CD/USB 执行此操作。系统救援光盘擅长这类事情。请注意,您需要相当新版本的 LVM 和cryptsetup
工具。
缩小
/
文件系统resize2fs
。resize2fs /dev/mapper/hostname--vg-root 240G
/
缩小包含with 的逻辑卷lvresize
。绝对确保不会将其缩小到文件系统的大小以下。运行tune2fs -l /dev/mapper/hostname--vg-root
以仔细检查文件系统大小。lvresize -L 240g hostname/vg-root
注意:如果支持,请告知
lvresize
致电fsadm
调整文件系统的大小。这消除了意外地将卷缩小到文件系统大小以下的风险。如果这有效,则可以跳过上一步。lvresize -r -L 240g hostname/vg-root
sda5_crypt
缩小物理体积pvresize
。由于以下限制,这可能有效,也可能无效pvresize
:如果逻辑卷碰巧占用了物理卷末尾附近的一些空间,pvresize
则不会将任何数据移向靠近卷开头的未占用空间。如果您对此感到困惑,我所知道的唯一解决方案是/
尽可能减少文件系统和逻辑卷,并删除交换卷,直到您能够将物理卷缩小到您的内容。pvresize --setphysicalvolume 248g /dev/mapper/sda5_crypt
然后停用卷组。
vgchange -an hostname
缩小加密卷
cryptsetup
。再次强调,请确保不要将其缩小到 LVM 物理卷的大小以下。请注意,参数的单位--size
是 512 字节扇区。非常重要的是,请注意,这是包含设备的大小,而不是加密数据的大小,因此请为元数据留出空间。cryptsetup resize --size $((248*2*1024*1024+4096)) sda5_crypt
然后停用加密卷。
cryptsetup luksClose sda5_crypt
使用 缩小分区
fdisk
。确保不要将其缩小到加密卷的大小以下。您可以在此处创建一个新分区。
提示:如果不确定尺寸,请在每一步留出边距:内部收缩幅度大于外部收缩幅度。然后,一旦一切都小于您的目标,扩大加密卷以填充分区,然后扩大物理卷以填充加密卷,然后扩大逻辑卷以填充物理卷,然后扩大文件系统以填充逻辑卷。调用cryptsetup resize
,pvresize
且不resize2fs
带大小参数会使它们填充包含的体积。