V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kyonn
V2EX  ›  程序员

请教下 btrfs 搭配 bcache 的问题

  •  
  •   kyonn · 1 天前 · 471 次点击

    搜索了下, 发现必须把原有机械硬盘和 ssd 重新格式化为 bcache 格式的 data 和 cache 才行, 再在 bcache 格式的块设备上建立 btrfs 文件系统.

    如果直接在机械硬盘上建立 btrfs 文件系统, 利用 btrfs add/replace 工具, 支持新增/替换硬盘, 加上 bcache 后有几个问题:

    1. 如果要新增, 替换硬盘, 是不是只要把 btrfs add/replace 的命令对象从 /dev/sda 这种机械硬盘块设备换成 /dev/bcache0 就可以了.

    2. 如果 bcache 使用读缓存模式, 在某天 ssd 坏了后, 是不是取消 echo f0e01318-f4fd-4fab-abbb-d76d870503ec > /sys/block/bcache0/bcache/attach 这个绑定缓存的命令, 就能让 bcache 下的 btrfs 机械硬盘继续工作(换句话说, bcache data 是否支持无缓存工作)?

    3. 更换 ssd 后, 是不是重新绑定又能再次启用读缓存? 是否需要修复什么旧数据?

    4. 如果部分机械硬盘用 bcache 建立 data, 部分还是直接裸盘, 这种混合的 btrfs raid 有没有什么风险?

    5. bcache 读缓存模式加速机械硬盘收益如何, 有没有别的坑会导致数据损坏或丢失, 提高了修复难度, 反而得不偿失?

    bcache 参考链接: https://wiki.archlinux.org/title/Bcache

    4 条回复    2025-04-03 13:45:42 +08:00
    zcl0621
        1
    zcl0621  
       23 小时 33 分钟前
    hmm ,三年前弄的 pve 集群,说实话有点忘了,说的不对请见谅

    1,2,3 没法回答,忘干净了

    4. 我印象中我们做了实验,没有什么收益,吞吐量反而降低了,最后方案用的一块 pciessd 做的 bcache ;如果把 ssd 做写缓存的话,可能会存在 ssd<->hdd 数据不一致的问题

    5. 有收益,但不大,我记得是能保证 4k 的读取来着,具体测试结果我忘干净了,后面新加机器还是走的这套方案
    xlingshi64
        2
    xlingshi64  
       22 小时 29 分钟前
    1. 是
    新发行版用 btrfs replace 命令可以替换磁盘,老发行版用 btrfs add 、delete

    2. 是,bcache 支持无缓存模式,也即是单纯建立 hdd 的 bcache 设备,而没有 cache 设备。

    3. 读缓存,不需要修复,detach 后重新 attach ,会重新建立缓存。
    kyonn
        3
    kyonn  
    OP
       20 小时 38 分钟前
    @zcl0621

    问 4 主要是因为有部分老数据的机械硬盘不想动它, 如果要绑定 bcache 又要重新格式化倒腾数据, 只想把新增的硬盘加入 bcache. 目前只打算用读缓存.
    吞吐量下降是怎么个说法呢? 哪种方案对比哪种方案吞吐量下降了? 如果能详细点说明就更好了, 感谢.
    kyonn
        4
    kyonn  
    OP
       20 小时 37 分钟前
    @xlingshi64 好的, 非常感谢, 这 3 个问题确认了的话, 用 bcache 感觉就没太大风险.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2311 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 02:22 · PVG 10:22 · LAX 19:22 · JFK 22:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.