参考:

https://blog.csdn.net/Franciz777/article/details/126779259

=================================================

概念介绍:

/dev/zero:

In Unix-like operating systems, /dev/zero is a special file that provides as many null characters (ASCII NULL, 0x00; not ASCII character "digit zero", "0", 0x30) as are read from it. One of the typical uses is to provide a character stream for overwriting information. Another might be to generate a clean file of a certain size. Using mmap to map /dev/zero to RAM is the BSD way of implementing shared memory.

Like /dev/null, /dev/zero acts as a source and sink for data. All writes to /dev/zero succeed with no other effects (the same as for /dev/null, although /dev/null is the more commonly used data sink); all reads on /dev/zero return as many NULs as characters requested.

这里需要知道的两个linux上的伪文件,/dev/zero 和 /dev/null,其中用的最多的是/dev/null,之所以说是伪文件是因为这两个确实不是真实的文件,但是却可以当做文件来用。/dev/null 就向一个“黑洞”,任何内容写入都不会被保存,因此常常被用作不保存结果时的输出重定向的文件;/dev/zero可以看做是一个字节流文件,或者看作是一个无限大的写满null的文件,把这个文件作为输入就相当于获得了无尽的null数据,这里需要知道的是null数据是ASCII码中的null码,而不是ASCII码中的0,1,2......中的0。

-----------------------------------------------

这里我们要有的测速硬盘的软件为dd,查看帮助文档:

(base) devil@hp:~$ dd -help
dd: 不适用的选项 -- h
请尝试执行 "dd --help" 来获取更多信息。
(base) devil@hp:~$ dd -h
dd: 不适用的选项 -- h
请尝试执行 "dd --help" 来获取更多信息。
(base) devil@hp:~$ dd -_help
dd: 不适用的选项 -- _
请尝试执行 "dd --help" 来获取更多信息。
(base) devil@hp:~$ dd --help
用法:dd [操作数] ...
 或:dd 选项
复制文件,依照指定操作数转换并格式化。 bs=字节数 一次读写的比特数(默认:512);
会覆盖 ibs 和 obs 选项
cbs=字节数 一次转换的字节数
conv=CONVS 依照每个逗号分割的符号列表转换文件
count=块数 只将复制指定数量的输入块
ibs=字节数 一次读取的字节数(默认:512)
if=文件 从指定文件而非标准输入来进行读取
iflag=标志 按照以逗号分隔的符号列表指定的方式读取
obs=字节数 一次写入指定字节数(默认:512)
of=文件 写入到指定文件而非标准输出
oflag=标志 按照以逗号分隔的符号列表指定的方式写入
seek=块数 在输出开始处跳过指定的 obs 大小的块数
skip=块数 在输入开始处跳过指定的 ibs 大小的块数
status=等级 要输出到标准错误的信息等级;
'none' 将仅输出错误信息,
'noxfer' 将不输出最终传输统计信息,
'progress' 将显示周期性的传输统计信息 块数和字节数后可以带有以下的一个或多个后缀:
c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M,
GB=1000*1000*1000, G=1024*1024*1024 以及相应可使用 T, P, E, Z, Y。
也可使用二进制进位前缀:如 KiB=K、MiB=M 等等。 每个 CONV 符号可能为: ascii 由 EBCDIC 码转换至 ASCII 码
ebcdic 由 ASCII 码转换至 EBCDIC 码
ibm 由 ASCII 码转换至代用的 EBCDIC 码
block 在换行符结尾的记录末尾填充空格至 cbs 对应的长度
unblock 将 cbs 大小的块中尾部的空格替换为一个换行符
lcase 将大写字符转换为小写
ucase 将小写字符转换为大写
sparse 尝试寻址(seek)而非写入全空(NUL)的输出块
swab 交换每一对输入数据字节
sync 将每个输入数据块以 NUL 空字符填充至 ibs 的大小;当配合
block 或 unblock 使用时,会以空格代替 NUL 字符来填充
excl 如果输出文件已存在则认为操作失败
nocreat 不要创建输出文件
notrunc 不要截断输出文件
noerror 读取数据发生错误后仍然继续
fdatasync 结束前将输出文件数据物理上写入磁盘
fsync 与上者类似,但也将元数据一同写入 FLAG 符号可以是: append 追加模式(仅对输出有意义;隐含了conv=notrunc)
direct 使用直接I/O 存取模式
directory 除非是目录,否则操作失败
dsync 使用同步 I/O 存取模式
sync 与上者类似,但同时也对元数据生效
fullblock 为输入积累完整块(仅iflag)
nonblock 使用无阻塞I/O 存取模式
noatime 不更新访问时间
nocache 请求不使用缓存。参见 oflag=sync
noctty 不根据文件指派控制终端
nofollow 不跟随链接文件
count_bytes 把 'count=N' 看作字节计数(仅 iflag)
skip_bytes 把 'skip=N' 看作字节计数(仅 iflag)
seek_bytes 把 'seek=N' 看作字节计数(仅 oflag) 向正在运行的 'dd' 进程发送 USR1 信号可以令其向标准错误输出 I/O
统计数据并继续进行复制。 选项有: --help 显示此帮助信息并退出
--version 显示版本信息并退出 GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告任何翻译错误
完整文档 <https://www.gnu.org/software/coreutils/dd>
或者在本地使用:info '(coreutils) dd invocation'

  

