参考:

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. 十大java应用服务器(web server)总结

    java应用服务器(web server),是指运行java程序的web应用服务器软件,不包括nginx.Apache等通用web服务器软件. 一.Tomcat Tomcat是Apache 软件基金会 ...

  2. 我又学会了使用Range实现网络文件下载的断点续传

    目录 前言 1.Range请求头 1.1.概述 1.2.使用限制 1.3.范围请求 1.4.预防资源变更 2.断点续传下载实现 2.1.流程设计 2.2.代码实现 2.3.运行结果 3.RandomA ...

  3. Apache Kylin(一)Kylin介绍

    1. 传统大数据分析的问题 在基于Hadoop 生态的传统大数据分析中,主要使用的技术是MPP(Massively Parallel Processing)大规模并行处理和列式存储.MPP使用线性增加 ...

  4. 韦东山IMX6ULL Linux开发板基于Buildroot系统QT应用环境配置开发运行

    @ 目录 一. 编译系统 1.设置交叉编译工具链 2.编译系统 二. QT下载 1.安装 Qtcreator 2.创建第一个程序 3.配置 QtCreator 开发环境 4.移植QT程序到开发板 一. ...

  5. NEEPU Sec 2023 Misc 两题题记

    GoingOn 题目描述 Keep going on channel 1 ;D 考察的是 midi lsb隐写 MIDI文件概述 CSV文件概述 midi转csv工具 midicsv 将 MIDI 文 ...

  6. uBrand | 更适合个人创业者,小公司的AI品牌创建平台

    在跟一些辞职创业的朋友聊品牌,这个问题大家不约而同地都会提到:"我不会设计也没有资金请专业的设计师,有没有低成本打造品牌的方法呢?" 正好这段时间赶上AI的风潮,从众多AI工具中刚 ...

  7. Solo 开发者周刊 (第 1 期):开源产品的探索之路

    产品推荐 如何着手将一个简单的想法转变为一个成熟的开源项目,以及如何在此过程中利用和贡献于开源社区.同时使其达到商业化的同时,保持原有的开源精神.这些是我们需要探索的. Spug 开源运维平台 Spu ...

  8. sshd管理限制登录配置(centos7.9)

    背景情况:为了公网的主机,被无限的密码爆破,需要对主机的ssh进行安装加固 1.首先要禁用root的远程登录和修改ssh的端口 vi /etc/ssh/sshd_config# 修改端口,不适用22端 ...

  9. 题解:AT_abc352_d [ABC352D] Permutation Subsequence

    虽然比赛没打,但是想来水估值发表思路. 题意 给你一个 \(1\sim n\) 的排列,让你从中找一段长为 \(k\) 的子序列,使得这个子序列中的元素排序后数值连续. 分析 题意转换一下,先用结构体 ...

  10. 数据仓库建模工具之一——Hive学习第四天

    Hive的基本操作 1.3HIve的表操作(接着昨天的继续学习) 1.3.2 显示表 show tables; show tables like 'u*'; desc t_person; desc f ...