虚拟化 Linux 中的 dd 和 hexdump 不一致

问题描述

在虚拟化 Linux 客户机中,我有一个硬盘 /dev/sdb。硬盘完全通过虚拟机管理程序传递给来宾。因此,任何其他来宾 VM 和管理程序都不会干扰 Linux 对磁盘的访问。

磁盘已经有两个分区。我在 /dev/sdb3 创建了第三个分区。然后,我执行以下操作:

dd if=/dev/zero of=/dev/sdb3 bs=1M count=1000
sync

当我用 hexdump 读取时,我在某个时间点后读取垃圾值:

hexdump -n 1048576000 /dev/sdb3
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
322db000 4556 4153 0300 8fdc c000 0001 0000 909f
322db010 c000 01ff 0000 0000 0000 0000 0000 0000
322db020 0000 0000 0000 0000 0000 0000 0000 0000
*
322db200 009b 0007 0040 0040 a000 0000 97d1 c000
...

我无法弄清楚这里可能出了什么问题。

我也试过 dd if=/dev/zero of=/dev/sdb3 bs=1M count=1000 oflag=direct,sync 但不一致仍然存在。

是不是因为页面缓存相关的东西?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)