前言:
Linux磁盘I/O是Linux内核的重要组成部分,是Linux开发工程师,特别是Linux存储开发工程师必须了解的一课。掌握了这一课,在遇到磁盘I/O相关问题时便会得心应手,缺席了这一课,遇到它时便会觉得云里雾里。dd是Linux的一款简单易用又功能强大的文件拷贝工具,大家再熟悉不过了,今天就带着它一起去探索Linux的磁盘I/O知识吧。
dd测试
首先看一下一份dd的测试数据,先感受下不同参数下dd的测试结果,然后带着疑问再去探索其中的原由。
从上面的测试结果可以看到,没有oflag的时候,文件复制速度是oflag=direct的十几倍,oflag=direct的速度又比oflag=sync快了将近30%。dd使用oflag设置输出文件的标志位,oflag的标志位可以是direct、sync、dsync等等,造成它们处理速度如此巨大是什么原因呢,这就是我们今天要探究的知识,让我们开始吧。
Linux磁盘I/0体系
先看一张Linux的存储栈图: