关于 zfs

2023-01-10 21:36:23 +08:00
 xinmans

zfs add disk 的设计真挫,很容易出问题,不如直接取消不带 mirror 或者 raid 报错 另外,zfs 的写性能比较挫,不是 pt 下载,大家有推荐的 pt 下载的文件系统吗?(除了上 ssd 方案,纯 sata 方案) 除此之外,zfs 真香,16T 狂盘多不用担心

9803 次点击
所在节点    NAS
87 条回复
LeoJ
2023-01-10 22:31:16 +08:00
上个 raid 卡,组个 5 不香么… zfs 的掉盘恢复简直了
busier
2023-01-10 22:38:22 +08:00
一直再用 btrfs ,没有早些年网传的那么糟糕,而且比 zfs 操作简单!
ryd994
2023-01-11 00:51:24 +08:00
1. 你应该先 dry-run ,确认无误后再操作。或者用空白文件当硬盘,实验过命令无误再操作
2. 具体是同步写还是异步写?异步写和其他文件系统差别不大。同步写 zfs 会写两次,可以考虑用 ssd 做 slog

@LeoJ
1. 单盘容量超过 2T ,raid5 就是垃圾。单盘容量增加,读写速度并没有增加。非 SSD ,重建速度论天计。重建期间再坏一块,数据就完蛋了。而且 SATA 协议本身就允许少量错误。一般硬盘的 ure 在 10^-15 左右(乐观估计)。重建成功了,但是没有校验,ure 导致数据完蛋了。
好歹用个 raid6 吧
2. 除非启动盘,否则没必要用硬件 raid 。现今的 CPU 已经很强大了,远比便宜的 raid 卡好。软件 raid 比硬件 raid 的性能只好不差。同时还可以方便地使用 smart 来监控硬盘状态。只有启动盘不方便使用软件 raid 。
3. 无 bbu 的 raid 卡做硬件 raid ,特别是 raid5/6 这样的需要 hash 的 raid ,性能非常差,还不如软 raid 。
4. 硬件 raid 无校验。高端硬件 raid 当然可以。但是一般人买得起的洋垃圾配件就别拿出来说了。9220+zfs 比同等价位的硬件 raid 要靠谱得多。而且能选择性重建,重建速度更快。

@zhangjint5 自从 5 年前 btrfs 出 bug 搞丢我数据以来我就不会再用 btrfs 。
btrfs 至今依然无法称得上 production ready 。生产服谁敢用?也就 Fedora 试验田敢在桌面版上推荐使用。因为 Fedora 的地位就是试验田啊。
btrfs raid 的问题更是多了去了。
https://btrfs.readthedocs.io/en/latest/btrfs-man5.html#raid56-status-and-recommended-practices
>> should not be used in production, only for evaluation or testing.
ryd994
2023-01-11 00:53:54 +08:00
如果只是 pt 数据,不考虑数据安全,那当然是 ext4 或者 xfs 。都是老牌的文件系统,稳定性没问题。也不需要 raid 。bt 缓存没了就没了。需要保留的文件复制到其他储存去。
Jirajine
2023-01-11 02:15:33 +08:00
@ryd994 SUSE Linux Enterprise (包括服务器版) 默认使用 btrfs ,这个不能说是试验田吧。
即使部分 raid 功能还不稳定,单单写时复制的快照和事物更新,在企业场景都是非常有用的。
ryd994
2023-01-11 04:07:45 +08:00
@Jirajine Btrfs is the default file system for the operating system and XFS is the default for all other use cases.

系统盘才用 btrfs 。熟悉服务器的人都知道,系统盘不存数据。定期备份一下配置文件就好了。

