我想使用 dd 将故障硬盘移至备用硬盘。例如,使用 if=/dev/sdc of=/dev/sdi 一切顺利,但我尝试使用硬盘的序列号以避免弄乱一切(否则错误会很严重)。命令运行如下:
sudo dd if=/dev/disk/by-id/ata-ST32000542AS_5XW1W057 of=/dev/disk/by-id/ata-ST32000542AS_5XW200F6 bs=1M
但是 dd 拒绝复制超过 4.0GB 的内容并出现错误:
dd: error writing \u2018/dev/disk/by-id/ata-ST32000542AS_5XW200F6\u2019: No space left on device
3835+0 records in
3834+0 records out
4021047296 bytes (4,0 GB) copied, 155,973 s, 25,8 MB/s
事实上,iostat 告诉我它实际上根本没有写入任何内容。 \u2018 前缀和后缀在那里是什么意思,它是如何出现的? 我是否错过了有关 /disk/by-id/ 的重要信息,或者这是一个错误?
答案1
我找到原因了。我的错误是:
我确实先记下了磁盘路径并准备了 dd 命令,然后将目标磁盘从 sata 外壳移到了 usb3。以避免两个数据路径共享单个 esata 线路。这一举动是我尝试使用磁盘 ID 而不是某些不确定的 /dev/sdi 的原因,我认为 ID 在新位置将保持不变...
但是从 esata 到 usb 的物理移动确实彻底改变了磁盘的 /dev/disk/by-id/,并且移动之后它根本不存在。
这就是为什么 dd 使用给定的名称创建新文件,而不管它是否在 /dev/disk/by-id 目录下。并且文件已写入 4.0GB 且没有剩余空间。ls -l 说明了一切,但如果没有您的帮助,我永远也找不到它。
谢谢你的帮助,这个错误是屏幕和椅子之间的。