我有一个配置为 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 = 8192
of=
如果of=
是常规文件,您会看到输出比if=
驱动器的容量大 8KiB(当然,假设该文件可以放入包含它的驱动器中)。