@
ungrown mirror 怎么就不需要重建了? mirror 重建的数据量一点不少。
zfs 支持跳过空闲空间,这比 raid 卡全盘重建要快。
mirror 并不比 raid5 安全多少,因为 mirror 挂一块就变成单盘了。然后你怎么办?不重建就当单盘用?
如果你重建,复制数据怎么保证不出错?如果发现冷错误怎么办?如果仅剩的单盘挂了怎么办?
raid6 就是比 mirror 安全。因为 raid6 可以挂*任意*两块,数据依然安全。在挂一块的情况下,即使遇到冷错误也可以纠正。即使再挂一块依然能够存活。
企业用 mirror 是基于成本和性能的考虑。基于 hash 的 raid5/6 的随机同步写入性能很差。mirror 没有这个问题。企业用服务器跑应用,当然需要随机写入性能。至于数据安全性反而不是最重要的,因为正经的应用大多有备份或者使用分布式系统,单节点全毁也无所谓。
个人储存,数据安全比性能重要。nas 也就是存点照片电影之类的大文件。软 raid6 的顺序异步写入性能并不差。
@
mrzx “zfs 可以用 ssd 做 log 写缓存,不过没有内存带来的收益更大”
这句话并不对。内存是易失性储存,只能做读缓存和 write through/write aside 缓存使用。不能做 writeback 缓存使用。
操作系统和应用程序之间的共识是:同步写成功代表数据已经可靠地写入了非易失储存。flush 成功也是。因此内存无法加速随机写入性能。
想要加速随机写入性能,你需要低延迟的非易失储存,比如 SSD 。而其中低延迟长寿命的代表就是早期的 slc ssd 和 optane 。
企业级 SSD 和硬件 raid 则使用另一个做法:用 DRAM 做缓存,但是有电容、电池来保护 DRAM 里的数据。把易失的缓存变成非易失的。
一般不推荐 nas 加 slog 是因为我上面说的。nas 一般是大文件异步读写。slog 对这种情况没有帮助。如果内存不足,而且无法再升级,那么可以考虑
1. L2ARC ,这个相对安全,但是对写入没有加速作用。对读取的作用也有限。因为 metadata 还在内存里。甚至,L2ARC 还增加了 metatdata ,因为需要跟踪 L2ARC 的使用情况。
2. speicial device 。这个必须至少二度最好三度冗余。因为一旦 special device 损毁,整个池全毁。好处是 metadata 可以放在低延迟的 ssd 上。不仅把小块随机读写从机械硬盘里移了出去。而且不会显著增加内存占用。因为内存里缓存的 metadata 就算因为内存不足被驱逐,也可以迅速从 SSD 里重新读取。