------------------------------

可以看到这个软件的设置参数比较多,不过我们常用的比较少,给出必要的参数的说明:

bs=字节数 一次读写的比特数(默认:512);测试时的每次读写的数据量大小。

if=文件 从指定文件而非标准输入来进行读取。从哪个文件里读数据。

of=文件 写入到指定文件而非标准输出。把数据写入到哪个文件。

FLAG参数:

direct 使用直接I/O 存取模式。数据写入给硬盘缓存队列后操作系统即可视为数据已经写入硬盘,由硬盘自身的电路和软件绝对如何真正分批的写入硬盘的磁盘,该方式是最高效的硬盘写入方式,现实运行中也是使用该种方式的。
dsync 使用同步 I/O 存取模式。每次操作写入数据都是需要把数据直接写入硬盘磁盘的,不在硬盘缓存中驻留,由于硬盘每次写入都是有一定延迟的(尤其机械硬盘寻道操作比较耗时),这种硬盘对操作系统的每次写入操作都直接响应后写入磁盘而不是存储在硬盘缓存的方式会极大的降低磁盘的写入效率。
sync 与上者类似,但同时也对元数据生效。和dsync同步类似,只不过对磁盘文件的元数据更新也是使用该种同步方式,写入效率几乎和dsync一样低。

写入测试:

(4k数据大小,10k次写入)

dd bs=4k count=10k if=/dev/zero of=/tmp/test oflag=direct

dd bs=4k count=10k if=/dev/zero of=/tmp/test oflag=dsync

dd bs=4k count=10k if=/dev/zero of=/tmp/test oflag=sync

(1M数据大小,10k次写入)

dd bs=1M count=10k if=/dev/zero of=/tmp/test oflag=direct

dd bs=1M count=10k if=/dev/zero of=/tmp/test oflag=dsync

dd bs=1M count=10k if=/dev/zero of=/tmp/test oflag=sync


读取测试:

(4k数据大小,10k次写入)

 sudo  dd if=/dev/sdb of=/dev/null bs=4k count=10k iflag=direct
 

 
 

(1M数据大小,10k次写入)

  sudo  dd if=/dev/sdb of=/dev/null bs=1M count=10k iflag=direct
 

=================================================

