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

本指南将教您如何在 Linux 中找到硬盘数据传输速度。 换句话说,我们将确定您的硬盘在 Linux 和类 Unix 操作系统中传输数据的速度。

我们还将讨论其他有用的内容,例如 HDD 一次可以读取多少个扇区、预读功能、声学模式、回写缓存和基准测试硬盘等。

出于本指南的目的,我们将使用 hdparm 用于检查硬盘驱动器的读写速度和测试硬盘性能的命令行实用程序。

以防万一你错过了,我们已经使用了 hdparm 效用 查找硬盘驱动器详细信息 在 Linux 中。 现在我们将使用相同的 hdparm 用于测量硬盘传输速度的实用程序。

一句小心的话

虽然 hdparm 为提高磁盘性能提供了显着的优势,它也是 极其危险. 当某些参数被滥用时,很可能会导致大量数据丢失。 hdparm 文档表明 在任何情况下都不应该使用某些命令. 所以我在本指南中排除了这些危险的命令。 更重要的是,始终建议在测试硬盘之前备份您的硬盘驱动器 hdparm 在您的 Linux 系统上。

内容

  1. 在 Linux 中查找硬盘数据传输速度
    1. 查找硬盘读取的扇区数
    2. 将硬盘置于安静模式以增加访问时间
    3. 写回缓存
    4. 从命令行对硬盘进行基准测试
    5. 使用 GNOME Disks 图形实用程序对硬盘进行基准测试
  2. 结论

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

要检查 Linux 中的硬盘数据传输速度,请运行 "hdparm" 命令与 -t 标志如下:

$ sudo hdparm -t /dev/sda

示例输出:

/dev/sda:  Timing buffered disk reads: 246 MB in  3.00 seconds =  81.97 MB/sec
在 Linux 中使用 hdparm 命令检查硬盘驱动器速度

如您所见,数据传输速率为 81.97 MB 每秒。 确保没有其他程序在后台运行。

hdparm 命令至少两到三次,然后根据结果计算驱动器的平均数据传输速度。

正如您在上面的输出中看到的,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 程序不会使用缓冲区,而是直接从硬盘读取数据。 正如您在上面的输出中注意到的,在没有缓冲区的情况下,传输速率降低了。

Hdparm 将始终从存储设备的开头读取数据。 如果你想 hdparm 要从存储设备的其他区域读取数据,您可以使用 "offset" 参数如下。

$ 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
在 Linux 中查找硬盘数据传输速度

比较有和没有偏移值的硬盘传输速率。 当我们使用 "offset" 第二个命令中的参数,传输速率已降低。 因此,似乎硬盘从磁盘的外部区域传输数据的速度要慢一些。

查找硬盘读取的扇区数

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

$ sudo hdparm -I /dev/sda

在下面 "Capabilities" 部分,您将看到如下所示的输出。

[...] 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  [...]

根据上面的输出,我的硬盘读取 16 sectors 一次。

一些现代 HDD 可以提前检索扇区。 此功能称为 "read ahead". 您可以使用以下方法找到此值 "-a" 标志如下:

$ sudo hdparm -a /dev/sda

示例输出:

/dev/sda: readahead     = 256 (on)

正如你在上面的输出中看到的,硬盘可以读取 256 部门提前。

将硬盘置于安静模式以增加访问时间

我们可以减慢一些现代硬盘中的磁头运动。 减慢头部运动会降低噪音水平并增加访问时间。

检查您的硬盘是否支持此功能 "acoustic mode" 功能,运行:

$ sudo hdparm -M /dev/sda

如果您的驱动器支持声学模式,您应该得到如下输出。

/dev/sda: acoustic      = 208 (128=quiet ... 254=fast)
检查硬盘是否支持声学模式检查硬盘是否支持声学模式

当前声学模式值为 208 在我的系统中。 声学模式值可以设置在 128254.

要将 HDD 置于安静模式,请运行:

$ sudo hdparm -M 128 /dev/sda

要使头部运动高速,请运行:

$ sudo hdparm -M 254 /dev/sda

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

如果不支持此功能,您将看到:

dev/sda:  acoustic      = not supported

写回缓存

当启用Write-back缓存模式时,硬盘会将要写入的数据放入缓冲区。 这样硬盘可以写得更快。

要验证是否启用了回写缓存​​模式,请使用“-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 这样的数据库程序时,你不应该启用回写缓存功能。

从命令行对硬盘进行基准测试

要对 HDD 进行基准测试并测试驱动器的可读速度,请使用大写 "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
Linux 中的基准硬盘驱动器在 Linux 中通过 CLI 对硬盘驱动器进行基准测试

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

有关更多详细信息,请查看手册页。

$ man hdparm

使用 GNOME Disks 图形实用程序对硬盘进行基准测试

如果你不喜欢命令行方式, GNOME 磁盘 GUI 程序还允许您对硬盘进行基准测试。

从菜单或破折号打开磁盘。 选择要进行基准测试的磁盘,然后单击三个点并选择 “基准磁盘” 选项。

使用 GNOME 磁盘对硬盘进行基准测试使用 GNOME 磁盘对硬盘进行基准测试

点击 “开始基准” 开始基准测试的选项:

在 Linux 中使用 GNOME 磁盘启动 Benchmark在 Linux 中使用 GNOME 磁盘启动 Benchmark

结论

在本指南中,我们讨论了如何在 Linux 中找到硬盘数据传输速度(即硬盘传输数据的速度)。 我们还研究了如何使用 Gnome Disks GUI 实用程序从命令行模式和图形模式对硬盘进行基准测试。

来自Pixabay的精选图片。

CLI命令行GNOME磁盘硬盘数据传输速度HdparmLinuxLinux命令