数据盘默认是 xfs
sNullp
2023-01-11 04:37:13 +08:00
@LeoJ 都 3202 了居然还有推荐阵列卡的。。现在都不都是把整列卡刷成 hba 用么
msg7086
2023-01-11 04:39:45 +08:00
@sNullp 阵列卡有阵列卡的用途,维护起来无脑就是其优点,机房的人闭着眼睛拔坏盘插好盘就行了。
只不过家用实在没必要上阵列卡。
beijiaoff
2023-01-11 08:16:21 +08:00
pt 的话直接 basic 不阵列就很好。组阵列几乎没有任何收益。不过 lz 问的不是文件系统吗? windows 就是 ntfs ,mac 就是 afs ,linux 就是 ext4 btrfs 这些,这些也不影响你的应用吧。
ungrown
2023-01-11 08:56:18 +08:00
@ryd994 #3 其实多年以前网络上就有文章表达过这样的观点:一般场景下,mirror 比 RAID 可靠、简单、好用。
SgtPepper
2023-01-11 09:17:52 +08:00
@ryd994 一般 r740 这种,带 bbu 的硬 raid 卡比起软 raid 哪个好点?
fonlan
2023-01-11 09:27:29 +08:00
@ryd994 我记得群晖 NAS 默认就是推荐用 BTRFS ,应该算是 production ready 了吧
xinh
2023-01-11 09:36:32 +08:00
你们都能看懂主题吗😂

“不是 pt 下载” 是打错字? BT 下载执行的是 16k 随机读写,可以将下载存储池的 recordsize 设置成 16k
ungrown
2023-01-11 10:17:06 +08:00
@LeoJ #1 RAID 阵列重建所需要的操作量就摆在那,没法绕过,不管是软的硬的,都避不开这个 IO 量,重建过程中要是再坏个盘,哭都没用,这些问题只要是 RAID 就无法避免,ZFS 也一样,RAID 卡当然也一样。
所以乖乖用 mirror 模式,压根没有重建的问题,用容量去换可靠性、便利性。
raptor
2023-01-11 10:27:04 +08:00
现在这年代还在推荐 raid5 的都是没死过的……反正我十几年前就已经不敢用 raid5 了……
mrzx
2023-01-11 10:47:52 +08:00
对数据安全性较低的,对读写性能要求较高的,用 raid5,不过缺点也显而易见,因为你购买的多数硬盘都一个批次,一个硬盘坏掉后,很可能在重组时,坏掉第 2 快盘,那么 raid5 就失效了。整盘数据丢失。


对数据安全性较高的,对读写性能要求较低的,用 raid6,不过缺点也显而易见,尤其是写的速度,那是连 raid5 都不如。相对同时允许坏 2 块盘以上。

而我在项目中,大多用 raid10


zfs 可以用 ssd 做 log 写缓存,不过没有内存带来的收益更大。。。zfs 需要超量的内存,而且必须是 ecc 内存。甚至 turenas 的官方都推荐一个公式,1TB 存储空间=1GB 内存,比如你有 8 块 8T 硬盘,那内存最好不要低于 64G ,内存总之越大越好,内存越多,zfs 写入和读取性能越好。
很多人跑 zfs ,内存小的可怜,又组的是 raidz2,那写入和读取速度自然不理想。


而且 zfs 是不建议上硬件 raid 卡的。会成为 zfs 的性能瓶颈,且硬件 raid 卡一旦损坏+停产,你想恢复数据就很困难了,我在项目中遇到好几次这种事情。。。多备份数据才是王道。
ryd994
2023-01-11 12:00:46 +08:00
@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 里重新读取。
ungrown
2023-01-11 12:08:40 +08:00
@ryd994 #17 请给你的阅读理解模块的智能联想插件调整一下参数!
我说阵列重建 IO 量大
我说用 mirror 比 RAID 简单可靠
你强行脑补出我并没有说的 mirror 重建比 RAID 重建数据量少

至于为什么 mirror 比 RAID 方便可靠
https://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/
8675bc86
2023-01-11 12:55:54 +08:00
Linux 上优先 btrfs 吧,虽然我曾经是 ZFS 内核开发团队的人。
ungrown
2023-01-11 12:57:02 +08:00
@ryd994 #17 个人存储,数据安全很重要,但不是最重要的,最重要的是成本。
当我只有两块硬盘的时候,“可以承受任意两块硬盘损坏”这种特性,难道能帮到我哪怕半点忙吗?
不能吧?
所以说捏~
做好数据分类,重要的数据做好备份,反正这事儿本来就得做,无关乎有没有冗余、哪种类型的冗余。
云备份是个好东西,反正用 encfs 套一层加密就不用担心被审查删除,一个百度网盘 SVIP 一年 200 元不到而且还有等级成长容量一年比一年高,对个人用户来说是绝佳的云备份仓库。
准备好这些后路,单盘无冗余也不用太害怕,双盘直接 mirror 更放心。
我是不准备上 3 盘、4 盘的,徒增功耗和麻烦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX