问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
什么值得买
1.
https://post.smzdm.com/p/a44nm708/

本文分享了一位技术爱好者通过Bcache技术优化低成本NAS存储性能的经验。从问题发现到解决方案的实施,详细记录了整个优化过程,包括工具安装、设备配置和性能测试等关键步骤。对于IT技术人员和NAS用户来说,这篇文章提供了实用的技术参考和解决方案。

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

引言

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

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

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

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

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

全程速度稳定的可怕

想了半天,问题应该是缓存,鉴于问题集中在磁盘缓存方面,当缓存写满后性能必然受影响,因此需要对 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左右,很稳定。

总结:

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

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号