我跑了几个小时后,dd
就崩溃了。通常带有这样的消息
Input/output error
68424+1 records in
68424+1 records out
342124883968 bytes (342 GB) copied, 5114.68 s, 66.9 MB/s
我能做点什么吗?有什么办法可以使用输出吗?还是重新启动它停下来的地方?
是否有任何理由认为这是因为正在使用备份的分区?
它总是崩溃在70-80%左右,通常是当分区应该少使用的时候.
由于这个过程需要很长时间,所以很难尝试不同的东西。
我输出到一个图像。我可能需要一个分区,但涉及到LVM:
sudo lvmdiskscan
/dev/centos/swap [ 3.89 GiB]
/dev/sda1 [ 500.00 MiB]
/dev/centos/root [ 50.00 GiB]
/dev/sda2 [ 465.27 GiB] LVM physical volume
/dev/centos/home [ 411.38 GiB]
/dev/sdb1 [ 931.51 GiB]
3 disks
2 partitions
0 LVM physical volume whole disks
1 LVM physical volume
dd conv=sync,noerror if=/dev/centos/home bs=2000000 of=/run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image
dd: error reading '/dev/centos/home': Input/output error
171062+1 records in
171063+0 records out
342126000000 bytes (342 GB) copied, 4625.3 s, 74.0 MB/s
220856+2 records in
220858+0 records out
441716000000 bytes (442 GB) copied, 6138.1 s, 72.0 MB/s
星期五早上ddrescue --sector-size=2048 --cluster-size=$((256*512)) --sparse --verbose /dev/centos/home /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.map
GNU ddrescue 1.18.1 About to copy 441714 MBytes from /dev/centos/home to /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image Starting positions: infile = 0 B, outfile = 0 B Copy block size: 131072 sectors Initial skip size: 32 sectors Sector size: 2048 Bytes
Press Ctrl-C to interrupt rescued: 441714 MB, errsize: 8192 B, current rate: 0 B/s ipos: 342124 MB, errors: 1, average rate: 60675 kB/s opos: 342124 MB, run time: 2.02 h, successful read: 9 s ago Finished
但extundelete sd7c_dd.image --restore-directory /home/ob/p -o /tmp/tt extundelete: Bad magic number in super-block when trying to open filesystem sd7c_dd.image
/dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota)
发布于 2016-06-22 17:38:21
您不应该在挂载的文件系统上运行dd
,因为这会损坏图像(尤其是图像)。如果你想做备份的话。您可能想要使用tar
代替。
如果您确信设备没有失败,您可以使用seek
(用于在输出文件中查找N个块)和skip=N
(用于跳过输入的N个块)标志。在Linux系统上,可以使用dmesg
命令获取当前内核日志。
如果您不确定要复制的设备是否失败,我建议使用ddrescue
获取设备的图像。该工具不会在读取错误时中止,并记录它未能正确读取的块的位置。
发布于 2016-06-22 17:38:13
如果设备大于它复制的342 on,您很可能在这个磁盘上有一个坏扇区。
您可以使用具有相同值的seek
和skip
来恢复。
dd <your previous options here ...> seek=68424 skip=68424 conv=notrunc
68424
很可能再次产生相同的I/O错误,所以您必须增加它。您没有说明您使用了哪个块大小(我太懒了,不想计算),对于跳过较小的错误区域,您可能更喜欢较小的块大小(然后您必须相应地调整seek
和skip
)。
别用conv=noerror
,它会腐蚀一些东西。如果遇到更多错误,请使用ddrescue
,它是一个比dd
更好地处理读取错误的工具。
https://unix.stackexchange.com/questions/291423
复制相似问题