在现有驱动器上使用一个主分区创建加密分区,同时保留数据

在现有驱动器上使用一个主分区创建加密分区,同时保留数据

fdisk -l:

Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes`

分开-l:

Model: ATA WDC WD10EZEX-21W (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags: 

Number  Start  End     Size    File system  Flags
 1      0,00B  1000GB  1000GB  ext4

目标:该驱动器应该有 1 个包含我所有数据的加密分区,但不是操作系统、(不一定)1 个未加密分区

该驱动器上有 200 GB 的数据。 (只有数据,没有系统文件 - 操作系统位于 250 GB SSD 上)。我没有任何其他存储空间可以在使用该驱动器操作时存储文件(我的 SSD 有约 50 GB 的可用空间)。

我可以调整该主分区的大小,但无法在可用空间中创建新分区:gparted 表示该驱动器上只能存在 1 个主分区。帮助?

操作系统:Ubuntu 16.04

答案1

如果您只能有一个分区,则表明您没有分区表:您只是使用原始磁盘。我查了一下Partition Table: loop,发现了很多东西,这似乎证实了你正在使用原始设备。

应该可以移动文件系统,并插入一个分区表,将其指向分区一。然后您可以继续添加另一个分区等。

但我怀疑你不丢弃数据的概率接近于零。如果您有另一台小型设备,您可以练习几次,但如果现实与练习不同,您的数据可能会消失。

我曾经这样做过一次,在它开始工作之前,我就出了一身热汗,它坏了好几个小时。还有一次我不小心写了数据。

答案2

正如理查德所指出的,文件系统从磁盘的第一个扇区启动:没有分区。要创建加密分区,您需要先创建分区表。如果你想有一个加密分区,你确实需要有两个分区,因为你需要一些非加密空间用于引导加载程序。

您可以创建分区表而不会丢失数据。这是一项微妙的任务,因此请仔细检查您的备份是否是最新的,但这是可以完成的。

ext4 文件系统保留前 512 个字节未使用,并且 MBR 分区表适合磁盘的前 512 个字节,因此您有空间容纳 MBR 分区表。 (请注意,它必须是 MBR,而不是 GPT。)

首先,启动一些救援媒体。在安装文件系统时不要尝试执行任何操作。系统救援光盘对这类事情有好处。

如果超过一半的磁盘空间是可用的,那么您可以在磁盘的后半部分创建一个分区,如下所示:

  1. 确定磁盘设备的路径。请注意,救援系统对磁盘的命名可能与正常系统不同。这里我假设路径是/dev/sda.
  2. resize2fs /dev/sda尽可能缩小文件系统。您可以查看有多少可用空间tune2fs -l /dev/sda
  3. 跑步fdisk /dev/sda。 Fdisk 将在内存中创建一个“dos disklabel”,即 MBR 分区表。进入n并创建一个新的主分区启动文件系统结束后。输入w写入新的分区表并退出fdisk。
  4. 将文件系统复制到新分区,head -c SIZE /dev/sda1其中SIZE是收缩后文件系统的大小。
  5. 验证新分区的数据是否安全。
  6. 您现在可以创建分区以跨越磁盘的前半部分,即文件系统的旧副本所在的位置。

如果超过一半的磁盘正在使用,那么您就会遇到相当大的痛苦。我认为你可以这样做首先将数据转换为 LVM 卷,然后收缩文件系统、逻辑卷和物理卷,以及使用 gparted 移动物理卷的开头。但我从来没有做过这样的事情,所以请仔细检查你的备份。

答案3

可以启动便携式发行版,使用parted将分区大小调整为尽可能小,创建另一个分区,对其进行加密,将数据移动到新的加密分区。现在留下了多个选项:保留旧分区/boot(这可能是运行 GRUB 所必需的,然后解锁加密驱动器),或者删除旧分区,调整加密分区大小以使用整个磁盘,并使用 GRUB 内置的分区。 - 在加密模块中解锁新的 LUKS 卷,无需分区/boot(我个人发现解锁驱动器速度非常慢)。

相关内容