linux dd 读取,linux – 为什么dd读取和写入同一个磁盘?

我一直在Linux中使用dd来覆盖外部USB硬盘.

当我使用512字节的默认块大小时,使用以下命令:

# dd if=/dev/zero of=/dev/sdb

在整个操作过程中,硬盘驱动器(/ dev / sdb)交替读取和写入,一次大约1GB.即读取1GB …写入1GB …读取1GB …写入1GB等.从硬盘驱动器读取的数据与写入的数据一样多.

我知道这种情况正在发生,因为它显示在我的自定义Conky面板(diskio_read,diskio_write)中,我知道这是磁盘I / O活动的100%可靠指标.

我在另一台计算机上使用不同的外部硬盘驱动器重复此操作.它通过USB 2.0和USB 3.0发生.

相反,当我做同样的事情,但使用1MB的块大小,用这个命令:

# dd if=/dev/zero of=/dev/sdb bs=1M

除了在开始时的少量读数之外,在操作期间根本不读取硬盘驱动器.

鉴于这种现象发生在我的两台不同的计算机和两台不同的硬盘驱动器上,使用标准的Linux发行版(Xubuntu 14.04),任何想要的人都应该能够在自己的计算机上复制它.

有人可以解释一下这里发生了什么吗?

解决方法:

如果指定的块大小(512字节)小于磁盘的块大小(通常为4096字节,但现在可能更多),则将部分写入块,以便必须保留块的其余部分的内容在写之前.

这是因为磁盘块只能用512字节写入,但您必须一次写入一个完整的块(4096或更大).当你写这个(4096)金额或更多时,没有部分写,所以它不必阅读.

标签:linux,dd,external-hdd

来源: https://codeday.me/bug/20190810/1641319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值