Linux系统中使用 DD 命令测试 USB 和 SSD 硬盘的读写速度
创始人
2024-03-01 13:25:58
0

磁盘驱动器速度

磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。

在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。

数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。

这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。

测试方法

挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。

DD 命令通用语法格式如下:

dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks

当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。

固态硬盘

我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。

这次实验中,我们把硬盘接在 SATA 2.0 端口上。

写入速度

首先让我们写入固态硬盘

$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s

的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。

读取速度

现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。

运行下面的命令来清除内存缓存

$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

现在读取此文件

$ dd if=./largefile of=/dev/null bs=4k
165118+0 records in
165118+0 records out
676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s

在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。

https://wiki.archlinux.org/index.php/SSD_Benchmarking

USB

此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。

首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。

Sony 4GB - 写入

这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。

# dd if=/dev/zero of=./largefile bs=8k count=10000
10000+0 records in
10000+0 records out
81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s

因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。

Sony 4GB - 读取

把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。

$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

现在就可以使用 DD 命令来读取文件了。

# dd if=./largefile of=/dev/null bs=8k
8000+0 records in
8000+0 records out
65536000 bytes (66 MB) copied, 2.65218 s, 24.7 MB/s

读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。

USB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。

上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。

下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。

Strontium 16gb 盘写入速度

# dd if=/dev/zero of=./largefile bs=64k count=1000
1000+0 records in
1000+0 records out
65536000 bytes (66 MB) copied, 8.3834 s, 7.8 MB/s

Strontium 16gb 盘读取速度

# sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

# dd if=./largefile of=/dev/null bs=8k
8000+0 records in
8000+0 records out
65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s

它的读取速度就要比 Sony 的低了。

参考资料


关于 Silver Moon

Php 开发者, 博主 和 Linux 爱好者. 通过 m00n.silv3r@gmail.com 或者 Google+ 可联系到他。

相关内容

总价6750万镑!埃泽成水...
直播吧08月21日讯 多家媒体报道阿森纳将以总价6750万镑(60...
2025-08-21 18:14:08
香港应对失业率持续攀升
当地人失业率持续上升的同时为何持续输入外来劳动力?中国香港将如何解...
2025-08-21 11:45:52
华瑞指数云发布AI原生数据...
在人工智能作为引领新一轮科技革命和产业变革的战略性技术迅猛发展之际...
2025-08-20 12:43:56
重磅!华为发布突破性技术—...
华为在2025金融AI推理应用落地与发展论坛上,正式发布了一项AI...
2025-08-20 06:43:38
开源证券:首次覆盖奥飞数据...
开源证券股份有限公司蒋颖,雷星宇近期对奥飞数据进行研究并发布了研究...
2025-08-19 13:43:02
微博加码AI搜索,智搜能否...
8月14日,微博发布2025年第二季度财报。二季度微博总营收4.4...
2025-08-18 20:18:55

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...