Linux磁盘/硬盘测速,dd命令
参考:
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次写入)
(1M数据大小,10k次写入)
=================================================
Linux磁盘/硬盘测速,dd命令的更多相关文章
- fio硬盘测速windows+linux
一.FIO工具简介 Fio工具的介绍网上有很多,都是可以通用的,这里就不做太多个人描述了,直接借鉴一下 fio是一种I / O工具,用于基准测试和压力/硬件验证.它支持19种不同类型的I / O引擎( ...
- Linux下 网卡测速
参考: How do I verify the speed of my NIC? Linux下 网卡测速 命令: $ sudo ethtool eth0 Settings for eth0: Supp ...
- 磁盘,fdisk分区,MBR,dd命令
光盘和磁盘.u盘.软盘.硬盘有什么区别 ①光盘: cdrom/dvdrom:光驱(光盘驱动器) rom:只读 ram:可以擦写 cd:700M dvd:4G ②软盘:flopp ...
- LINUX利用Speedtest测速
那么远程服务器呢?要知道大多数远程服务器是没有浏览器可以打开web页面的.用浏览器打开网页测速的瓶颈就在此,你不能按计划的对服务器进行定期的常规测试.这时需要到一个名为Speedtest-cli的软件 ...
- Linux下hdparm硬盘测速
在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息.这样你就知道了硬盘读写速度. Hdparm功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ ...
- linux查看主板型号及内存硬件信息,及硬盘测速
查看主板型号: sudo dmidecode |grep -A16 "System Information$" 内存槽及内存条: sudo dmidecode |grep -A ...
- 详解hdparm: linux下的硬盘测速工具
hdparm的功能:显示与设定硬盘的参数.hdparm可检测,显示与设定IDE或SCSI硬盘的参数. 语法: hdparm [-CfghiIqtTvyYZ][-a <快取分区>][-A & ...
- Linux 磁盘空间大小统计du命令常见使用方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hongweigg/article/details/37692057 在 Linux下,能够对某个文件 ...
- Linux磁盘分区的实用管理命令
系统环境:Centos6.7 命令信息: 1.lsblk 列出分区信息,可以查看分区的光在目录和使用情况 (读取内存中的分区表信息) 2.fdisk 用来创建MBR分区(也可以创建GPT分区,但是 ...
- Linux磁盘管理:lvcreate 常用命令
查看当前LV及PV信息: [root@rusky ~]# hostnamectl Static hostname: localhost.localdomain Transient hostname: ...
随机推荐
- mysql GROUP_CONCAT使用
完整的语法如下: 1 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 1 2 3 4 5 ...
- mysql 查询差集方法
第一种是通过not in的方式去处理: select id from table_a where id not in (select id from table_b); 第二种则是通过左连接(left ...
- 基于 .NET CORE + VUE 前后端项目打包,实现批处理安装,一键部署
2023年7月18日 目前基于已完成了基于WPF界面的全自动部署小工具 自动判断相关.net core环境和依赖,自动部署mysql数据库,自动部署前后端web服务的功能. 有疑问的可以直接评论. - ...
- .NET使用原生方法实现文件压缩和解压
前言 在.NET中实现文件或文件目录压缩和解压可以通过多种方式来完成,包括使用原生方法(System.IO.Compression命名空间中的类)和第三方库(如:SharpZipLib.SharpCo ...
- 【读论文】CM-Gen: A Neural Framework for Chinese Metaphor Generation with Explicit Context Modelling
为了更好的阅读体验,请点击这里 由于发不出论文,所以找点冷门方向做一做.从汉语比喻开始. 读完这篇论文之后我觉得 COLING 这方向我上我也行(ε=ε=ε=┏(゜ロ゜;)┛ 题目:CM-Gen: A ...
- ubuntu16 安装 python-networkmanager 失败
前言 ubuntu16 安装 python-networkmanager 失败 解决方案 sudo apt-get install libdbus-1-dev sudo apt-get install ...
- JSP快速上手与MVC模式和三层架构的知识点总结+综合案例
阅读提示: 说明 由于JSP实在是太 难读 难写 复杂 占资源 难调试 不分离 了,拉跨!(节目效果哈,勿喷),作为一种有(ji)更(hu)好(jiu)的(yao)上(bei)位(tao)替(tai) ...
- koa web框架入门
1.在hello-koa这个目录下创建一个package.json,这个文件描述了我们的hello-koa工程会用到哪些包.完整的文件内容如下: { "name": "h ...
- Python获得操作日志的最后几行记录
该方法一般用于获得操作日志的最后几行记录 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 f = open('seek.txt', 'rb') 4 ...
- idea 提交代码到GitHub
配置账户 配置Git安装目录 一般默认识别,其他参数不变 配置GitHub账户 提交到GitHub 1.VCS->import into version control -> share ...