dd:写入输出文件时出错,没有更多磁盘空间,这是正常的吗?

dd:写入输出文件时出错,没有更多磁盘空间,这是正常的吗?

我有一个配置为 raid 5 的 4 磁盘 NAS,但不幸的是,该 raid 最近变得无法识别,但除此之外,NAS 启动正常。我正在克隆磁盘,以便可以尝试 raid 恢复。我正在使用独立桌面上的可启动 Ubuntu live USB 来完成操作。在克隆其中一个驱动器时,我收到有关磁盘空间的错误消息。

使用命令

dd if /dev/sda of /dev/sdb status=progress bs=16K conv=sync,noerror

错误信息

DD:写入‘/dev/sdb’时出错:设备上没有剩余空间。

两种设备均为 2TB HDD。

如果需要,我可以提供终端的屏幕截图。

DD 出现这种情况正常吗?这是否与向所有不可读/未分配的空间写入 0 有关。或者 sda 上的分区不正确?使用更大容量的 sdb 会有帮助吗?

非常感谢您的帮助。

答案1

这是因为您的驱动器bs=16k容量conv=sync不是 16KiB(16384 字节)的倍数。

dd(1)

...

每个 CONV 符号可能是:

...

sync 将每个输入块用 NUL 填充到 ibs 大小;与 block 或 unblock 一起使用时,用空格填充,而不是用 NUL

...

因此,在您的情况下, dd 需要在驱动器的最后if=用 8KiB( )的 NUL(零)填充数据,但是驱动器上没有可用于存储这些额外字节的额外扇区/逻辑块,因为两个驱动器的容量完全相同,因此导致错误。16384 - 2000398934016 % 16384 = 8192of=

如果of=是常规文件,您会看到输出比if=驱动器的容量大 8KiB(当然,假设该文件可以放入包含它的驱动器中)。

相关内容