如何在不丢失数据的情况下转换 ext3 分区以使用加密文件系统?

如何在不丢失数据的情况下转换 ext3 分区以使用加密文件系统?

我的嵌入式Linux设备有2个分区:

  • 包含操作系统的小根分区
  • 使用 ext3 的大数据分区

我想使用加密文件系统加密数据分区。我不想丢失分区上的任何数据。根分区的大小太小,无法容纳数据分区的所有数据。无法使用任何外部数据存储。

有没有什么工具可以将数据分区的文件系统从 ext3 转换为加密 FS,而无需将所有文件复制到其他地方?

答案1

这是有可能的,但请注意:如果出现任何问题,您的数据将全部丢失。我强烈建议您先找到某种方法进行备份。

由于您不能使用外部数据存储,因此您必须在现场进行此操作。

这假设数据分区中的数据可以容纳当前空间的一半。

  1. 调整数据分区的大小并将其移动到磁盘末尾当前大小的一半。
  2. 在新创建的空闲空间中,创建一个新的加密 LUKS 卷,并在其中创建一个新的文件系统。
  3. 将旧分区中的所有文件复制到新分区,然后删除旧分区。
  4. 调整加密卷的大小(根据说明这里):

    使用 cryptsetup 显示你的墓穴的大小。

    sudo cryptsetup status crypt1
    

    这显示了你的墓穴的扇区大小。

    记下偏移量

    offset: 2056 sectors
    

    使用 cryptsetup 调整大小。

    sudo cryptsetup -o 2056 -b 11800000 resize crypt1
    

    -o = 偏移量(从状态命令获取)-b = 扇区大小。

  5. 最后,将加密卷中包含的文件系统调整为完整大小。如果您使用 ext3/4,则sudo resize2fs /the/partition应该足够了。

如果您的数据占用了超过一半的空间,您可以调整此过程,从较小的加密分区开始,然后多次调整大小并复制一些文件。显然更费力。

相关内容