dd命令中dsync和fsync区别
来源:互联网 发布:5230java软件下载 编辑:程序博客网 时间:2024/06/07 20:53
在Linux系统中经常会使用dd命令来测试硬盘的写入速度,命令会涉及几个常用参数:sync、dsync、fsync与fdatasync
# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=dsync
# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 oflag=sync
# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 conv=fsync
# dd if=/dev/zero of=/tmp/1G bs=4k count=256000 conv=fdatasync
上面4个命令都是往硬盘中写入1G的数据,只是oflag=dsync和oflag=sync这两个的速度慢的要命。
dd --help中对各参数作用描述如下:
Each FLAG symbol may be:
dsync use synchronized I/O for data // 对应oflag=dsync
sync likewise, but also for metadata // 对应oflag=sync
Each CONV symbol may be:
fdatasync physically write output file data before finishing // 对应conv=fdatasync
fsync likewise, but also write metadata // 对应conv=fsync
区别:
使用dsync/sync,dd会从/dev/zero中,每次读取4Kbytes数据,然后直接写入到硬盘当中,重复此步骤,直到共读取并且写入了1G的数据。
使用fdatasync/fsync,dd会从/dev/zero中一次性读取1G的数据,写入到磁盘的缓存中,然后再从磁盘缓存中读取,一次性写入到硬盘当中。
/dev/在内存当中,和缓存一样,读取速度都非常快,因此两种方式最终的读取速度对最终的写入速度无任何影响。 换种说法,就是此处不管有没有的硬盘缓存,对IO都不产生任何影响。那也就是说,两种方式的主要差异就在于多步与一步。
dsync/sync是一次写一个bs大小的数据,同步写到磁盘后再继续写下一个IO;
fdatasync/fsync是每次写一个bs大小数据到磁盘缓存,dd命令结束前一次性将数据刷入磁盘中,因此IOPS比dsync/sync方式要高的多。
因此可以推断,使用dsync,以1G为blocksize,次数为一的方式往硬盘中写入1 Gbytes的数据,结果将不会与dd if=/dev/zero of=/tmp/1Gbytes bs=4k count=256000 conv=fdatasync有太大的差距。
CONV标识其他参数含义:
1. conv=notrunc,do not truncate the output file
2. conv=nocreat, do not create the output file
3. conv=excl, fail if the output file already exists
FLAG标识其他参数含义:
1. oflag=direct, use direct I/O for data
2. oflag=nonblock, use non-blocking I/O
3. oflag=noatime, do not update access time
- dd命令中dsync和fsync区别
- dd命令的conv=fsync,oflag=sync/dsync
- Linux dd命令中dsync与fdatasync的区别
- Linux dd命令中dsync与fdatasync的区别
- dd命令和cp命令的区别
- fflush和fsync的区别
- fflush和fsync的区别
- dd 测试sync、fsync和fdatasync参数详解
- 嵌入式 dd命令和cp命令的区别
- fflush和fsync的联系和区别
- fflush和fsync的联系和区别
- fflush和fsync的联系和区别
- fflush和fsync的联系和区别
- fflush和fsync的联系和区别
- fflush和fsync的联系和区别
- sync、fsync和fdatasync函数区别
- shell中 dd 命令
- linux之sync和fsync,fsync和fflush的区别和联系
- 深入理解SerDes之一
- Eclipse中反编译的插件安装教程
- c++ 进程池
- 动画与贝塞尔曲线
- MySQL笔记(二)查询操作
- dd命令中dsync和fsync区别
- Android7.0调用系统相机拍照、访问相册问题。
- keyMap for android studio in mac
- 网站使用第三方Steam帐号登录[OpenID]
- C#图片处理示例(裁剪,缩放,清晰度,水印)
- Nutch2.3.1使用ant eclipse 编译源代码报错ValidatorException: PKIX path building failed: sun.security.provider.
- JS判断input表单是否为空
- “新媒体”和“社群”调查报告
- 浏览器调试工具定位问题小记