我的存储最佳实践

嗯,去年入手了一台星际蜗牛矿机以后开始了NAS的折腾之路,研究不少linux下存储的方案。

以下平台全都基于arch,因为无所不能的 arch wiki + pacman -Syu 升级实在方便。

记录一下折腾过程中的各式碎碎念。

一些看的背景知识

1. 文件系统

brtfs


brtfs 很长时间被看作 linux 官方社区钦定的ext4继承人,天命所归的下一代文件系统。然而早期无数严重的毁数据 bug 伤透了用户的心,几乎沦为了最臭名昭著的不稳定文件系统之一。

对于我来说放弃brtfs的主要原因可能在于它依然孱弱的 raid 功能。raid 5/6 被标记为高危的,任何断电都会导致脏数据问题,raid 1 也是脆弱的,大量报告于它在损失一块硬盘后再面对断电和URE错误变得极端脆弱。

而 wiki 不建议在 brtfs 下增加类似LVM MDADM的虚拟层,因为这起码会导致写放大等性能问题,但是 Synology 好像就是这么做的,把 brtfs 加入 lvm 和 SHR 上层进行管理,只能说他们可能做了一些 hack 有自信解决多层存储的整合问题。

综上:

zfs


zfs 依然是目前口碑最好的文件系统,只有一个问题:并不是 linux 主线支持。这意味除了需要自己编译以外,你绝不能像我一样热爱 Pacman -Syu 体验最新内核。

所以对我完全出局了。

但 zfs 的确是伟大的文件系统——只要你愿意用 freebsd 。 brtfs 一直以来都把 zfs 看作主要的对手和先驱,zfs 提供了几乎所有称之为现代文件系统的特性——raid checksum cow 还有令人称道的定期维护和激进的内存缓冲。

老实说,因为我用的都是二手垃圾盘我真的很眼馋一个能够定期用 checksum 去检查数据的东西。

ext4,xfs


凑合用吧,要啥自行车。

我在用。

2. 卷管理工具


lvm

主流卷管理全家桶,啥都有,最常用的功能就是 jbod

mdadm

主流软 raid 实现,正在用。没啥好抱怨的,能用,靠谱,但是状态不是很直观。

我在用。

3. ssd cache

bcache

FB 家的新鲜玩意儿,但是很少看到其他家用,需要写入超级块所以和 brtfs 不大兼容,性能比 lvmcache 强,作者最近跑去开发 bcachefs 了,所以维护比较懒了。

我在用。

lvmcache

LVM全家桶,泛用性好,性能差。

目前在用的架构 mount-point

转(To do

尽管琢磨了不少多盘文件系统的事情,最近却在研究重新放弃 raid 。

重要的文档数据做了云备份之后,电影啊动漫啊之类的大类数据实在没必要 raid 。