低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

2025-02-24 13:21:36 28点赞 78收藏 20评论

引言

之前自己搭建的150元的 NAS,发现机械硬盘,传输速度在100mb左右徘徊,有时候发个碎片文件,速度严重下降,这个问题忒严重,这不准备上个二手的固态做缓存。

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

正好把台式机的系统盘拆下来,却遭遇了新问题。固态硬盘的速度从原本的 500 多 MB/秒骤降至 170 多 MB/秒,且降速呈山峰状极不稳定,与常见的 SSD 掉速情况不同。我严重怀疑是固态硬盘缓存满了导致掉速。

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

实际上,固态硬盘在使用中确实可能因缓存写满而出现掉速现象,这也是一个常见的冷知识。

为进一步排查问题,我把固态硬盘拆下,通过 M2 转 SATA 接口进行单独测速。

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

结果显示,其速度稳定在 128MB/秒左右,表现十分稳定。由此推测,问题可能出在 NAS 系统上,比如网络问题、主控过热保护(这种情况相对少见),也可能是主控为避免 SSD 降频发热,或者是缓存被占满。

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

全程速度稳定的可怕

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

想了半天,问题应该是缓存,鉴于问题集中在磁盘缓存方面,当缓存写满后性能必然受影响,因此需要对 NAS 缓存进行策略调整。

因为搭建的NAS是Linux系统,给我后续修改提供便利,直接改Bache或者LVM chche

这两种方式都是将 SSD 作为缓存来加速机械硬盘(HHD),即数据先写入 SSD 缓存,再在后台慢慢写入 HHD。考虑到 LVM cache 需要改写磁盘,操作相对复杂,所以我决定采用 Bcache 为机械硬盘加速。

相关概念及策略

在使用 Bcache 之前,我们需要了解几个关键概念。

Bcache 支持三种缓存策略:

1、writeback(回写策略):所有数据先写入缓存盘,随后等待系统将数据回写到后端数据盘,该策略性能最佳。
2、writethrough(直写策略):这是 Bcache 的默认策略,数据会同时写入缓存盘和后端数据盘。 3、writearound:数据直接写入后端磁盘,此策略性能最差。

Bcache 还具备以下主要功能:

可使用单个超速缓存设备为任意数量的后备设备加速,且在运行时能挂载和分离已使用的后备设备。
支持在非正常关机后恢复,确保只有在超速缓存与后备设备数据一致时才完成写入。
当 SSD 出现拥塞时,能限制传至 SSD 的流量。
拥有高效的写回实施方案,脏数据始终按排序顺序写出。
系统稳定可靠,可用于生产环境。

好了,废话不多说,直接上操作步骤

作步骤

安装工具包

Bcache 通过 make - bcache 命令创建,需要安装相关工具包 bcache - tools。我们可以从 GitHub 下载源码进行编译安装:

  1. 下载源码(使用了 GitHub 链接代理加速):wget https://github.moeyy.xyz/https://github.com/g2p/bcache-tools/archive/refs/tags/v1.0.8.tar.gz

  2. 解压源码压缩包:tar -zxvf v1.0.8.tar.gz

  3. 安装依赖:yum install libblkid - devel -y

  4. 编译安装(若没有 make 命令需自行安装软件包):make && make install

格式化硬盘分区

在将硬盘应用到 Bcache 模式之前,需将目标分区格式化为 Bcache,此操作会破坏磁盘分区中的所有数据。如果磁盘是首次使用或为空,通常可跳过擦除分区文件信息这一步;若磁盘已挂载,需先卸载,否则会出现“device busy”的错误。

使用命令:wipefs -a /dev/sdb /dev/sdc

创建缓存和后端设备

  1. 创建缓存(Cache):将 SSD 的分区作为缓存,使用命令:make - bcache -C /dev/sdc1。可通过 bcache - super - show /dev/sdc1 查看相关信息。

  2. 创建后端(Backend):创建被加速的后端设备,即机械硬盘(HDD),使用命令:make - bcache -B /dev/sdb,同样可通过 bcache - super - show /dev/sdb 查看信息。

设备绑定

之后就是通过Bache绑定磁盘设置cache设备的block_size。

测速:优化后的读写速度如下:达到270M左右,很稳定。

低成本NAS从掉速到性能翻倍:基于Bcache的NAS缓存优化实践

总结:

通过Bcache实现SSD缓存加速,本质是以软件策略弥补硬件瓶颈这玩意是仁者见仁智者见智,主要是损失SSD读写次数给HHD换来读写速度。反正是旧的128G,不值啥钱。

注:数据无价,妥善保存!!!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
20评论

  • 精彩
  • 最新
  • 360的 [小眼睛] 充电器

    校验提示文案

    提交
    哈哈,是的

    校验提示文案

    提交
    收起所有回复
  • 我比较想知道,这个架子怎么买

    校验提示文案

    提交
    多多,硬盘架

    校验提示文案

    提交
    18快买的,哈哈,多多

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 群晖自带的缓存加速策略可以吗

    校验提示文案

    提交
    不知道啊,我这是Linux底层的

    校验提示文案

    提交
    没试过

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 这么多硬盘,太耗电。

    校验提示文案

    提交
    不到30W,够用

    校验提示文案

    提交
    收起所有回复
  • 飞牛能用吗?

    校验提示文案

    提交
  • 硬盘杀手

    校验提示文案

    提交
    此话怎解?

    校验提示文案

    提交
    换个傲腾玩bcache合适,消费级ssd用bcache,回写策略激进些的话,寿命掉很快。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 讲的很好 下次试试 目前我的方案是用windows下的primocache 更灵活,划分了16gb内存给他了 用来pt加速

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
78
扫一下,分享更方便,购买更轻松