V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LxnChan
V2EX  ›  Linux

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

  •  
  •   LxnChan ·
    lxnchan · 2022-06-27 15:51:27 +08:00 · 4456 次点击
    这是一个创建于 911 天前的主题,其中的信息可能已经有所发展或是发生改变。
    23 条回复    2022-06-29 15:11:13 +08:00
    SIGEV13
        1
    SIGEV13  
       2022-06-27 17:01:04 +08:00   ❤️ 1
    ZFS 有几个功能比较方便存储服务器用:
    - Raid-Z: 比硬件控制器更灵活的 Raid 方案,RAID 可以只影响部分硬盘的部分扇区
    - 自带 snapshot , 方便备份恢复
    - 存储分层,方便添加 cache

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

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

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

    显然用 Centos ,默认文件系统是 ZFS 。NAS 是服务器, 用 Ubuntu 干嘛
    y830CAa5nink4rUQ
        15
    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
        16
    dzdh  
       2022-06-27 22:13:44 +08:00   ❤️ 1
    跟随红帽 9 一起升级的 stratisd ,给你跟 zfs 一样的体验。

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

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

    这个机器基本空载……某次重启失败了,接显示器一看,挂了……扔给我一个 busybox 。
    dfgxcvbcv
        21
    dfgxcvbcv  
       2022-06-28 11:24:56 +08:00
    我上周刚问的这个问题 /t/860916
    wowawesome
        22
    wowawesome  
       2022-06-29 09:29:00 +08:00
    如果你不知道你为什么要启用的 ZFS, 那你就应该选择 EXT4
    ungrown
        23
    ungrown  
       2022-06-29 15:11:13 +08:00
    我家里自组的 NAS 从一开始就是 ZFS ,而且还就是单盘。
    也没啥原因,就是当初做了这样的选择。
    也给我带来过麻烦,但是都很小。
    优势也许有吧,但肯定也很小。

    我觉得 ZFS 这种足够成熟也足够可靠的东西,你想用就用好了,没必要纠结于所谓的“有没有必要”“应不应该”之类
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1800 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.