linux怎么查看硬盘读写数据,Linux查看硬盘读写情况(汇总版)

除了 CPU 和内存,硬盘读写(I/O)能力也是影响 Linux 系统性能的重要因素之一。本节将介绍几个可用来查看硬盘读写性能的系统命令,并教大家如何通过这些命令的输出结果,判断出当前系统中硬盘是否处于超负荷运转。

Linux查看硬盘读写性能:sar -d命令

《Linux sar命令》一节,已经对 sar 命令的基本用法做了详细的介绍,这里不再赘述,接下来主要讲解如何通过 sar -d 命令分析出硬盘读写的性能。

下面是执行 sar -d 命令的输出结果样例:

[root@localhost ~]# sar -d 3 5

Linux 2.6.32-431.el6.x86_64 (localhost) 10/25/2019 _x86_64_ (1 CPU)

06:36:52 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

06:36:55 AM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

06:36:55 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

06:36:58 AM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00

06:36:58 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

06:37:01 AM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02

结合以上输出结果,可以遵循如下标准来判断当前硬盘的读写(I/O)性能:

通常情况下 svctm 的大小和硬盘性能有关,其值小于 await。但需要注意的是,CPU、内存的负荷也会对 svctm 的值造成影响,过多的请求也会间接导致 svctm 值的增加。

await 值通常会受到 svctm、I/O 队列长度以及 I/O 请求模式的影响,如果 svctm 的值和 await 很接近,则表示几乎没有 I/O 等待,当前硬盘的性能很好;如果 await 的值远高于 svctm,则表示 I/O 队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

%util 项也是衡量硬盘 I/O 性能的重要指标,即如果其值接近 100%,就表示硬盘产生的 I/O 请求太多,I/O 系统正在满负荷工作,长期这样会影响系统的性能。必要时,可以优化程序或者更换更大、更快的硬盘来解决这个问题。

Linux查看硬盘读写性能:iostat -d命令

通过执行 iostat -d 命令,也可以查看系统中硬盘的使用情况,如下是执行此命令的一个样例输出:

[root@localhost ~]# iostat -d 2 3

