我最近不得不购买一个新的硬盘。因为我在那里,所以我买了两个而不是一个,因为它们是提供的(两者都是相同的型号)。由于第二个硬盘上还有大量空间,我只是将其用于根分区的全面备份:
# 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
我还没有测试过这一点——不确定它是否真的会发生。但如果:
- 你丢失了 sdb3 上的主超级块(例如坏扇区),还有备份超级块(我确信这一点)。
- 如果
e2fsck
自动尝试备份超级块(我认为确实如此,但不确定) tune2fs
只更新主超级块(我不知道)
然后,fsck 将通过从备份复制来修复主超级块 - 恢复旧的 UUID。
但实际上,我认为您更有可能dd
再次运行刷新备份并忘记更改 UUID。
我建议看一下partclone 或partimage。