我正在将较大的 HDD(750GB)克隆到较小的 SSD(250GB)。我缩小了分区,只剩下 83GB 的已用空间。(我进行了碎片整理并执行了 chkdsk)。此外,分区大小总和小于 SSD 大小。
我现在正在通过 pv 管道传输 dd 进程,以查看传输的数据量。它仍在运行,并且已经超过 170gb。这是为什么?我在 dd 上使用了“conv=sync, noerror”参数。我以为它会在 83gb 时结束。
这是“fdisk -l”输出:(/dev/sda = 750gb HDD,/dev/sdb = 250gb SSD)
Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 1465149167 732574583+ ee GPT
Partition 1 does not start on physical sector boundary.
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 1465149167 732574583+ ee GPT
这是我用来克隆的命令:
sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=64K conv=sync,noerror
答案1
我正在将较大的 HDD(750GB)克隆到较小的 SSD(250GB)。我缩小了分区,只剩下 83GB 的已用空间……
它仍在运行,已经超过 170GB……我以为它会在 83GB 时结束。
这是因为您不只是复制 83GB 的数据。让我们看看您是如何复制数据的:
sudo dd if=/dev/sda | pv | sudo dd of=/dev/sdb bs=64K conv=sync,noerror
第一部分是阅读整体/dev/sda 并将其转储到 STDOUT。
pv
测量第一个转储的吞吐量和状态dd
,并将其重定向到下一个命令,同时向您的终端提供人性化的输出。它不会以任何方式处理数据,它只是为了提供信息而进行测量。
第三部分是全部来自 STDIN 的输入并将其转储到 /dev/sdb 上。
所以会发生的情况是,它会将数据从源设备(/dev/sda)复制到目标设备(/dev/sdb),直到目标设备空间不足。
我缩小了分区,现在只剩下 83GB 的已用空间。(我进行了碎片整理并执行了 chkdsk)。此外,分区大小总和小于 SSD 大小。
由于您调整了分区大小,因此分区图可能适合目标设备,但这并不一定保证所有数据都位于磁盘的开头。您需要查看 GPT 布局以确认分区已移动到驱动器的开头。如果没有,则副本可能不会包含您的所有数据。
看起来您正在尝试复制 Windows 系统的启动盘。与其手动执行此操作,您最好使用 Clonezilla 之类的实用程序来为您执行此操作。您仍然需要缩小源磁盘上的文件系统,但它会为您在目标磁盘上创建分区并复制数据。