Linux系统硬盘读写测试

方法一:用dd命令

Linux服务器想要知道硬盘的读写是否能满足服务的需要,我们可以使用Linux自带的dd命令测试硬盘的读写速度,方法如下:

Linux硬盘写入速度:

# time dd if=/dev/zero of=/var/test bs=2k count=1000000

Linux硬盘读取速度:

# time dd if=/var/test of=/dev/null bs=2k

命令详解:

* time用于计时

* dd用于复制,从if读出,写到of。

* if=/dev/zero不产生IO,因此可以用来测试纯写速度;同理of=/dev/null不产生IO,可以用来测试纯读速度。

* bs是每次读或写的大小,即一个块的大小,count是读写块的数量,相乘就是读写数据量大小。

使用方法:

数据量越大越准确,多次测试取平均值。

以阿里云服务器为例测试硬盘写入速度,2G的数据量,88秒,23.2MB/s,速度虽比不上自己电脑的硬盘,但作为WEB服务器,够用了。

方法二:用hdparm命令

评估硬盘的读取效率(停止所有服务,多测几次)

[email protected]:~# hdparm -T /dev/sda
/dev/sda:
 Timing cached reads:   7540 MB in  2.00 seconds = 3771.50 MB/sec
[email protected]:~# hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads:  226 MB in  3.04 seconds =  74.36 MB/sec
[email protected]:~# hdparm -Tt /dev/sda
/dev/sda:
 Timing cached reads:   7750 MB in  2.00 seconds = 3876.91 MB/sec
 Timing buffered disk reads:  270 MB in  3.00 seconds =  89.99 MB/sec

-T

用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不存取磁盘直接从Linux缓存 读取数据的速度.这项测量实际上标示了被测系统的处理器,缓存和内存的吞吐量. 如果标志 -t 也被指定,那么一个基于 -T 输出结果的修正量将被综合到 -t 操作报告的结果中.

-t

用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不使用预先的数据缓冲从磁盘这项测量标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取.为确保测量的精确,缓存在 -t 的过程中通过BLKFLSBUF控制被刷新. 如果标志 -T 也被指定,那么一个基于 -T 数促结果的修正量将被综合到 -t 操作报告的结果中.

两种方法相比:

前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)

后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

问: 以下几种方式测试磁盘读写速度有什么区别?

dd bs=1M count=128 if=/dev/zero of=test
dd bs=1M count=128 if=/dev/zero of=test; sync
dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync
dd bs=1M count=128 if=/dev/zero of=test oflag=dsync

答:区别在于内存中写缓存的处理方式。

dd bs=1M count=128 if=/dev/zero of=test

没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。因为其实dd给你的只是读取速度,直到dd完成后系统才开始真正往磁盘上写数据,但这个速度你是看不到了。所以如果这个速度很快,先不要偷着乐。呵呵

dd bs=1M count=128 if=/dev/zero of=test; sync

和前面1中的完全一样。分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。

dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync

加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际的。

dd bs=1M count=128 if=/dev/zero of=test oflag=dsync

加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取1M后就要先把这1M写入磁盘,然后再读取下面这1M,一共重复128次。这可能是最慢的一种方式了,因为基本上没有用到写缓存(write cache)。

那应该用哪一种呢?

答:建议使用

dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync

因为这种方式最接近计算机实际操作,所以测出来的数据最有参考价值。

-dsync 可以当成是模拟数据库插入操作,在/dev/zone中读出一条数据就立即写入硬盘

-fsync 同样也是将数据已经写入磁盘,但是是在经过缓存后最后再写入硬盘

时间: 2024-10-08 10:28:56

Linux系统硬盘读写测试的相关文章

Linux系统硬盘读写测试(dd、hdparm)

