将现有的 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。