在折腾 NAS(常规 x86 主机),系统用的是 Ubuntu 20.04 LTS,应该启用 ZFS 吗(或者说目前 ZFS 的优势是什么)

2022-06-27 15:51:27 +08:00
 LxnChan
4414 次点击
所在节点    Linux
23 条回复
SIGEV13
2022-06-27 17:01:04 +08:00
ZFS 有几个功能比较方便存储服务器用:
- Raid-Z: 比硬件控制器更灵活的 Raid 方案,RAID 可以只影响部分硬盘的部分扇区
- 自带 snapshot , 方便备份恢复
- 存储分层,方便添加 cache

注意 ZFS 作 RAID-Z 时候需要大量内存,并且它完全信任内存里的数据,长期开机最好配上 ECC 内存以免丢失数据。
LxnChan
2022-06-27 17:13:29 +08:00
@SIGEV13 目前是只有系统准备用 ZFS ,不知道有没有比 EXT4 更有必要?另外我看 ubuntu 论坛有人发过帖说快照不好恢复和不便管理等问题是否存在?谢谢。
blueboyggh
2022-06-27 17:23:43 +08:00
NAS 的话,弄一个专业的 NAS 系统不好吗?
matolv
2022-06-27 17:25:46 +08:00
zfs 就是个软 raid 系统,你盘多可以用,盘少未必有必要。
优点很多了,主要是写时拷贝,删数据非真删除,可以靠快照恢复。把内存当缓存提高读取速度。对数据自带各种级别校验,文件级 /块级,数据可靠性高。迁移方便,自带部分或全池远程传输命令。
楼上说的 ecc 内存么自然是最好的,但也不是必要的,因为内存出错概率不高,只是出错了数据就没了,看你对数据重视程度了。一般来说 recc 便宜,可靠性高,用于 hedt 或者 server 平台。
最便宜的就是 e5 v3/v4 洋垃圾,双路可以上到 1T 内存,实际 128~256G 就可以开杜甫或者小鸡卖钱了。
guozozo
2022-06-27 17:28:02 +08:00
装了 omv ,其他服务用 docker 。
ruidoBlanco
2022-06-27 17:45:29 +08:00
自己不明白为什么要的情况下,那就是不需要。因为你不知道自己为什么要,你怎么能够权衡?

这种情况下,挑简单成熟的方案来。

ext4 对你和大部分的用户都够了,最多加个 LVM 。ZFS 的强大需要内存和多盘的支持,并不是只有少量几块盘的用户的最省心选择。
GrayXu
2022-06-27 18:20:35 +08:00
@SIGEV13 好奇,“它完全信任内存里的数据”。有什么文件系统是不信任内存里的数据的?如果都是 metadata 错误了,什么文件系统都得挂吧。。
SIGEV13
2022-06-27 19:09:10 +08:00
@LxnChan 论必要性没有。
如果想要提高性能,LVM 也可以提供 striping 和 mirroring 的功能,类似 raid0 和 raid1.
如果担心数据丢失,文件系统能帮的忙有限,RAID 的目的是高可用性,部分硬盘故障依然可以提供服务,不是预防数据丢失,这是备份的职责。
ZFS 配置 RaidZ 以后恢复数据时候它偏重数据完整性,如果卷或者内存有错误,不能通过校验冗余恢复,它宁可放弃数据卷也不恢复可能包含错误的数据。 如果用 EXT4 等传统文件系统,是可以宁可数据出错也要抢救尽可能多的数据的。
最简单的还是硬件 RAID 卡,配上 UPS :)
12101111
2022-06-27 19:39:12 +08:00
抛开 raid, zfs 快照备份非常方便, zstd 透明压缩压缩比也很大, zvol 上跑虚拟机也能利用上快照和透明压缩
felixcode
2022-06-27 19:43:17 +08:00
借楼问一下 Debian 或 Ubuntu 对 zfs 的支持怎么样了,稳定性都没问题了吗
bsfmig
2022-06-27 19:54:56 +08:00
@SIGEV13 在不开 Dedup 的时候,TrueNAS 有 8G 内存就完全足够用了,Ubuntu 也一样。
statumer
2022-06-27 19:57:38 +08:00
如果你有很多硬盘,那么你可以尝试用 zfs 解决你的问题。
如果你硬盘不多,可能就两三块,那么 zfs 完全没必要,feature rich 的 fs 同时也是 bug rich 的。
codefun666
2022-06-27 21:22:31 +08:00
显然用 Centos ,默认文件系统是 Ubuntu 。NAS 是服务器, 用 Ubuntu 干嘛
codefun666
2022-06-27 21:22:55 +08:00
写错了,没法撤回。

