使用 dd 将 512B 克隆到 4KiB(高级格式)HDD

使用 dd 将 512B 克隆到 4KiB(高级格式)HDD

将现有的 512 字节/扇区 HDD(整个磁盘,而不是特定分区)克隆dd到现代 4 千字节/扇区Advanced Format驱动器的最佳做法是什么?应该使用哪些选项?它们有关系吗?

答案1

它是哪种高级格式的驱动器?它是否有“AF”徽标(这意味着驱动器在其接口处显示 512 字节扇区,即它实际上是“512e”驱动器)或“4Kn”徽标?

如果是前者,您不需要做任何特殊的事情 - 您可以像对待传统驱动器一样对待它,尽管正确的分区对齐是个好主意(它可以对性能产生巨大的影响)。

如果是后者,你不能复制时“不做任何修改”,因为文件系统元数据必须更改。例如,512e“4 GB”驱动器的 LBN 将从 0 到大约 7,812,500,000,而真正的 4K 原生“4 GB”驱动器的 LBN 最多只能达到大约 976,562,500。因此,512 字节/扇区驱动器元数据中的 LBN 在 4Kn 驱动器上毫无意义。

答案2

好的,我认为值得将我自己所做的事情作为答案发布出来。

我使用以下命令来克隆驱动器:

dd if=/dev/sda of=/dev/sdb ibs=512 obs=4096

这里,第一个选项ibs指示dd,每次应从源读取 512 个字节,并且obs每次应向目标写入 4096 个字节。

整个过程没有任何问题。完成后,我断开了之前的驱动器并尝试从新驱动器启动。它启动了并且所有分区都正确显示。

为了确保此高级格式驱动器的对齐是否良好,我WD Align从西部数据网站下载了工具,它显示所有内容均已正确对齐,以下是屏幕截图:

在此处输入图片描述

但我不知道额外的选项是否有用。

答案3

因为您使用的是 512e 驱动器,所以您的 dd 示例是不必要的。您可以简单地使用 dd if=/dev/sda of=/dev/sdb bs=2M(我倾向于使用)。真正的问题是从 512n 到 4Kn,基本上,这不是一劳永逸的。在大多数情况下,除了重新配置引导加载程序等之外,最好重新分区并 cp -a 所有内容。

您是否可以在 512n 和 4Kn 之间以最少的非破坏性重新分区来回执行 dd,取决于您是否使用 512 的 8 的倍数(512 * 8 = 4096)进行分区。

例子:

512n partition under gdisk:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  linux-bios
   2            4096        41943006   20.0 GiB    8E00  linux-lvm

4Kn translation after dd'ing (from 512 to 4096 physical and logical),
then re-repartitioning:

Number  Start (sector)    End (sector)  Size       Code  Name
   1             256             511   1024.0 KiB  EF02  linux-bios
   2             512        5242875.75 20.0 GiB    8E00  linux-lvm

哎呀!注意到小数点了吗,(41943006+1 / 8)?这不行。

唯一的方法是,如果新驱动器上有超过 20.0 GiB 的空间,并添加额外的 4kn 扇区(5242875+1),然后调整底层文件系统、lvm 等的大小。

现在,如果您使用 8 的倍数对 512n 驱动器进行分区,则上面的第一个 (512n) 分区表将如下所示:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02  linux-bios
   2            4096        41942999   20.0 GiB    8E00  linux-lvm

And the proper 4Kn translation would look like this:

Number  Start (sector)    End (sector)  Size       Code  Name
   1             256             511   1024.0 KiB  EF02  linux-bios
   2             512         5242875   20.0 GiB    8E00  linux-lvm

(41942999+1) / 8 = 5242875

故事的寓意是:如果您计划将来使用 4Kn 驱动器,请使用 8 的倍数对 512n 驱动器进行分区,只要您相应地重新创建分区表,就应该没问题。

注意:不要忘记任何可能的 GUID 克隆,不仅仅是磁盘标识符,还有分区 GUID。

相关内容