转载自: http://blog.sina.com.cn/s/blog_413d250e0101jtr7.html 方法一:用dd命令 Linux服务器想要知道硬盘的读写是否能满足服务的需要,我们可以使用Linux自带的dd命令测试硬盘的读写速度,方法如下: 登录SSH,输入以下命令即可,根据测试数据的大小等待返回的时间不同. Linux硬盘写入速度: # time dd if=/dev/zero of=/var/test bs=2k count=1000000 Linux硬盘读取速度: # t

Linux系统硬盘的IOPS测试

******************************************************************************************* 版权所有: www.foutime.com  深圳市方泰智能科技有限公司 通道锁 逃生锁 一卡通 楼宇对讲 停车场 ******************************************************************************************* 什么是IOPS?

linux系统硬盘分区

linux系统硬盘分区 首先我们需要了解一下linux中设备文件的命名: hda一般是指IDE接口的硬盘,hda一般指第一块硬盘,类似的有hdb,hdc! sda一般是指SATA接口的硬盘,sda一般指第一块硬盘,类似的有sdb,sdc! 第一步:-----利用fdisk进入硬盘操作 进入命令行: #fdisk /dev/sda  (SDA指的是第一块硬盘)   //第一步 然后敲入m 可以得到输入提示! 这里我们用到的命令主要有: d: 删除一个分区 n:创建一个分区 t:改变分区的类型 p:

linux系统硬盘表识

一:linux系统硬盘命名是基于文件的,一般是:/dev/hda2 和 /dev/sdb3 # /dev:是所有设备文件的存放目录. #hd和sd :它们是分区的前两字母,代表分区所在的设备类型.hd代表ide硬盘,sd代表scsi硬盘. #如hda中的a,表示分区在哪个设备上,a代表第一块硬盘,b第二块硬盘,依次类推 #hda2中的2表示分区,1-4表示主分区或扩展分区,逻辑分区从5开始,hda2表示第一块ide硬盘的第2个主分区或扩展分区. 原文地址:http://blog.51cto.co

Linux系统硬盘分区方案推荐

在计算机上安装 Linux 系统,对硬盘进行分区是一个非常重要的步骤,下面介绍几个分区方案. 方案 1 / :建议大小在 5GB 以上. swap :即交换分区,建议大小是物理内存的 1~2 倍. 方案 2 /boot  :用来存放与 Linux系统启动有关的程序,比如启动引导装载程序等,建议大小为 200MB . /    :Linux 系统的根目录,所有的目录都挂在这个目录下面,建议大小为 5GB 以上. /home  :存放普通用户的数据,是普通用户的宿主目录,建议大小为剩下的空间. sw

Linux系统硬盘扩容

参考教程:https://www.jb51.net/article/144291.htm 1.查看硬盘已经用了99% $ df -h #查看硬盘已经使用了99% 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 12K 2.0G 1% /dev/shm tmpfs 2.0G 11M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-roo

查看linux系统硬盘目录占用大小

http://jingyan.baidu.com/article/3aed632e198ae870108091b4.html du -sh /* 先看看根目录下面 du -sh /usr/* du -sh /usr/local/ * 依次类推...

LINUX系统下跑分测试脚本:unixbench.sh

linux 系统跑分测试脚本:     一.下载脚本:        wget http://teddysun.com/wp-content/uploads/unixbench.sh 二.更改权限:        chmod +x unixbench.sh 三.运行测试:        sudo bash ./unixbench.sh 等待结果... 测试时间可能会比较长,请耐性等待! 注释:由于网上找了很多方法都没有成功,这个方法亲测可行,以此博文作为记录,并且分享给有需要的小伙伴! 原文地址

Linux系统运维常见面试题汇总

一.填空题 1.?在Linux?系统 中,以文件方式访问设备 . 2. Linux?内核引导时,从文件/etc/fstab中读取要加载的文件系统 . 3. Linux?文件系统中每个文件用indoe节点来标识. 4.?全部磁盘块由四个部分组成,分别为引导块?.专用块?.?i?节点表块?和?数据存储块?. 5.?链接分为:硬链接?和?符号链接?. 6.?超级块包含了i?节点表?和?空闲块表?等重要的文件系统信息. 7.?某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数