如何在Linux中找到硬盘数据传输速度

时间:2020-03-21 11:44:24  来源:igfitidea点击:

本教程将教我们如何在Linux中找到硬盘数据传输速度。
换句话说,我们将识别驱动器提供数据的快速。
我们也将讨论其他有用的东西,如有多少个扇区可以立即阅读,读取先进的功能,声学模式,回写缓存和基板标记HDD等。
在我们之前的教程中,我们讨论了如何查找硬盘使用HDPARM命令行实用程序的详细信息。

现在我们将使用相同的实用程序来测量硬盘传输速度。

注意

尽管HDParm提供了提高磁盘性能的显着优势,但它也是非常危险的。
当某些参数被滥用时,它可能会导致大规模的数据丢失。
HDPARM文档表明我们不应在任何情况下使用一些命令。
所以我排除了本教程中的这种危险命令。
更重要的是,在测试Linux系统上的HDParm之前,始终建议备份硬盘驱动器。

在Linux中查找硬盘数据传输速度

要检查Linux中的HDD数据传输速度,请使用下面的-t标志运行"hdparm"命令:

$sudo hdparm -t /dev/sda

示例输出:

/dev/sda:
 Timing buffered disk reads: 246 MB in  3.00 seconds =  81.97 MB/sec

如我们所见,数据传输速率为每秒81.97 MB。
确保在后台不运行其他程序。
运行此命令至少两次或者三次,并从结果计算驱动器的平均数据传输速度。

正如我们在上面的输出中看到的那样,Linux内核将从HDD检索到的数据转移到传输数据时检索到缓冲区。
如果要测量更准确的数据传输速率,请使用:

$sudo hdparm -t --direct /dev/sda

示例输出:

/dev/sda:
 Timing O_DIRECT disk reads: 242 MB in  3.02 seconds =  80.21 MB/sec

现在,HDPARM程序不会使用缓冲区,并将直接从HDD读取数据。
如上所述,在上述输出中,传输速率在没有缓冲器的情况下减少。

HDPARM将始终从存储设备的开头读取数据。
如果希望HDParm从存储设备的其他区域读取数据,则可以使用如下所示的"偏移"参数。

$sudo hdparm -t --direct --offset 10 /dev/sda

其中10代表跳过的千兆字节数。
根据上述命令,在从磁盘读取数据时将跳过前10 GB。
在20GB磁盘上,上述命令将从磁盘中间提供数据。

示例输出:

dev/sda:
 Timing O_DIRECT disk reads (offset 10 GB): 244 MB in  3.01 seconds =  81.15 MB/sec

将HDD传输速率与偏移值进行比较。
当我们在第二个命令中使用"偏移"参数时,传输速率降低。
因此,似乎硬盘从磁盘的外部区域提供数据较慢的比特。

找到有多少扇区读取了硬盘

通常,硬盘将同时读取多个扇区以加速数据传输。
我们可以通过运行找到此值:

$sudo hdparm -I /dev/sda

在"功能"部分下,我们将看到如下所示的输出。

[...]
Capabilities:
	LBA, IORDY(can be disabled)
	Queue depth: 32
	Standby timer values: spec'd by Standard, no device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	Advanced power management level: 254
	Recommended acoustic management value: 208, current value: 208
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
[...]

根据上述输出,我的HDD一次读取16个扇区。

一些现代HDD可以提前检索扇区。
此功能称为"提前阅读"。
我们可以使用以下使用"-a"标志找到此值:

$sudo hdparm -a /dev/sda

示例输出:

/dev/sda:
 readahead     = 256 (on)

如上所述,HDD可以提前读取256个扇区。

将HDD放在安静模式下,以增加访问时间

我们可以减缓一些现代硬盘中的头部运动。
减速头移动将降低噪声水平并增加访问时间。
要检查HDD是否支持此"声学模式"功能,请运行:

$sudo hdparm -M /dev/sda

如果驱动器支持声学模式,则应如下所示的输出。

/dev/sda:
 acoustic      = 208 (128=quiet ... 254=fast)

我的系统中电流的声模式值为208.
声模式值可以设置在128到254之间。

将HDD放在安静模式下,运行:

$sudo hdparm -M 128 /dev/sda

将头部移动高速,运行:

$sudo hdparm -M 254 /dev/sda

请注意,操作系统应支持此功能。

如果不支持此功能,我们将看到以下功能:

dev/sda:
 acoustic      = not supported

回写缓存

启用回写缓存模式时,HDD将将数据放在缓冲区中。
这样,硬盘可以更快地写入。

要验证重写缓存模式是否已启用,请使用"-w"标志。

$sudo hdparm -W /dev/sda

示例输出:

/dev/sda:
 write-caching =  1 (on)

如果输出值为1,则启用回写缓存功能。
如果是0,则禁用回写缓存。
我们可以使用命令启用它:

$sudo hdparm -W1 /dev/sda

如果HDParm无法启用此功能,请确保在BIOS中启用了回写缓存功能。

要禁用它,只需使用:

$sudo hdparm -W0 /dev/sda

尽管写入缓存增加了写入速度,但在某些情况下不建议使用。
例如,当电源突然消失时,缓冲区中的数据将永久丢失。
因此,在运行PostgreSQL等数据库程序时,不应启用回写缓存功能。

基准硬盘

要基准硬盘并测试驱动器的可读速度,请使用下面的大写"T"和小写"T"标志。

$sudo hdparm -Tt /dev/sda

示例输出:

/dev/sda:
 Timing cached reads:   7232 MB in  1.99 seconds = 3629.42 MB/sec
 Timing buffered disk reads: 250 MB in  3.01 seconds =  82.99 MB/sec

重复此命令至少2-3次以获得有意义的结果。

如果我们不喜欢命令行方式,GNOME磁盘GUI程序还允许我们使用基准硬盘。

从菜单或者短划线打开磁盘。
选择要基准的磁盘,然后单击三个点,然后选择"基准磁盘"选项。

单击"启动基准"选项以启动基准标记:

有关更多详细信息,请检查人文页。

$man hdparm