命令简介

Linux 中用 dd 命令来测试硬盘读写速度 - Cyril_Wu - 博客园 (cnblogs.com)

基本用法

1
time dd if=/dev/zero  of=/dev/null bs=block_size count=number_of_blocks

参数选项

  • 选项
    • if=file :从 file 中读而不是标准输入
    • of=file :写到 file 里去而不是标准输出
    • bs=bytes :一次读和写 bytes 字节
    • ibs=bytes :一次读 bytes 字节。默认是512
    • obs=bytes :一次写 bytes 字节。默认是512
    • count=blocks : 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数
    • iflag=FLAGS :指定读的方式FLAGS
    • oflag=FLAGS :指定写的方式FLAGS
  • FLAGS如下
    • direct   读写数据采用直接IO方式;
    • directory 读写失败除非是directory;
    • dsync   读写数据采用同步IO;
    • sync    同上,但是针对是元数据
    • fullblock  堆积满block(iflag only);
    • nonblock 读写数据采用非阻塞IO方式
    • noatime   读写数据不更新访问时间

磁盘写能力测试

/dev/zero是一个伪设备,只产生空字符流,不会产生IO,IO都会集中在of文件中,所以这个命令是测试磁盘的写能力。

1
dd if=/dev/zero of=test bs=8k count=10000 oflag=direct

读取能力测试

/dev/sdb是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,是黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb上,也相当于测试磁盘的读能力

1
dd if=test of=/dev/null bs=8k count=10000 iflag=direct