调整 LUKS 加密分区大小 - 已成功但现在无法使用未分配的空间?

调整 LUKS 加密分区大小 - 已成功但现在无法使用未分配的空间?

根据网上的各种指南,我尝试减少 LUKS 加密的硬盘分区(具体来说,是根/数据)。我已经到了 GParted 识别新的未分配空间的地步,但它“卡在”原始分区内。在下面的屏幕截图中,您可以看到未分配的空间只有 1 MB(什么都没有),但突出显示的数据分区内部有一半未分配:

GParted 概述

如果你问数据分区怎么了,它说它有我想要的未分配空间:

G部分警告

因此,我排队调整大小,将其缩小到最小大小(~250 GB),它向我展示了这个美丽的预览,正是我想要的(给我约 198 GB 未分配的空间作为单独的分区):

目标

但是当我执行调整大小时,它失败,如下所示:

失败

它认为它已经缩小了?但是啊,它没有给我“未分配的空间”作为分区!上面漂亮的预览恢复到本文中的第一个屏幕截图。

我也尝试过 KDE 分区工具,它的行为方式基本相同。此外,我尝试从单独的活动磁盘执行调整大小,以便我正在调整大小的分区不会安装,并且再次出现相同的行为。另一个有趣的点是磁盘实用程序的想法:

磁盘实用程序

我绝对没有磁盘管理经验,所以我当然备份了我的数据,并考虑从一开始就擦拭机器并缩小分区,但我觉得我已经很接近了?是否缺少一个简单的步骤,或者还远远没有完成?

答案1

问题是,当您调整分区内文件系统的大小时,分区本身的大小并未调整。可以将其想象为将脚放入完美合脚的鞋子中。您已将脚(文件系统)变小,但鞋子(分区)的大小相同,因此鞋子中有未使用的空间。你需要买一双小一点的鞋子。

分区只是存储在GPT(GUID分区表)中的一个概念。它存储分区的起始位置和结束位置。您需要计算该分区的新结束分区并更新 GPT。

公式为NEW_PARTITION_SECTOR_END = PARTITION_SECTOR_START + (LUKS_SIZE_SECTORS + LUKS_OFFSET_SECTORS) - 1。这是我从https://wiki.archlinux.org/index.php/Resizing_LVM-on-LUKS#Resize_the_partition

在您的情况下,您需要执行“sudo parted /dev/nvme0n1”,然后使用“resizepart”命令。您可以使用打印命令从parted本身获取PARTITION_SECTOR_START的值。 LUKS_OFFSET_SECTORS 和 LUKS_SIZE_SECTORS 可以从“cryptsetup status cryptdata”获取。将它们全部加在一起,就会得到新的最终值。

重要提示:请注意,当您使用parted时,请确保首先键入“unit”命令,将单位更改为“s”(代表扇区)。

相关内容