参考:

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. MESI--CPU缓存一致性协议

    概念 MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议. ME ...

  2. LocalDateTime应用比较日期

    //需求1:当天的日期且时间在9~24点之间的开始时间 LocalDateTime nowTime= LocalDateTime.now(); int year = nowTime.getYear() ...

  3. Jenkins构建UI自动化项目,指定本地执行,没弹起浏览显示

    1. 原因分析 为什么执行web没有弹出浏览器,Jenkins日志显示正在执行中 jenkins是用windows installer 安装成 windows的服务了,那么启动windows后jenk ...

  4. 掌握 Nuxt 3 中的状态管理:实践指南

    title: 掌握 Nuxt 3 中的状态管理:实践指南 date: 2024/6/22 updated: 2024/6/22 author: cmdragon excerpt: 摘要:该文指南详述了 ...

  5. spring与设计模式之五委派模式

    一.定义 主要突出一个安排,派遣. 这个设计模式非常常见,不需要学习也能自然而然地用上. 从广义的角度出发,一个对象用另外一个对象就是委派. 二.经典实现 略. 三.spring实例代码 https: ...

  6. Linux驱动中的等待队列与休眠

    Linux驱动中的等待队列与休眠 原文:https://blog.csdn.net/mengluoxixiang/article/details/46239523?spm=1001.2014.3001 ...

  7. ABC199E

    考虑状压. 设计状态 \(dp_{i,j}\) 表示考虑 \(i\) 个数,每个数的使用情况的二进制压缩表示为 \(j\) 的情况下的方案数. 然后去正常转移. 唯一特殊的是将限制放在点上,假若这个点 ...

  8. WEB入门 - 文件上传

    WEB入门 - 文件上传 参考文章 https://fushuling.com/index.php/2023/08/20/ctfshow刷题记录持续更新中/ https://www.cnblogs.c ...

  9. MDI子窗口+事件与委托的一个例程

    1首先,新建WinForm的.NetFramWork的工程并添加2个Form: 2设置 Form1为MDI主窗口: [属性]-- 将以上属性改为 True; 另外,也可以采用代码形式: this.Is ...

  10. 27 首页banner文库失效

    安卓app 首页banner文库没有连接功能