在 Linux 上,在 ext4 上使用各种基准测试工具(bonnie++、iozone 等)(但我猜在其他 FS 上也是一样的),重写总是比写入新文件慢。
例如,使用 bonnie++,对于 24GB 文件(主机有 12GB),当重写为 64MB/s 时,块写入为 167MB/s。
所以在我看来,重写总是比写入慢。这可以解释什么?内部 FS 操作(释放旧块,分配新块?)?RAID 设计?谢谢。
答案1
如果基准 I/O 与底层操作系统和驱动程序块大小不一致,则重写可能涉及读取一个或多个块合并新数据然后重写。
如果您确定这种情况不会发生(因为新文件不会发生这种情况),那么可能是某些日志记录影响了性能。由于文件已经分配,因此不应该发生任何块分配。
当然,SSD 卷将经历不同的行为,因为可能会发生块移动来协助磨损管理。