1. 为什么需要SSD缓存加速机械硬盘家里搭建NAS的朋友应该都深有体会机械硬盘最大的痛点就是随机读写性能差。我最初用两块16TB机械硬盘组存储池时实测随机4K读取速度只有2MB/s左右打开个照片文件夹都要转圈圈等半天。后来发现SSD缓存这个神器性能直接飙升15倍体验完全不同。SSD缓存的核心原理很简单利用固态硬盘的高速特性把频繁访问的热数据缓存起来。当系统需要读取数据时优先从SSD获取写入数据时也先暂存在SSD再异步写入机械盘。这种设计完美结合了SSD的速度和HDD的容量优势。实际使用中我发现SSD缓存对以下几种场景提升特别明显照片/视频库的缩略图生成虚拟机磁盘的随机访问数据库文件的频繁读写多人同时访问的共享文件夹2. bcache缓存方案详解2.1 bcache的三种工作模式bcache提供了三种缓存模式我实测下来每种模式的性能差异很大writeback模式读写都在SSD完成性能最好我的测试数据显示随机读取可达300MB/s缺点是断电可能丢失未同步数据适合对性能要求高的媒体服务器writethrough模式读取走缓存写入同时写SSD和HDD随机读取约250MB/s写入稍慢数据安全性更好适合家庭照片库等场景writearound模式只缓存读取写入直接到HDD读取约200MB/s写入最慢SSD寿命最长适合冷数据备份存储2.2 bcache的安装与配置在Ubuntu上安装bcache非常简单sudo apt update sudo apt install bcache-tools初始化缓存设备时要注意先初始化后端设备机械硬盘sudo make-bcache -B /dev/sdc1再初始化缓存设备SSDsudo make-bcache -C /dev/sdb我建议在初始化前先用wipefs清理设备签名sudo wipefs -a /dev/sdb sudo wipefs -a /dev/sdc12.3 缓存模式切换技巧通过sysfs可以动态调整缓存模式无需重启# 查看当前模式 cat /sys/block/bcache0/bcache/cache_mode # 切换为writeback echo writeback /sys/block/bcache0/bcache/cache_mode我建议根据使用场景灵活调整白天家庭成员活跃使用时用writeback夜间自动切换为writethrough备份任务时用writearound3. 文件系统优化实践3.1 XFS文件系统配置XFS特别适合大文件存储我的配置参数如下sudo mkfs.xfs -f -i size2048 -d su64k,sw4 /dev/bcache0关键参数说明-i size2048增大inode大小提升大文件性能su64k条带单元匹配SSD块大小sw4条带宽度与CPU核心数对应挂载时建议启用discard支持UUIDxxx /mnt/data xfs defaults,discard 0 03.2 读写性能调优通过调整内核参数提升缓存效率# 增大预读 echo 4096 /sys/block/bcache0/bcache/read_ahead_kb # 启用写入合并 echo 1 /sys/block/bcache0/bcache/writeback_running echo 10 /sys/block/bcache0/bcache/writeback_delay4. 实战性能对比测试我用fio做了详细的基准测试随机4K读取模式IOPS延迟(ms)纯HDD5008.2writearound150000.68writethrough450000.22writeback750000.13顺序128K写入模式吞吐量(MB/s)纯HDD180writearound210writethrough240writeback520从测试可以看出writeback模式在小文件随机访问场景提升最为明显特别适合作为家庭媒体服务器的缓存方案。而如果更关注数据安全writethrough则是更好的平衡选择。
家用 NAS 服务器(3)| 优化 SSD 缓存策略:提升机械硬盘性能的进阶技巧
发布时间:2026/6/20 8:02:46
1. 为什么需要SSD缓存加速机械硬盘家里搭建NAS的朋友应该都深有体会机械硬盘最大的痛点就是随机读写性能差。我最初用两块16TB机械硬盘组存储池时实测随机4K读取速度只有2MB/s左右打开个照片文件夹都要转圈圈等半天。后来发现SSD缓存这个神器性能直接飙升15倍体验完全不同。SSD缓存的核心原理很简单利用固态硬盘的高速特性把频繁访问的热数据缓存起来。当系统需要读取数据时优先从SSD获取写入数据时也先暂存在SSD再异步写入机械盘。这种设计完美结合了SSD的速度和HDD的容量优势。实际使用中我发现SSD缓存对以下几种场景提升特别明显照片/视频库的缩略图生成虚拟机磁盘的随机访问数据库文件的频繁读写多人同时访问的共享文件夹2. bcache缓存方案详解2.1 bcache的三种工作模式bcache提供了三种缓存模式我实测下来每种模式的性能差异很大writeback模式读写都在SSD完成性能最好我的测试数据显示随机读取可达300MB/s缺点是断电可能丢失未同步数据适合对性能要求高的媒体服务器writethrough模式读取走缓存写入同时写SSD和HDD随机读取约250MB/s写入稍慢数据安全性更好适合家庭照片库等场景writearound模式只缓存读取写入直接到HDD读取约200MB/s写入最慢SSD寿命最长适合冷数据备份存储2.2 bcache的安装与配置在Ubuntu上安装bcache非常简单sudo apt update sudo apt install bcache-tools初始化缓存设备时要注意先初始化后端设备机械硬盘sudo make-bcache -B /dev/sdc1再初始化缓存设备SSDsudo make-bcache -C /dev/sdb我建议在初始化前先用wipefs清理设备签名sudo wipefs -a /dev/sdb sudo wipefs -a /dev/sdc12.3 缓存模式切换技巧通过sysfs可以动态调整缓存模式无需重启# 查看当前模式 cat /sys/block/bcache0/bcache/cache_mode # 切换为writeback echo writeback /sys/block/bcache0/bcache/cache_mode我建议根据使用场景灵活调整白天家庭成员活跃使用时用writeback夜间自动切换为writethrough备份任务时用writearound3. 文件系统优化实践3.1 XFS文件系统配置XFS特别适合大文件存储我的配置参数如下sudo mkfs.xfs -f -i size2048 -d su64k,sw4 /dev/bcache0关键参数说明-i size2048增大inode大小提升大文件性能su64k条带单元匹配SSD块大小sw4条带宽度与CPU核心数对应挂载时建议启用discard支持UUIDxxx /mnt/data xfs defaults,discard 0 03.2 读写性能调优通过调整内核参数提升缓存效率# 增大预读 echo 4096 /sys/block/bcache0/bcache/read_ahead_kb # 启用写入合并 echo 1 /sys/block/bcache0/bcache/writeback_running echo 10 /sys/block/bcache0/bcache/writeback_delay4. 实战性能对比测试我用fio做了详细的基准测试随机4K读取模式IOPS延迟(ms)纯HDD5008.2writearound150000.68writethrough450000.22writeback750000.13顺序128K写入模式吞吐量(MB/s)纯HDD180writearound210writethrough240writeback520从测试可以看出writeback模式在小文件随机访问场景提升最为明显特别适合作为家庭媒体服务器的缓存方案。而如果更关注数据安全writethrough则是更好的平衡选择。