如何将整个硬盘克隆到新硬盘?

如何将整个硬盘克隆到新硬盘?

我使用dd命令将我的 500GB 硬盘复制到我的新 1TB 硬盘中。9 小时后,系统显示消息所有内容已成功复制,但我无法将任何数据显示到我的新硬盘中。
我执行以下步骤。
步骤 1:-

在此处输入图片描述

之后系统显示消息:- 步骤2:-在此处输入图片描述
但现在 1 TB HDD 无法显示任何东西。在此处输入图片描述
如何解决该问题?

答案1

此问题是由错误命令引起的dddd磁盘克隆的准确命令是:

dd if=/dev/sda of=/dev/sdb

sdasdb指向硬盘本身,其中也包括分区表。if=指向输入文件(在本例中为/dev/sda),并of=指向输出文件(/dev/sdb)。

dd命令很耗时,但它更受信任,也是默认系统工具,所以我优先使用dd

在此处输入图片描述

操作成功后,下一步是重启系统,那么你的新硬盘将如下所示:

在此处输入图片描述

这是倒数第二步,也是必需的dd:使用分区实用程序来调整大小扩展分区。旧硬盘分区表为 Legacy 启动类型,不支持超过 4 个主分区。因此,调整大小是使用 500GB 可用空间的唯一安全选项。

调整扩展分区大小后:

在此处输入图片描述

答案2

最近我不得不使用 dd 进行恢复和映像工作。大约 10 年前,我曾大量使用它来克隆驱动器和备份分区。我必须说,它的使用与直接和简单相去甚远。对于 HDD,您需要确切了解驱动器在最低级别的结构。为此,您需要其他可以信任的程序(fdisk、sfdisk、cfdisk 等)。信任只来自对已知对象的实验和检查结果——而不是口口相传。我同意 muru 关于错误 dd 命令的最初评论,但应该说更多。if=/dev/sda 从设备的最开始(字节地址 0)开始读取,而 of=/dev/sdb1 写入设备 b 的第一个分区。结果是您的 sda-​​MBR 与您的操作系统等一起驻留在 sdb-part1,并且如果它大于 sdb1,我不知道当它到达 sdb1 末尾时会发生什么。

我猜 sda 是启动设备,而您希望 sdb 也成为您的启动设备,但也许您只希望 sdb1 成为备份克隆。您的问题对此很模糊。如果分区大小完全相同,您可能能够将分区复制到分区,但操作系统可能具有不匹配的分区文件系统元数据,因此无法“查看”它。如果您只是想要一个克隆用于备份,那么您的命令可能没问题,但存在到达分区末尾并覆盖下一个分区的问题,以及您的操作系统是否会反对 sdb1 上的文件系统破坏(仍然从 sda1 启动(?))。原则上,这可能有效,但最好只将 sda 写入 sdb,而忘记从 sdb 启动,它只是一个用于读取的克隆。如果您有 extFAT 或某些接受 500GB 文件大小的系统,您可能可以写入文件,但我怀疑您这样做。

还有许多其他问题。如果您想传输到 sdb 并从中启动,您必须知道要复制的字节和扇区并将其包含在命令中 - 确保您的输出驱动器具有必要的大小,再次,/dev/sda 到 /dev/sdb 应该可以工作,除了我遇到的一些问题。也就是说,如果 dd 遇到在较旧的二手驱动器上常见的读取错误,它应该怎么做?您可以将 dd 设置为忽略它们,但它会写入什么?根据我的经验,它什么都不写,因此 512 字节(正常的传统块,但您的磁盘可能不同;较新的驱动器可能使用 4096 字节块)被从写入中取出,并且所有进一步的字节都被“移到”它们应该在的位置的左侧。这种情况发生在每个读取错误上,也许您已选择忽略,因为读取错误会停止 dd,重新启动非常困难。简而言之,可以使用 dd 进行克隆,但应该在带有错误恢复循环的 bash 脚本中完成,该循环用空值填充未读块,命令应指定准确的块数,并且您应该确切知道所涉及驱动器的低级格式。最后,对于严肃的克隆来说,最好使用专用的开源 c 可执行文件,它可以执行 dd 和 sfdisk 所做的工作,但更专业。但是,我承认 dd 很有用。它就像你腰带上的一把博伊刀——令人印象深刻且功能强大,但用处有限。

此外,操作系统可以检查硬盘上可用空间和其他位置存储的 UUID,如果不匹配,则可以拒绝启动。这是操作系统竞争力的黑魔法领域之一。官方软件知道这些事情。)

与 10 年前不同,GPT 表现在也很重要,甚至是必不可少的。而且 EFI 启动分区也使事情变得复杂。凭借我对低级磁盘格式化的了解,我甚至不会浪费时间尝试克隆整个磁盘。磁盘的某些部分可能对非常特殊的问题有用。忽略 LVM 及其重要性,分区可能很有用,但只能用于读回原始驱动器(没有操作系统混合、启动更改等)。要传输可启动的 500GB 驱动器以制作 1TB 可启动系统,假设操作系统不反对使用不同的驱动器(硬件签名?),那么我建议成功实验是将 1TB 驱动器上的低级格式化与 500GB 驱动器完全一样——我的意思是完全一样!您必须使用十六进制编辑器检查 MBR 和 GPT 表。然后将分区逐字节 dd 到新驱动器。然后,启动 1TB 驱动器(假设成功)并在新的 500GB 额外空间中创建另一个分区,或者扩展分区和实时文件系统(如果您拥有并信任此类软件)。很难找到这个领域的信任,因为这些东西很难处理,如果出错,后果将不堪设想。最好购买一个声誉良好且经过 SHA256SUM 处理的新系统或软件,以便检查其完整性。数字系统本质上是易变且无常的,因此如果您需要的比现有的东西更多,最好习惯变化。

答案3

我有:

  • 向 ubuntu 虚拟机 (虚拟盒设置) 添加了第二个更大的虚拟磁盘
  • 使用“sudo dd if=/dev/sda of=/dev/sdb”将第一个复制到第二个磁盘
  • 删除了 sdb 上的交换分区(gparted)
  • 扩大的 sdb1 (gparted)
  • 在 sdb 上重新创建交换分区(gparted)
  • 停止虚拟机
  • 删除了旧的虚拟驱动器(虚拟盒设置)
  • 用新复制的更大的驱动器(虚拟盒设置)替换它

如果它与 virtualbox 一起工作,它甚至可以与真实硬件一起工作......

答案4

我已经开始使用克隆

ddrescue -f -r3 /dev/sd_OLD /dev/sd_NEW mapfile

注意:在克隆之前,请务必仔细检查两个驱动器的序列号

hdparm -I /dev/sd_OLD|grep Num

然后,当旧数据在新驱动器上时,我将扩展分区以填充新的可用空间fdiskresize2fsunix.stackexchange.com

不要跳过,mapfile因为这样如果 ddrescue 被中断,您就可以重新启动它(并且只占用几百个字节)。

相关内容