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

想知道应该用 LVM 还是 ZFS? 以及最佳实践

  •  
  •   dangyuluo · 2021-12-03 00:33:10 +08:00 · 6134 次点击
    这是一个创建于 1086 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前一直没有折腾过系统分区,所有文件安装在同一块硬盘上,最大,但是经历过一次硬盘损坏数据部分丢失后感觉开发电脑还是要配置 RAID1 。 我的应用场景其实不是很复杂,一块 NVME 打算做系统盘,一块 SATA SSD 挂载到 Docker 目录下(因为实在是太大了),两块 SATA SSD 打算做 Raid1 ,挂载到/home/<my name>.目录。似乎 LVM 和 ZFS 都可以胜任。

    请问大家有没有经验,这种情况下应该采用哪种模式比较合适呢?还是说两种模式混合使用。

    17 条回复    2021-12-09 14:06:03 +08:00
    Buges
        1
    Buges  
       2021-12-03 01:01:07 +08:00 via Android
    raid 不是备份,防止损坏最重要的不是 raid 而是备份。
    可以用 btrfs 做系统盘,额外的硬盘用 btrfs send 做增量备份。zfs 在 Linux 上不建议,升内核比较麻烦。
    dangyuluo
        2
    dangyuluo  
    OP
       2021-12-03 02:50:06 +08:00
    @Buges 其实还有一个需求忘了讲了,就是想方便地创建 root 快照和恢复
    afirefish
        3
    afirefish  
       2021-12-03 08:08:30 +08:00
    底层用 raid ,然后 pve 做虚拟化。把系统装在虚拟机里面。
    documentzhangx66
        4
    documentzhangx66  
       2021-12-03 11:21:07 +08:00
    @Buges 你恰恰说反了。

    备份没办法做到事务性完全实时,但 raid 可以。
    ungrown
        5
    ungrown  
       2021-12-03 11:59:04 +08:00
    Linux 下面,根目录尽量别用 ZFS ,其他随意。因为 ZFS on Linux 还没有稳定到那个程度,而且就算不考虑稳定性,如果根目录是 ZFS 的话相当于整个启动过程多依赖了一个复杂组件,在出问题的时候增加排错成本。
    ZFS 确实挺好用的,本身也具备 RAID 这种形式,灵活又方便。能用就用,利大于弊,根目录除外。
    12101111
        6
    12101111  
       2021-12-03 12:14:35 +08:00
    我 ZFS as root 用了好几年了,从 0.7 时代用到了 2.1, 连 FreeBSD 的 ZFS 都用的 ZoL 的代码,何来不稳定?
    反倒是 Btrfs bug 的照片每个月都能见过好几次。
    liuxu
        7
    liuxu  
       2021-12-03 12:52:25 +08:00
    数据备份用网盘,玩系统上 ZFS
    snuglove
        8
    snuglove  
       2021-12-03 15:32:12 +08:00
    @documentzhangx66 的确,做 raid 是保证数据不丢失;备份的作用也是确保数据不丢失,但是备份是需要时间的
    dangyuluo
        9
    dangyuluo  
    OP
       2021-12-03 16:16:14 +08:00
    更新一下进展,最后决定用 ZFS 了,整个系统盘做了一个 ZFS pool ,根目录挂载了`rpool`, 其余主要系统目录为`rpool/ROOT/ubuntu_xxx/xxx`,家目录为`rpool/USERDATA/<name>`,工作目录单独建立了一个 dataset 挂载到了`~/workspace`,这样就可以方便地做快照了。

    另外我将两块 SSD 硬盘组了一个 zpool ,挂载到了`/var/lib/docker`来存储平时用不太着的 docker 。
    secondwtq
        10
    secondwtq  
       2021-12-03 18:59:20 +08:00
    RAID 是为了提高可用性,备份是为了数据安全。
    secondwtq
        11
    secondwtq  
       2021-12-03 19:02:53 +08:00
    另外 ZFS 在性能方面的 story 我一直不是很清楚,特别是在 NVMe 设备上的表现。可能可以做到比较好的性能,但是需要专门去调整。我没这本事,所以如果对性能有要求的话我不会用 ZFS 。
    gridsah
        12
    gridsah  
       2021-12-05 15:15:32 +08:00
    @dangyuluo

    楼上说的对,raid 是高可用方案,而不是备份方案。不过 ZFS 确实是在没有专用备份机组和 UPS 的情况下,数据最安全的方案了。

    我用 ZFS 的时候,为了磁盘性能优化也整理了一些资料,你可能会用得上。看这里 https://lishouzhong.com/lishouzhong/szarticle/article/ZFS%20%E8%B8%A9%E5%9D%91%E4%B8%8E%E4%BC%98%E5%8C%96.md

    另外,其实我也不推荐 ZFS 做系统盘......
    yanqiyu
        13
    yanqiyu  
       2021-12-07 12:55:46 +08:00
    @documentzhangx66
    raid 不能作为备份的一个重要原因是,再稳固的阵列,都抗不了猫猫跑上去撒泡尿
    要数据安全最好还是定期写到别的盘,放到别的地方
    documentzhangx66
        14
    documentzhangx66  
       2021-12-07 16:40:08 +08:00
    @yanqiyu

    当我们讨论 raid 时,其实是有一个隐含的、公认的前提,就是服务器或电脑,所处在的环境,不说是一个严格的机房,至少也是一个正规的办公室环境。

    当你引入猫猫这个特殊变量时,我也可以引入地球突然爆炸,这样你的方案:定期写到别的盘,也失效了。

    回到之前的话题,如果讨论的前提是,机器是放在正规机房的,那么我说的方案,是没有问题的。
    yanqiyu
        15
    yanqiyu  
       2021-12-07 18:47:48 +08:00
    @documentzhangx66 硬件单点故障(着火 /雷击),文件系统 bug ,人为失误( rm -rf /),勒索病毒等也能损坏里面的数据
    猫猫只是随便选个好听的意外,实际上存储系统可能面临的意外种类繁多,硬盘挂了只是一小部分 (谁能保证不会失误删掉 /覆盖有用的文件,这时候 RAID 只能保证你的删除 /覆盖文件的操作事务性的落到每个盘上)
    RAID 的意义是在硬盘故障的时候不影响业务(并且只是针对硬盘故障而言),而不是在发生意外之后保证数据还在

    RAID 不是备份,快照也不是备份,只有把数据写到别的盘,拿出来存档才是备份
    documentzhangx66
        16
    documentzhangx66  
       2021-12-07 19:51:24 +08:00
    @yanqiyu

    一点一点来说吧。

    1.你提到 硬件单点故障(着火 /雷击),文件系统 bug ,人为失误( rm -rf /),勒索病毒 等等,说明你对专业存储与备份,是有一定研究的,这是好事。

    但你要加强听取甲方意见,理解甲方的需求、场景与意图,这个方面你还是需要再下功夫的。

    你回头看看楼主一开始说的:我的应用场景其实不是很复杂。楼主其实并不需要这么麻烦的企业级的方案。一个机房或办公室环境,业务机组个简单的 raid ,然后再上一套专用备份机器,就足够了。


    2.如果要解决你说的这一堆东西,那在企业级存储与备份里,也属于相当顶尖(烧钱)的东西了。很多中小企业都不一定负担得起,楼主真的那么多的预算嘛?


    3.RAID 与快照的确不是备份。但你要看清楚我在最前面说的:备份没办法做到事务性完全实时,但 raid 可以。同时这句话不是针对你的发言,是针对 1 楼发言,对 1 楼发言做的补充。你没必要又举出备份的优势来针对 raid 。你我都知道 raid 、备份的优缺点。
    Padawan
        17
    Padawan  
       2021-12-09 14:06:03 +08:00
    用两块一样的 USB 3.0 12TB 移动硬盘组了 RAID 1 。 磁盘格式 btrfs 。
    稳定用了好几个月。

    未来的计划:
    1. 扩容:多买几块继续组 RAID 1 。USB 口不够时上 HUB
    2. 用 cron 定期检查状态,有错误时发邮件给我。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2516 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.