如何调整加密 LVM 的大小以安装另一个 Ubuntu 副本?

Bla*_*ing 4 installation partitioning lvm

我有一个旧的 PowerBook,它已经愉快地运行了几个月的 Ubuntu Server。现在我想重新分区硬盘并安装 Ubuntu 客户端,同时保持我现有的安装完好无损。

当我第一次安装 Ubuntu 时,我选择擦除整个硬盘驱动器并将其用作加密的 LVM。现在,安装程序似乎可以识别驱动器上的分区,但它从不提示我输入 LVM 的密码。

我如何为当前安装的另一个安装腾出空间?

Pan*_*her 8

没有图形工具可以调整加密分区的大小。您可以从命令行手动执行此操作。

必须从 Live CD 调整加密分区的大小,并且 Live CD 中不包含对加密和 LVM 的支持。

启动 live (Desktop) CD 并安装 lvm2 和 cryptsetup。

sudo apt-get update && sudo apt-get install lvm2 cryptsetup
Run Code Online (Sandbox Code Playgroud)

加载 cryptsetup 模块。

sudo modprobe dm-crypt
Run Code Online (Sandbox Code Playgroud)

解密您的文件系统。

sudo cryptsetup luksOpen /dev/sda5 crypt1
Run Code Online (Sandbox Code Playgroud)

获取 Live CD 以识别(激活)您的 LVM。

sudo vgscan --mknodes
sudo vgchange -ay
Run Code Online (Sandbox Code Playgroud)

您现在可以管理您的加密分区、安装它们、复制它们或执行维护(fsck、备份、调整大小)。

使用 resize2fs 减小文件系统的大小(此工具适用于 ext2 和 ext3 分区)。您需要先检查文件系统,然后才能调整其大小。

sudo e2fsck -f /dev/mapper/hardy-root
sudo resize2fs -p /dev/mapper/hardy-root 5g
Run Code Online (Sandbox Code Playgroud)

将“5g”替换为文件系统的预期大小(以 Gb 为单位)。

使用 e2fsck 检查文件系统是否仍然完整。

sudo e2fsck -f /dev/mapper/hardy-root
Run Code Online (Sandbox Code Playgroud)

减小根 (LVM) 逻辑卷的大小。-L 标志是您想要减小 (LVM) 逻辑卷大小的程度,因此请记住这一点。

使用 lvdisplay 显示您的 (LVM) 逻辑卷。

sudo lvdisplay
Run Code Online (Sandbox Code Playgroud)

请注意将根 (LVM) 逻辑卷减少多少(在我的情况下为 4.3 Gb)。

sudo lvreduce -L -4.3G /dev/hardy/root
Run Code Online (Sandbox Code Playgroud)

注意:您需要将“-4.3G”更改为适当的大小,以将您的 (LVM) 逻辑卷减少到您想要的大小。

重新显示您的 (LVM) 逻辑卷以检查最终大小是否正确。

sudo lvdisplay
Run Code Online (Sandbox Code Playgroud)

调整 (LVM) 物理卷的大小。

LVM 使用的物理卷可能会变得“碎片化”,因为 (LVM) 物理卷内的 (LVM) 逻辑卷并不总是有序的。没有碎片整理工具,所以如果您可能需要手动移动逻辑分区(备份数据,删除(LVM)逻辑卷,重新创建替换(LVM)逻辑卷,从备份中恢复数据)。

为了调整(LVM)物理卷的大小,我必须手动移动(删除然后重新创建)交换(LVM)逻辑卷。

使用 pvdisplay 显示物理卷的大小

sudo pvdisplay
Run Code Online (Sandbox Code Playgroud)

删除交换 (LVM) 逻辑卷

sudo lvremove /dev/hardy/swap_1
Run Code Online (Sandbox Code Playgroud)

调整 (LVM) 物理卷的大小。

sudo pvresize --setphysicalvolumesize 5.6G /dev/mapper/crypt1
Run Code Online (Sandbox Code Playgroud)

现在我们将恢复(重新创建)交换 (LVM) 逻辑卷。

设置(LVM)物理卷的权限以允许分配(如果需要)

