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

2021-12-03 00:33:10 +08:00
 dangyuluo

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

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

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

备份没办法做到事务性完全实时,但 raid 可以。
ungrown
2021-12-03 11:59:04 +08:00
Linux 下面,根目录尽量别用 ZFS ,其他随意。因为 ZFS on Linux 还没有稳定到那个程度,而且就算不考虑稳定性,如果根目录是 ZFS 的话相当于整个启动过程多依赖了一个复杂组件,在出问题的时候增加排错成本。
ZFS 确实挺好用的,本身也具备 RAID 这种形式,灵活又方便。能用就用,利大于弊,根目录除外。
12101111
2021-12-03 12:14:35 +08:00
我 ZFS as root 用了好几年了,从 0.7 时代用到了 2.1, 连 FreeBSD 的 ZFS 都用的 ZoL 的代码,何来不稳定?
反倒是 Btrfs bug 的照片每个月都能见过好几次。
liuxu
2021-12-03 12:52:25 +08:00
数据备份用网盘,玩系统上 ZFS
snuglove
2021-12-03 15:32:12 +08:00
@documentzhangx66 的确,做 raid 是保证数据不丢失;备份的作用也是确保数据不丢失,但是备份是需要时间的
dangyuluo
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
2021-12-03 18:59:20 +08:00
RAID 是为了提高可用性,备份是为了数据安全。
secondwtq
2021-12-03 19:02:53 +08:00
另外 ZFS 在性能方面的 story 我一直不是很清楚,特别是在 NVMe 设备上的表现。可能可以做到比较好的性能,但是需要专门去调整。我没这本事,所以如果对性能有要求的话我不会用 ZFS 。
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
2021-12-07 12:55:46 +08:00
@documentzhangx66
raid 不能作为备份的一个重要原因是,再稳固的阵列,都抗不了猫猫跑上去撒泡尿
要数据安全最好还是定期写到别的盘,放到别的地方
documentzhangx66
2021-12-07 16:40:08 +08:00
@yanqiyu

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

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

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

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

一点一点来说吧。

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

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

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


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


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

未来的计划:
1. 扩容:多买几块继续组 RAID 1 。USB 口不够时上 HUB
2. 用 cron 定期检查状态,有错误时发邮件给我。

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

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

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

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

© 2021 V2EX