备份分区更改 UUID,无需用户交互

备份分区更改 UUID,无需用户交互

我最近不得不购买一个新的硬盘。因为我在那里,所以我买了两个而不是一个,因为它们是提供的(两者都是相同的型号)。由于第二个硬盘上还有大量空间,我只是将其用于根分区的全面备份:

# single user mode.
# dd if=/dev/sda1 of=/dev/sdb3 bs=32M

之后,我更改了备份分区的 UUID,并仔细检查它是否具有不同的 UUID。

# tune2fs -U random /dev/sdb3

此后几周一切正常,每天启动并正常工作。

最近,启动计算机后,我突然将备份分区(sdb3)作为root,而不是真正的根分区(sda1)。

因此,我关闭计算机,重新启动,然后再次备份分区。我修改了启动命令行并直接启动到正确的设备(sda1)并检查发生了什么。我简直不敢相信,但备份分区 (sdb3) 神奇地具有与真实根 (sda1) 相同的 UUID。

这怎么可能发生(假设没有来自未知第三方的邪恶操纵)?是系统吗? :)

我正在运行 Debian 测试,这是一台只有我可以物理访问的家用计算机。

编辑:

  • 备份超级块都有修改后的 UUID——我用 dumpe2fs 检查了这一点。
  • 我没有重新运行转储命令。实际上,我检查的第一件事是我没有再次运行它(通过搜索所有 bash 历史记录)。
  • 我检查了所有驱动器的 SMART 信息。我将智能信息与旧版本进行了比较,因为我在配置存储库中对所有内容进行了版本控制。没什么可疑的。

答案1

我还没有测试过这一点——不确定它是否真的会发生。但如果:

  1. 你丢失了 sdb3 上的主超级块(例如坏扇区),还有备份超级块(我确信这一点)。
  2. 如果e2fsck自动尝试备份超级块(我认为确实如此,但不确定)
  3. tune2fs只更新主超级块(我不知道)

然后,fsck 将通过从备份复制来修复主超级块 - 恢复旧的 UUID。

但实际上,我认为您更有可能dd再次运行刷新备份并忘记更改 UUID。

我建议看一下partclone 或partimage。

相关内容