显然用 Centos ,默认文件系统是 ZFS 。NAS 是服务器, 用 Ubuntu 干嘛
y830CAa5nink4rUQ
2022-06-27 22:00:19 +08:00
三个盘以上建议上 ZFS ,非常好用。

楼上说的一些言论是错的,或者是片面的,我挑几个来回应:

1. 内存占用大

这个不完全对。
事实上,ZFS 有两个功能可能会占用大量内存:

一是 Dedup (数据去重)功能,这个默认是关闭的,所以不会占你内存。
二是 Cache (数据缓存),这个功能可以大幅提高磁盘随机 IO 性能,对数据库之类需要频繁磁盘随机 IO 的应用有很大帮助。但是也是可以默认关闭的。关闭后不影响你正常使用,只是内存加速效果没了,性能可能会低一半左右。如果只是用来做文件存储,不需要频繁随机磁盘 IO ,或者对磁盘性能要求不是非常高,其实没必要开启。

这两个功能关闭后,内存占用和别的文件系统并无太大差别。

2. 完全信任内存数据,所以内存数据出错导致数据丢失

这个是怎么说呢,也不是说它错,但是这个跟 ZFS 无关。

首先,所有系统都是完全信任内存数据的,内存出错了,系统本身都无法保证正常运行,如何保证不丢数据?

然后,ZFS 是日志型文件系统。所有磁盘写入都先写入 ZIL (日志)并且 Flush ,Flush 成功后 ZFS 即认为写入完成,并且可以保证数据是安全的,如果 ZIL 没写入完成系统就挂掉了,那么这次写入失败,下次系统启动会自动回滚到正确的位置(也就是相当于没有这次写入)。

注:
ZIL 是一个日志设备(一个独立磁盘或者一个磁盘分区),会需要频繁写入,可以根据硬件条件灵活配置,可以配置为独立占用一个磁盘分区,也可以独立占用一块磁盘,比如配置一块高性能 SSD 或者一块傲腾磁盘。

ZIL 对容量要求不高,16~32G 即可。条件足够的情况下,建议配置一块小的独立 SSD 。
dzdh
2022-06-27 22:13:44 +08:00
跟随红帽 9 一起升级的 stratisd ,给你跟 zfs 一样的体验。

所有衍生版都支持。almalinux 、fedora 、rockylinux
sidkang
2022-06-27 22:15:07 +08:00
楼主可以看着 openzfs 的 feature 以及对于 raid 功能本身对照一下自己需求不就有答案了。

https://openzfs.org/wiki/Main_Page
tulongtou
2022-06-27 22:20:26 +08:00
不知道自己有没有需求,那么就是没需求。ext4 一把梭,潮流点儿点 btrfs 一把梭
neteroster
2022-06-27 23:33:00 +08:00
如果你对数据完整性有要求,也就是说你希望数据出了一丁点问题你都必须知道,而且希望文件系统不会给你错误的数据,那用 ZFS (with ECC) 基本是唯一的选择(比如我,多年强迫症患者)。如果对这一点没有要求,ZFS 的很多其他功能都是可替代的。当然 send/receive 快照啊这些也确实好用。
我的建议是不妨先试试看,如果对你的应用场景性能没啥影响不妨就用着。
abbottcn
2022-06-28 09:03:19 +08:00
鄙人有一个古老的 Mac mini ,安装了 Ubuntu 20.04 。默认用的 zfs 。忽然有一天,崩溃了。

这个机器基本空载……某次重启失败了,接显示器一看,挂了……扔给我一个 busybox 。

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

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

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

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

© 2021 V2EX