<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Fio on 吾爱主机</title><link>https://blog.waihost.com/tags/fio/</link><description>Recent content in Fio on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 04 Jun 2025 10:22:04 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/fio/index.xml" rel="self" type="application/rss+xml"/><item><title>测试bcache优化IO是否生效</title><link>https://blog.waihost.com/posts/bcache-io-benchmark-test/</link><pubDate>Wed, 04 Jun 2025 10:22:04 +0800</pubDate><guid>https://blog.waihost.com/posts/bcache-io-benchmark-test/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/bcache-io-benchmark-test.svg" alt="Featured image of post 测试bcache优化IO是否生效" /&gt;&lt;p&gt;在配置了 &lt;code&gt;bcache&lt;/code&gt; 之后，测试 IO 速度是否有效提升是一个很好的步骤。这通常涉及到对比缓存生效和未生效（或直接访问后端存储）时的性能差异。由于 &lt;code&gt;bcache&lt;/code&gt; 是一个透明的缓存层，精确地“关闭”缓存来做对比测试比较复杂，但我们可以通过特定测试方法来观察缓存的效果。&lt;/p&gt;
&lt;p&gt;最推荐的测试工具是 &lt;code&gt;fio&lt;/code&gt; (Flexible I/O Tester)，它非常强大且可配置。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="1-安装-fio-如果尚未安装"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85-fio-%e5%a6%82%e6%9e%9c%e5%b0%9a%e6%9c%aa%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;1. 安装 &lt;code&gt;fio&lt;/code&gt; (如果尚未安装)
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对于 Debian/Ubuntu 系统:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install fio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于 CentOS/RHEL/Fedora 系统:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo yum install fio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 或者
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# sudo dnf install fio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="2-测试缓存效果的关键概念"&gt;&lt;a href="#2-%e6%b5%8b%e8%af%95%e7%bc%93%e5%ad%98%e6%95%88%e6%9e%9c%e7%9a%84%e5%85%b3%e9%94%ae%e6%a6%82%e5%bf%b5" class="header-anchor"&gt;&lt;/a&gt;2. 测试缓存效果的关键概念
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;预热缓存 (Warm-up)&lt;/strong&gt;: 对于读缓存，第一次读取数据块时，数据会从慢速的后端 HDD (&lt;code&gt;md10&lt;/code&gt;) 加载到快速的 SSD 缓存 (&lt;code&gt;md4&lt;/code&gt;) 中。后续对相同数据块的读取请求应该直接由 SSD 缓存提供服务，速度会快得多。因此，测试前通常需要一个“预热”阶段。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试文件大小&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;测试缓存读取性能时，测试文件应小于 SSD 缓存 (&lt;code&gt;md4&lt;/code&gt; 大小为 825.1G) 但又要足够大以避免完全被系统内存缓存。例如，一个 20GB-100GB 的文件。&lt;/li&gt;
&lt;li&gt;如果要测试超出缓存能力的情况，文件大小应远大于 SSD 缓存。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;fio&lt;/code&gt; 的 &lt;code&gt;direct=1&lt;/code&gt; 选项&lt;/strong&gt;: 这个选项会使 &lt;code&gt;fio&lt;/code&gt; 绕过操作系统的页缓存 (page cache)，直接对存储设备进行 IO 操作。这对于测试 &lt;code&gt;bcache&lt;/code&gt; 自身的性能非常有用，可以减少系统内存缓存带来的干扰。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;监控 &lt;code&gt;bcache&lt;/code&gt; 统计信息&lt;/strong&gt;: 在测试期间，监控 &lt;code&gt;bcache&lt;/code&gt; 的命中率等统计数据可以帮助了解缓存是否在按预期工作。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 打开一个新的终端窗口来监控
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;watch -n 1 &amp;#39;echo &amp;#34;== Cache Stats ==&amp;#34;; cat /sys/block/bcache0/bcache/stats_total/cache_hits /sys/block/bcache0/bcache/stats_total/cache_misses /sys/block/bcache0/bcache/stats_total/cache_bypass_hits /sys/block/bcache0/bcache/stats_total/cache_bypass_misses; echo &amp;#34;&amp;#34;; echo &amp;#34;== Other Stats ==&amp;#34;; echo -n &amp;#34;Dirty Data: &amp;#34;; cat /sys/block/bcache0/bcache/dirty_data; echo -n &amp;#34;State: &amp;#34;; cat /sys/block/bcache0/bcache/state; echo -n &amp;#34;Writeback Rate: &amp;#34;; cat /sys/block/bcache0/bcache/writeback_rate; echo -n &amp;#34;Cache Mode: &amp;#34;; cat /sys/block/bcache0/bcache/cache_mode&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="3-使用-fio-进行性能测试"&gt;&lt;a href="#3-%e4%bd%bf%e7%94%a8-fio-%e8%bf%9b%e8%a1%8c%e6%80%a7%e8%83%bd%e6%b5%8b%e8%af%95" class="header-anchor"&gt;&lt;/a&gt;3. 使用 &lt;code&gt;fio&lt;/code&gt; 进行性能测试
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;重要&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;请将测试命令中的 &lt;code&gt;/mnt/cached_storage/testfile&lt;/code&gt; 替换为您 &lt;code&gt;bcache&lt;/code&gt; 设备的实际挂载点和您选择的测试文件名。&lt;/li&gt;
&lt;li&gt;测试会产生大文件，测试完成后记得删除 (&lt;code&gt;sudo rm /mnt/cached_storage/testfile*&lt;/code&gt;)。&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;fio&lt;/code&gt; 命令通常不需要 &lt;code&gt;sudo&lt;/code&gt;，除非您写入的目录需要特定权限，或者您要操作原始块设备（不推荐初学者直接操作块设备进行基准测试）。这里我们测试的是挂载的文件系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="a-顺序读取性能-测试缓存效果"&gt;&lt;a href="#a-%e9%a1%ba%e5%ba%8f%e8%af%bb%e5%8f%96%e6%80%a7%e8%83%bd-%e6%b5%8b%e8%af%95%e7%bc%93%e5%ad%98%e6%95%88%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;A. 顺序读取性能 (测试缓存效果)
&lt;/h4&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建并预热测试文件&lt;/strong&gt;:&lt;br&gt;
首先，创建一个较大的测试文件。这个过程也会将文件数据写入缓存（取决于您的写入模式和可用缓存空间）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=prepare_seq_read_file --rw=write --bs=1M --filename=/mnt/cached_storage/testfile_seq_read --size=50G --direct=1 --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个命令会创建一个 50GB 的文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第一次读取 (可能部分来自 HDD，同时填充缓存)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=seq_read_warmup --rw=read --bs=1M --filename=/mnt/cached_storage/testfile_seq_read --size=50G --direct=1 --group_reporting --iodepth=32
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;(可选) 清理系统页缓存&lt;/strong&gt;: 确保后续读取不是来自内存。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sync #确保所有挂起的写操作完成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第二次读取 (应主要来自 SSD 缓存)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=seq_read_cached --rw=read --bs=1M --filename=/mnt/cached_storage/testfile_seq_read --size=50G --direct=1 --group_reporting --iodepth=32
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;比较第二次读取的吞吐量 (BW 项，通常单位是 MB/s 或 GB/s)。如果缓存有效，这个速度应该接近您的 &lt;code&gt;md4&lt;/code&gt; (NVMe SSD RAID0) 的读取速度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="b-随机读取性能-测试缓存效果"&gt;&lt;a href="#b-%e9%9a%8f%e6%9c%ba%e8%af%bb%e5%8f%96%e6%80%a7%e8%83%bd-%e6%b5%8b%e8%af%95%e7%bc%93%e5%ad%98%e6%95%88%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;B. 随机读取性能 (测试缓存效果)
&lt;/h4&gt;&lt;p&gt;随机读取是 SSD 缓存能带来显著提升的典型场景。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;创建并预热测试文件&lt;/strong&gt; (如果尚未使用上一步的文件，或者需要一个专门的随机读文件):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=prepare_rand_read_file --rw=write --bs=4k --filename=/mnt/cached_storage/testfile_rand_read --size=50G --direct=1 --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第一次随机读取 (预热)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=rand_read_warmup --rw=randread --bs=4k --filename=/mnt/cached_storage/testfile_rand_read --size=50G --direct=1 --numjobs=4 --group_reporting --iodepth=64 --runtime=120s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里使用 &lt;code&gt;--runtime&lt;/code&gt; 来限制测试时间，因为完整读取50GB的4k随机块会非常慢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;(可选) 清理系统页缓存&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;第二次随机读取 (应主要来自 SSD 缓存)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=rand_read_cached --rw=randread --bs=4k --filename=/mnt/cached_storage/testfile_rand_read --size=50G --direct=1 --numjobs=4 --group_reporting --iodepth=64 --runtime=120s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;关注 IOPS (每秒操作次数) 和吞吐量 (BW)。SSD 缓存应该能提供远高于 HDD 的随机读取 IOPS。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="c-写入性能"&gt;&lt;a href="#c-%e5%86%99%e5%85%a5%e6%80%a7%e8%83%bd" class="header-anchor"&gt;&lt;/a&gt;C. 写入性能
&lt;/h4&gt;&lt;p&gt;写入性能很大程度上取决于您 &lt;code&gt;bcache&lt;/code&gt; 的缓存模式 (&lt;code&gt;writethrough&lt;/code&gt;, &lt;code&gt;writeback&lt;/code&gt;, &lt;code&gt;writearound&lt;/code&gt;)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;如果是 &lt;code&gt;writeback&lt;/code&gt; 模式&lt;/strong&gt;: 写入操作首先进入 SSD 缓存，速度应该很快，接近 &lt;code&gt;md4&lt;/code&gt; 的写入速度，直到缓存变满或开始强制回写。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=seq_write_test_wb --rw=write --bs=1M --filename=/mnt/cached_storage/testfile_seq_write --size=50G --direct=1 --group_reporting --iodepth=32
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;如果是 &lt;code&gt;writethrough&lt;/code&gt; 模式&lt;/strong&gt;: 写入操作需要同时写入 SSD 和 HDD，所以持续写入速度可能更接近较慢的 HDD (&lt;code&gt;md10&lt;/code&gt;)，但对于突发写入和小文件写入，SSD 仍能起到加速作用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=seq_write_test_wt --rw=write --bs=1M --filename=/mnt/cached_storage/testfile_seq_write --size=50G --direct=1 --group_reporting --iodepth=32
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="4-简单-dd-测试-快速检查但不全面"&gt;&lt;a href="#4-%e7%ae%80%e5%8d%95-dd-%e6%b5%8b%e8%af%95-%e5%bf%ab%e9%80%9f%e6%a3%80%e6%9f%a5%e4%bd%86%e4%b8%8d%e5%85%a8%e9%9d%a2" class="header-anchor"&gt;&lt;/a&gt;4. 简单 &lt;code&gt;dd&lt;/code&gt; 测试 (快速检查，但不全面)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;dd&lt;/code&gt; 可以用于非常简单的顺序读写测试，但其结果可能受多种因素影响，不如 &lt;code&gt;fio&lt;/code&gt; 精确。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试写 (结果受缓存模式影响)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 创建一个10GB的文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd if=/dev/zero of=/mnt/cached_storage/dd_testfile bs=1M count=10000 status=progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试读 (第一次，预热)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd if=/mnt/cached_storage/dd_testfile of=/dev/null bs=1M status=progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;清理系统页缓存&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sync
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试读 (第二次，应从缓存)&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd if=/mnt/cached_storage/dd_testfile of=/dev/null bs=1M status=progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="5-如何解读结果"&gt;&lt;a href="#5-%e5%a6%82%e4%bd%95%e8%a7%a3%e8%af%bb%e7%bb%93%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;5. 如何解读结果
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对比基线&lt;/strong&gt;: 您可能对您 HDD (&lt;code&gt;sda&lt;/code&gt;, &lt;code&gt;sdb&lt;/code&gt; 组成的 &lt;code&gt;md10&lt;/code&gt;) 单独的性能有一个大概的了解 (例如，顺序读写可能在 200-300MB/s，随机 IOPS 较低)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSD 缓存效果&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;读取&lt;/strong&gt;: 经过预热后，对已缓存数据的读取速度应该接近您的 &lt;code&gt;md4&lt;/code&gt; (NVMe SSD RAID0) 的性能。NVMe RAID0 的顺序读取速度可能达到数 GB/s，随机 IOPS 非常高。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;写入 (&lt;code&gt;writeback&lt;/code&gt; 模式)&lt;/strong&gt;: 写入速度也应该接近 &lt;code&gt;md4&lt;/code&gt; 的写入性能，直到缓存写满。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;监控 &lt;code&gt;bcache&lt;/code&gt; 统计&lt;/strong&gt;: 如果测试时 &lt;code&gt;cache_hits&lt;/code&gt; 远大于 &lt;code&gt;cache_misses&lt;/code&gt;，说明缓存正在有效地服务请求。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="6-清理测试文件"&gt;&lt;a href="#6-%e6%b8%85%e7%90%86%e6%b5%8b%e8%af%95%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;6. 清理测试文件
&lt;/h3&gt;&lt;p&gt;测试完成后，记得删除创建的大型测试文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm /mnt/cached_storage/testfile*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm /mnt/cached_storage/dd_testfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过这些测试，您应该能够量化 &lt;code&gt;bcache&lt;/code&gt; 配置带来的性能提升，特别是在读取热数据和随机 IO 方面。&lt;/p&gt;</description></item><item><title>硬盘速度IOPS评估测试</title><link>https://blog.waihost.com/posts/disk-iops-benchmark/</link><pubDate>Thu, 20 Mar 2025 16:53:38 +0800</pubDate><guid>https://blog.waihost.com/posts/disk-iops-benchmark/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/disk-iops-benchmark.svg" alt="Featured image of post 硬盘速度IOPS评估测试" /&gt;&lt;p&gt;在 Debian 12 中测试硬盘的 &lt;strong&gt;IOPS（每秒输入输出操作次数）&lt;/strong&gt;，推荐使用专业的磁盘性能测试工具 &lt;code&gt;fio&lt;/code&gt;（Flexible I/O Tester）。以下是详细操作步骤：&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="1-安装测试工具"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85%e6%b5%8b%e8%af%95%e5%b7%a5%e5%85%b7" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 安装测试工具&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;首先安装 &lt;code&gt;fio&lt;/code&gt; 和必要的依赖：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install fio -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="2-使用"&gt;&lt;a href="#2-%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 使用 &lt;code&gt;fio&lt;/code&gt; 测试 IOPS&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="基本语法"&gt;&lt;a href="#%e5%9f%ba%e6%9c%ac%e8%af%ad%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;基本语法&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fio --name=测试名称 --ioengine=libaio --direct=1 --rw=读写模式 --bs=块大小 --size=测试文件大小 --numjobs=并发任务数 --runtime=测试时间 --time_based --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="示例测试-4k-随机读的-iops"&gt;&lt;a href="#%e7%a4%ba%e4%be%8b%e6%b5%8b%e8%af%95-4k-%e9%9a%8f%e6%9c%ba%e8%af%bb%e7%9a%84-iops" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;示例：测试 4K 随机读的 IOPS&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo fio --name=random_read --ioengine=libaio --direct=1 --rw=randread --bs=4k --size=1G --numjobs=1 --iodepth=32 --runtime=60 --time_based --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="参数说明"&gt;&lt;a href="#%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;参数说明&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--rw=randread&lt;/code&gt;：测试随机读（可选：&lt;code&gt;randwrite&lt;/code&gt;、&lt;code&gt;randrw&lt;/code&gt;、&lt;code&gt;read&lt;/code&gt;、&lt;code&gt;write&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--bs=4k&lt;/code&gt;：模拟 4KB 小文件操作（更贴近真实 IOPS 场景）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--iodepth=32&lt;/code&gt;：队列深度（模拟高并发请求）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--size=1G&lt;/code&gt;：生成 1GB 的临时测试文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--numjobs=1&lt;/code&gt;：并发任务数（可增加模拟多线程负载）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--runtime=60&lt;/code&gt;：测试持续 60 秒。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="3-测试场景示例"&gt;&lt;a href="#3-%e6%b5%8b%e8%af%95%e5%9c%ba%e6%99%af%e7%a4%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 测试场景示例&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="场景14k-随机写-iops"&gt;&lt;a href="#%e5%9c%ba%e6%99%af14k-%e9%9a%8f%e6%9c%ba%e5%86%99-iops" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;场景1：4K 随机写 IOPS&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo fio --name=random_write --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --size=1G --numjobs=1 --iodepth=32 --runtime=60 --time_based --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="场景2混合读写70读--30写"&gt;&lt;a href="#%e5%9c%ba%e6%99%af2%e6%b7%b7%e5%90%88%e8%af%bb%e5%86%9970%e8%af%bb--30%e5%86%99" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;场景2：混合读写（70%读 + 30%写）&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo fio --name=mixed_io --ioengine=libaio --direct=1 --rw=randrw --rwmixread=70 --bs=4k --size=1G --numjobs=4 --iodepth=64 --runtime=120 --time_based --group_reporting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="4-解读测试结果"&gt;&lt;a href="#4-%e8%a7%a3%e8%af%bb%e6%b5%8b%e8%af%95%e7%bb%93%e6%9e%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;4. 解读测试结果&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;运行完成后，重点关注以下输出：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;read: IOPS=xxxx, BW=xxMiB/s (xxMB/s)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;write: IOPS=xxxx, BW=xxMiB/s (xxMB/s)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lat (usec): min=xx, max=xx, avg=xx, stdev=xx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IOPS&lt;/strong&gt;：每秒操作次数（值越高性能越好）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BW&lt;/strong&gt;：带宽（吞吐量）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;lat&lt;/strong&gt;：延迟（越低越好）。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="5-其他工具辅助参考"&gt;&lt;a href="#5-%e5%85%b6%e4%bb%96%e5%b7%a5%e5%85%b7%e8%be%85%e5%8a%a9%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;5. 其他工具（辅助参考）&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="a"&gt;&lt;a href="#a" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;a. &lt;code&gt;dd&lt;/code&gt; 测试连续读写速度（非 IOPS）&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 测试连续写入速度（1GB文件，块大小1M）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd if=/dev/zero of=./testfile bs=1M count=1024 oflag=direct status=progress
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 测试连续读取速度
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dd if=./testfile of=/dev/null bs=1M status=progress
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="b-使用"&gt;&lt;a href="#b-%e4%bd%bf%e7%94%a8" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;b. 使用 &lt;code&gt;iostat&lt;/code&gt; 监控实时 IO&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install sysstat -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iostat -d -x 1 # 每秒刷新一次磁盘统计信息
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="6-注意事项"&gt;&lt;a href="#6-%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;6. 注意事项&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;测试目标选择&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果测试物理硬盘，建议直接指定设备路径（如 &lt;code&gt;/dev/sdX&lt;/code&gt;），但需注意&lt;strong&gt;这会覆盖数据&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;若测试文件系统性能，建议在未使用的目录生成临时文件（如本例中的 &lt;code&gt;./testfile&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;避免缓存影响&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;--direct=1&lt;/code&gt; 绕过系统缓存，直接访问磁盘。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试前清理缓存（可选）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SSD/HDD 差异&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSD 的 IOPS 通常远高于 HDD（尤其是随机读写）。&lt;/li&gt;
&lt;li&gt;NVMe SSD 需结合高队列深度（如 &lt;code&gt;--iodepth=64&lt;/code&gt;）发挥性能。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="7-示例结果对比"&gt;&lt;a href="#7-%e7%a4%ba%e4%be%8b%e7%bb%93%e6%9e%9c%e5%af%b9%e6%af%94" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;7. 示例结果对比&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SATA SSD（4K 随机读）&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IOPS ≈ 80,000-100,000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NVMe SSD（PCIe 4.0, 4K 随机读）&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IOPS ≈ 1,000,000+
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;HDD（7200 RPM, 4K 随机读）&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;IOPS ≈ 80-150
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;通过 &lt;code&gt;fio&lt;/code&gt; 的灵活配置，可以模拟真实场景的负载压力，准确评估硬盘的 IOPS 性能。建议根据实际应用需求调整测试参数（如块大小、队列深度、读写比例）。&lt;/p&gt;</description></item></channel></rss>