Linux 2.6.32-431.el6.x86_64 (localhost) 10/30/2019 _x86_64_ (8 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 5.29 337.11 9.51 485202 13690

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 1.00 8.00 16.00 16 32

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 0.00 0.00 0.00 0 0

此输出结果中,我们重点看后面 4 列,它们各自表示的含义分别是:

Blk_read/s:表示每秒读取的数据块数;

Blk_wrtn/s:表示每秒写入的数据块数;

Blk_read:表示读取的所有块数;

Blk_wrtn:表示写入的所有块数。

注意,此输出结果中,第一次输出的数据是系统从启动以来直到统计时的所有传输信息,从第二次输出的数据开始,才代表在指定检测时间段内系统的传输值。

根据 iostat 命令的输出结果,我们也可以从中判断出当前硬盘的 I/O 性能。比如说,如果 Blk_read/s 的值很大,就表示当前硬盘的读操作很频繁;同样,如果 Blk_wrtn/s 的值很大,就表示当前硬盘的写操作很频繁。对于 Blk_read 和 Blk_wrtn 的大小,没有一个固定的界限,不同的系统应用对应值的范围也不同。但如果长期出现超大的数据读写情况,通常是不正常的,一定程度上会影响系统性能。

不仅如此,iostat 命令还提供了统计指定硬盘 I/O 状况的方法,即使用 -x 选项。例如:

[root@localhost ~]# iostat -x /dev/sda 2 3

Linux 2.6.32-431.el6.x86_64 (localhost) 10/30/2019 _x86_64_ (8 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

0.09 0.00 0.24 0.26 0.00 99.42

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 2.00 0.56 2.92 0.44 206.03 7.98 63.56 0.03 9.99 5.31 1.79

avg-cpu: %user %nice %system %iowait %steal %idle

0.31 0.00 0.06 0.00 0.00 99.62

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

avg-cpu: %user %nice %system %iowait %steal %idle

0.50 0.00 0.06 0.00 0.00 99.44

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

此输出结果基本和 sar -d 命令的输出结果相同,需要额外说明的几个选项的含义如下:

rrqm/s:表示每秒被合并的读操作数目(文件系统会对读取同一 block 块的请求进行合并)

wrqm/s:表示每秒被合并的写操作数目;

r/s:表示每秒完成读 I/O 设备的次数;

w/s:表示每秒完成写 I/O 设备的次数;

rsec/s:表示每秒读取的扇区数;

wsec/s:表示每秒写入的扇区数;

Linux查看硬盘读写性能:vmstat -d命令

使用 vmstat 命令也可以查看有关硬盘的统计数据,例如:

[root@bogon ~]# vmstat -d 3 2

disk- ------------reads------------ ------------writes----------- -----IO------

total merged sectors ms total merged sectors ms cur sec

sda 6897 4720 485618 71458 1256 1475 21842 9838 0 43

disk- ------------reads------------ ------------writes----------- -----IO------

total merged sectors ms total merged sectors ms cur sec

sda 6897 4720 485618 71458 1256 1475 21842 9838 0 43

该命令的输出结果显示了硬盘的读(reads)、写(writes)以及 I/O 的使用状态。

以上主要讲解了如何通过命令查看当前系统中硬盘 I/O 的性能,其实影响硬盘 I/O 的因素是多方面的,例如应用程序本身、硬件设计、系统自身配置等等。

要想解决硬盘 I/O 的瓶颈,关键是要提高 I/O 子系统的执行效率。比如说,首先从应用程序上对硬盘读写性能进行优化,能够放到内存中执行的操作尽量别保存到硬盘里(内存读写效率要远高于硬盘读写效率);其次,还可以对硬盘存储方法进行合理规划,选择合适的 RAID 存储方式;最后,选择适合自身应用的文件系统,必要时可以使用裸设备提高硬盘的读写性能。

在裸设备上,数据可以直接读写,不必经过操作系统级别的缓存,还可以避免文件系统级别的维护开销(文件系统需要维护超级块、I-node 块等)以及操作系统的 cache 预读功能(减少了 I/O 请求)。

### 回答1: Linux硬盘读写测试是一种测试硬盘性能的方法,通过测试硬盘读写速度和稳定性来评估硬盘的性能。这种测试可以帮助用户选择最适合自己需求的硬盘,并且可以帮助用户检测硬盘是否存在问题。在Linux系统,可以使用一些工具来进行硬盘读写测试,比如hdparm、dd、fio等。这些工具可以测试硬盘读写速度、IOPS、延迟等指标,从而帮助用户了解硬盘的性能表现。 ### 回答2: Linux硬盘读写测试是一项非常重要的检测硬盘性能的任务,可以用来确定硬盘读取和写入数据的速度和稳定性。这项测试通常在购买新硬件和建立服务器的时候进行,也可以在对硬盘进行修复或优化时使用。 在Linux操作系统下,有很多命令可以用于进行硬盘读写测试,其最常用的是dd命令和hdparm命令。 使用dd命令进行硬盘读写测试非常简单,首先需要选择要测试的文件和存储路径,然后使用以下命令进行测试: dd if=/dev/zero of=/tmp/test bs=64k count=16k conv=fdatasync 其,if=/dev/zero表示从一个空白文件读取数据,of=/tmp/test表示将测试结果写入/tmp/test文件,bs=64k表示块大小为64KB,count=16k表示测试总大小为1GB,conv=fdatasync表示将写入的数据同步写出。测试完成后,使用以下命令查看结果: sync; echo 3 > /proc/sys/vm/drop_caches && time dd if=/tmp/test of=/dev/null bs=64k count=16k 这个命令将会计算硬盘从/tmp/test文件读取数据并写入/dev/null文件的时间,输出结果包括读写速度和运行时间,供用户参考和分析。 另一个常用的命令是hdparm,可以通过以下命令测试硬盘读写速度: sudo hdparm -Tt /dev/sda 其,-Tt表示测试缓存读写速度和磁盘读写速度,/dev/sda表示要测试的硬盘设备。测试完成后,输出结果会显示出硬盘读写速度和其他相关信息,供用户进一步了解硬盘性能。 总体而言,进行Linux硬盘读写测试可以帮助用户评估硬盘读写性能和稳定性,从而为后续使用和维护提供指导。用户可以根据自己的需求和条件选择合适的命令和参数进行测试,以获得最准确的结果。 ### 回答3: Linux硬盘读写测试是测试Linux系统用于磁盘读写的性能、速度和可靠性的一种测试工具。硬盘读写测试是评估硬盘性能和可靠性的一种标准测试。 在Linux系统,可以使用一些工具来进行硬盘读写测试,其最常用的是iozone、hdparm等。用于测试的设备通常是磁盘设备,包括SCSI、SATA、IDE等。 在使用iozone进行测试时,可以通过指定测试数据大小、块大小、并发数等参数来测试不同的读写条件下的性能表现。通过测试得出的结果包括最大读操作、最大写操作、文件大小、直接IO等多项指标。这些指标可以用来评估磁盘的读写性能和是否在设计要求下运行。 除了iozone以外,还可以使用hdparm进行硬盘测试。hdparm可以进行一些高级的硬盘操作,如读取硬盘缓存、设置硬盘缓存等。使用hdparm进行测试时,可以通过设置不同的参数来控制磁盘的读写行为,如缓存大小、数据传输模式等。 总的来说,硬盘读写测试是测试系统硬件性能和稳定性的一个关键步骤。在测试,磁盘的读写性能和稳定性对于系统的性能和稳定性至关重要。测试结果能够告知管理员该磁盘是否满足其所需的读写速度和性能要求,对于系统性能的提升有着非常重要的作用。利用以上提到的一些工具和方法,Linux管理员能够很好地对系统进行硬盘读写测试和评估,提高系统的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值