我正在使用一台新的 Thinkpad,并尝试将驱动器从 250GB 升级到 640GB。我买了一台 WD Scorpio Blue 和一台 ByteCC USB/SATA 适配器。
首先,我尝试启动 Linux 并执行 dd if=/dev/sda of=/dev/sdd bs=4M 。此操作失败。分区表在写入后无效。通常此操作会起作用,因此我认为这与磁盘上的扇区数有关。
然后,我尝试手动创建分区并执行 dd if=/dev/sda1 of=/dev/sdd1 bs=4M 等。这导致无法启动,并且阅读了“扇区对齐”等内容后,我认为这不是最佳的做事方式。
所以我尝试用 Windows 的方式。我尝试了 WD 版的 Acronis。它失败了,告诉我目标磁盘小于源磁盘(就扇区数而言,这可能是正确的)
经过一番搜索,我尝试了 Casper。Casper 似乎可以很好地复制磁盘,但它无法启动。所以我创建了一个 Windows 系统修复 CD 并启动了...
Windows 系统修复 CD 看不到文件系统...它认为磁盘是“RAW”并且需要格式化。
在 250 上重新启动,并将 640 安装在外部,chkdsk 运行正常。一切都很好。文件系统看起来没问题。我认为唯一奇怪的是 Windows 坚持要为分区分配驱动器号,这有点令人沮丧。
我不知道如何从这里排除故障。目前这可能是一个简单的 Windows 7 启动问题,所以也许这里有人对我下一步可以尝试什么有更好的想法。有什么想法吗?
答案1
您说得对,您需要在文件系统级别进行克隆,因为dd
如果磁盘几何结构完全不同,您无法在较低级别(即使用)进行克隆;但您必须确保使用与 Windows 7 兼容的克隆实用程序,因为它使用 NTFS 的方式与以前的 Windows 系统完全不同(有很多连接点)。
此外,Windows 7 系统在主系统分区之前有一个小型启动分区是很常见的,主系统分区实际上是可启动的分区,包含 Windows 启动管理器;如果是这种情况,那么您还需要将该分区带到新磁盘上,因为它是正确启动系统所必需的。您通常不会在 Windows 资源管理器中看到它,因为它没有分配任何驱动器号,因此您只能在磁盘管理管理单元中看到它。
最后但同样重要的一点是,您需要在新磁盘上拥有有效的可启动 MBR,并正确将可启动分区标记为活动分区,否则分区布局可能完全正常,但系统将无法启动。
我的建议是:
- 仔细查看您的磁盘并检查当前磁盘的开头是否有那个小的启动分区。
- 将新磁盘连接到正在运行的系统并让 Windows 对其进行初始化;然后从 Windows 对其进行分区和格式化,根据原始磁盘的布局创建一个或两个分区。
- 确保新磁盘中正确的分区被标记为活动分区;如果有的话,那将是小启动分区,否则将是主系统分区。只需确保新磁盘的配置与旧磁盘完全相同即可。
- 使用与 Windows 7 兼容的克隆工具来克隆磁盘;如果您有小型启动分区,请确保也克隆该分区。将它们克隆到新磁盘上的相应分区上。
- 现在您应该可以启动新磁盘了。如果仍然无法启动,请返回这里并告诉我们您遇到了什么错误。
答案2
不能。“克隆”是精确复制。移动到不同的文件系统自动意味着它不能是克隆。同样,您不能将操作系统从 IDE 驱动器“克隆”到 SATA。
RAW 表示驱动器上没有分区。它们无法在该状态下格式化。它们需要定义的分区。但在使用 Acronis 之前应该根本没有分区。
在使用 Acronis(或其他工具)之前,不要对驱动器进行任何操作,除非确保它是空的。不要创建分区,也不要担心任何启动标志,因为它们将与其他所有内容一起传输。
扇区数与驱动器大小的任何衡量标准无关。如果 Acronis 说驱动器较小,那完全是错误的。但它不正确的原因将提供有用的信息。可能磁盘上已经有一个不是磁盘完整大小的分区。
无论如何,如果你使用非默认的簇大小,麻烦就会出现。保持簇大小不变,你的问题就会最小化。
您到目前为止所做的应该已经成功了。所以肯定出了问题。在尝试 Acronis 之前,您是否从驱动器中删除了所有内容?如果驱动器完全未分配,您的运气可能会更好。Acronis 会将分区和文件系统放在那里,因此您无需提前创建它。如果那里已经有一个,那么这就是 Acronis “认为”驱动器太小的原因。
我认为可能导致此问题的唯一其他因素是,如果任一驱动器以某种方式使用 GPT 分区而不是 MBR 初始化。如果您对此有所了解,请告诉我们分区类型是什么。
还可以尝试从启动 CD 进行克隆,以便操作系统与该过程无关。Parted Magic可以从 CD 或 USB 启动后从其操作系统克隆。或者使用 Acronis CD。
请记住,为了启动驱动器,它需要以与原始驱动器完全相同的方式进行连接,因为 MBR 和分区表中的所有指针都是原始驱动器的副本。
答案3
我曾多次使用 Linux 和 ntfsclone 将 Windows 成功复制到其他磁盘。假设 /dev/sda 是旧磁盘,/dev/sdb 是新磁盘。
首先复制分区表和 MBR 以及一些额外的兆字节。
警告:先这样做,不要再这样做。它复制的不仅仅是 MBR,以防 Windows 在那里存储了一些元数据。
dd if=/dev/sda of=/dev/sdb bs=1M count=5
运行 partprobe 让内核刷新分区信息:
partprobe /dev/sdb
现在在 /dev/sdb 上启动一些分区编辑器(fdisk、cfdisk,而不是 parted/gparted),并尽可能扩展最后一个分区以填充磁盘的剩余大小。不要尝试移动分区(或通过删除并重新创建来移动它们,但要确保它们具有相同的参数,如 bootable 和 fstype)。
对于每个 NTFS 分区 X,复制最初的几兆字节。这是复制 ntfsclone 不处理的任何元数据所必需的。
警告:在此分区上初始化文件系统(即执行 ntfsclone)后,请不要再次执行此操作;它会破坏新的文件系统。
dd if=/dev/sdaX of=/dev/sdbX bs=1M count=5
现在将 NTFS 分区复制到新磁盘:
ntfsclone --overwrite /dev/sdbX /dev/sdaX
关机,开机前,从计算机中取出旧磁盘,并且永远不要再插入,除非你已将其完全删除。