将驱动器从 USB 外壳切换到内部 SATA 后,磁盘不显示数据

将驱动器从 USB 外壳切换到内部 SATA 后,磁盘不显示数据

在 Ubuntu 20.04.4 LTS amd64 上。

我将一个 GPT 分区(使用 GParted 格式化,带有单个 LUKS 分区,同时连接到 USB 3.0 机箱)交换到内部 SATA 连接。将其移入机箱并连接到 SATA 连接后,gdisk 显示:

MBR: protective
BSD: not present
APM: not present
GPT: present

磁盘看起来就像只是可用空间。

我依稀记得以前见过这种情况,但我并不经常移动存储,也不记得如何解决这个问题或避免将来出现同样的问题。

答案1

外壳及其通信方式的某些问题似乎导致了扇区通信和/或分区表解释方式不匹配。

值得庆幸的是,LUKS 头仍然存在并且可以找到。 在我的情况下,这很有帮助,因为 LUKS 分区占据了其头之外的整个磁盘,因此,对于具有多个分区的磁盘,以下解决方案本身无济于事

$ sudo hexdump -C /dev/sdb | grep '  4c 55 4b 53 ba be'
00100000  4c 55 4b 53 ba be 00 02  00 00 00 00 00 00 40 00  |LUKS..........@.|
^C

Ctrl+C打破

如果您找到一个像我上面那样的标题(在此示例中为“00100000”),并且末尾带有 LUKS,请将该十六进制转换为十进制,然后除以 512 即可找到扇区。

$ perl -le 'print hex("00100000");'
1048576

$ perl -le 'print (( 1048576 / 512 ));'
2048

然后,使用 gdisk:

  1. 创建一个新的 GPT 分区表。
  2. 创建一个新的 LUKS 分区,从该扇区(本例中为 2048)开始,到磁盘末尾结束。在我的例子中,分区类型为 8309(“8309 Linux LUKS”)。

不幸的是,如果 LUKS 分区没有在磁盘末尾结束,则没有特定的方法来确定它在哪里结束,您需要采取另一种恢复方式。

不过,上面概述的内容足以恢复单个 LUKS 分区且不会丢失数据。


参考:

https://www.linuxquestions.org/questions/linux-newbie-8/recovering-a-deleted-partition-table-of-a-luks-encrypted-flash-drive-4175606168/

https://stackoverflow.com/a/13280173

相关内容