sudo pvchange -x y /dev/mapper/crypt1
Run Code Online (Sandbox Code Playgroud)

恢复交换 (LVM) 逻辑卷。

sudo lvcreate -L 512m -n swap_1 hardy
sudo mkswap -L swap_1 /dev/hardy/swap1
Run Code Online (Sandbox Code Playgroud)

当 mkswap 命令完成时,它会将新的 uuid 打印到终端。

使用新的 uuid 更新 fstab(使用任何编辑器)

挂载根 (LVM) 逻辑卷。

sudo mount /dev/hardy/root /mnt
Run Code Online (Sandbox Code Playgroud)

编辑 /etc/fstab

gksu gedit /mnt//etc/fstab
Run Code Online (Sandbox Code Playgroud)

将新的 uuid 从终端复制粘贴到 fstab,更新交换分区的 uuid。保存并退出 gedit 卸载根 (LVM) 逻辑卷

sudo umount /mnt
Run Code Online (Sandbox Code Playgroud)

添加 (LVM) 逻辑卷交换后重新锁定 (LVM) 物理卷(锁定 (LVM) 物理卷可防止其更改)。

sudo pvchange -x n /dev/mapper/crypt1
Run Code Online (Sandbox Code Playgroud)

调整地穴大小。

使用 cryptsetup 显示您的 crypt 的大小。

sudo cryptsetup status crypt1
Run Code Online (Sandbox Code Playgroud)

这显示了您的地穴在扇区中的大小。记下偏移量

offset: 2056 sectors
Run Code Online (Sandbox Code Playgroud)

使用 cryptsetup 调整大小。

sudo cryptsetup -o 2056 -b 11800000 resize crypt1

-o = offset (get this from the status command) -b = size in sectors.
Run Code Online (Sandbox Code Playgroud)

使用 fdisk 调整分区大小。

卸载你的 LVM 和 crypt :

sudo vgchange -an
sudo cryptsetup luksClose crypt1
Run Code Online (Sandbox Code Playgroud)

现在是可怕的部分,使用 fdisk 手动调整分区大小。

如果您不熟悉 fdisk,我建议您阅读如何使用 fdisk 进行分区

fdisk 不会覆盖数据,因此如果您犯了错误,您应该能够“撤消”更改。

使用 fdisk 列出您的分区信息。

sudo fdisk -l
Run Code Online (Sandbox Code Playgroud)

写下这些信息(或打印出来)。

重新编写您的分区表。为此,请使用 fdisk 删除分区并重新创建它们,但大小要小一些。

sudo fdisk /dev/sda
Run Code Online (Sandbox Code Playgroud)

这是我的 fdisk 会话:

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): d
Partition number (1-5): 5

Command (m for help): d
Partition number (1-5): 2

Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (32-1305, default 32):
Using default value 32
Last cylinder or +size or +sizeM or +sizeK (32-1305, default 1305): +6000M

Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (32-761, default 32):
Using default value 32
Last cylinder or +size or +sizeM or +sizeK (32-761, default 761):
Using default value 761

Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (762-1305, default 762):
Using default value 762
Last cylinder or +size or +sizeM or +sizeK (762-1305, default 1305):
Using default value 1305

Command (m for help): p

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000a6bf9

Device Boot Start End Blocks Id System
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 761 5863725 5 Extended
/dev/sda3 762 1305 4369680 83 Linux
/dev/sda5 32 761 5863693+ 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
Run Code Online (Sandbox Code Playgroud)

取消出现的“身份验证”对话框(Live CD 正在尝试自动安装您的新分区)。

LVM 分区的系统 ID 也应更改为“Linux LVM”:

Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 8e
Command (m for help): w
Run Code Online (Sandbox Code Playgroud)

如果不这样做,可能会导致逻辑分区的起始扇区与原来所在的位置不对齐,LVM 将无法读取!

我强烈建议您先阅读完整的维基页面

请参阅:https : //help.ubuntu.com/community/ResizeEncryptedPartitions

一旦您有可用空间,您就可以使用它从图形安装程序安装 ubuntu。

我建议您在完成调整大小后和安装之前重新启动。

  • 最好将它们添加到帖子本身中。 (2认同)