Linux磁盘/硬盘测速,dd命令的更多相关文章

  1. fio硬盘测速windows+linux

    一.FIO工具简介 Fio工具的介绍网上有很多,都是可以通用的,这里就不做太多个人描述了,直接借鉴一下 fio是一种I / O工具,用于基准测试和压力/硬件验证.它支持19种不同类型的I / O引擎( ...

  2. Linux下 网卡测速

    参考: How do I verify the speed of my NIC? Linux下 网卡测速 命令: $ sudo ethtool eth0 Settings for eth0: Supp ...

  3. 磁盘,fdisk分区,MBR,dd命令

    光盘和磁盘.u盘.软盘.硬盘有什么区别 ①光盘: cdrom/dvdrom:光驱(光盘驱动器)    rom:只读    ram:可以擦写    cd:700M    dvd:4G ②软盘:flopp ...

  4. LINUX利用Speedtest测速

    那么远程服务器呢?要知道大多数远程服务器是没有浏览器可以打开web页面的.用浏览器打开网页测速的瓶颈就在此,你不能按计划的对服务器进行定期的常规测试.这时需要到一个名为Speedtest-cli的软件 ...

  5. Linux下hdparm硬盘测速

    在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息.这样你就知道了硬盘读写速度. Hdparm功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ ...

  6. linux查看主板型号及内存硬件信息,及硬盘测速

    查看主板型号: sudo  dmidecode |grep -A16 "System Information$" 内存槽及内存条: sudo  dmidecode |grep -A ...

  7. 详解hdparm: linux下的硬盘测速工具

    hdparm的功能:显示与设定硬盘的参数.hdparm可检测,显示与设定IDE或SCSI硬盘的参数. 语法: hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A & ...

  8. Linux 磁盘空间大小统计du命令常见使用方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hongweigg/article/details/37692057 在 Linux下,能够对某个文件 ...

  9. Linux磁盘分区的实用管理命令

    系统环境:Centos6.7 命令信息: 1.lsblk  列出分区信息,可以查看分区的光在目录和使用情况  (读取内存中的分区表信息) 2.fdisk 用来创建MBR分区(也可以创建GPT分区,但是 ...

  10. Linux磁盘管理:lvcreate 常用命令

    查看当前LV及PV信息: [root@rusky ~]# hostnamectl Static hostname: localhost.localdomain Transient hostname: ...

随机推荐

  1. 随机二次元图片API第三弹

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 随机二次元图片API第三弹 日期:2020-3-10 阿珏 ...

  2. 使用python脚本玩转古早TCAD软件(待更新)

    前言 TCAD(Technology Computer Aided Design),虽然原名中没有与半导体器件有关的词汇,但这种软件便是半导体工艺模拟及器件模拟的工具,可以说是EDA软件的一种.TCA ...

  3. AgileConfig-1.9.4 发布,支持 OpenTelemetry

    Hello 大家好,最新版的 AgileConfig 1.9.4 发布了.现在它可以通过 OpenTelemetry 对外提供 logs,traces,metrics 三个维度的数据.用户可以自由选择 ...

  4. CLR via C# 笔记 -- 特性(18)

    1. 特性继承自System.Attribute,能作用于TypeDef(类.结构.枚举.接口和委托),MethodDef(含构造器),ParamDef,FieldDef,PropertyDef,Ev ...

  5. C#使用RegNotifyChangeKeyValue监听注册表更改的几种方式

    养成一个好习惯,调用 Windows API 之前一定要先看文档 RegNotifyChangeKeyValue 函数 (winreg.h) - Win32 apps | Microsoft Lear ...

  6. 探索Semantic Kernel内置插件:深入了解HttpPlugin的应用

    前言 上一章我们熟悉了Semantic Kernel中的内置插件和对ConversationSummaryPlugin插件进行了实战,本章我们讲解一下另一个常用的内置插件HttpPlugin的应用. ...

  7. vue3.4的更新,保证你看的明明白白

    defineModel 同学已经转正 defineModel 在vue3.3中还是一个实验性功能, 但是经过一个学期的努力,该同学已经转正. defineModel的简单介绍 defineModel( ...

  8. 通过 hexo 生成静态博客

    通过 hexo 生成静态博客 背景 在对比了很多博客网站以后,我决定开始慢慢迁移我的文章,以后有时间的话还会搭建自己的网站,目前主流的静态博客生成器有三个: jekyll, hexo, hugo. 静 ...

  9. Linux 中 uid、gid、euid、egid、groups 之间的关系

    导航 1 权限匹配流程 2 五种身份变化 3 有效用户/组 4 特权对 Shell 脚本无效 5 Sudo 与 SUID/SGID 的优先级 6 SUID.SGID.Sticky 各自的功能 Linu ...

  10. joig2022_e 题解

    设计 \(f_i\) 表示以第 \(i\) 个数结尾的选择的最大值. 有 \(f_i = f_j + a_i\)(\(type_i \not = type_j\)). 发现可以选择的种类其实构成两段连 ...