Q1:对于特别热衷于备份的 PVE 用户,RAID or ZFS 是否有必要?
RAID 是高可用方案,不是备份方案。
如果你的服务不能中断,至少上个 raid5 ,掉一块盘可以以降级模式跑,服务不中断。况且有足够的备份,也不怕 raid5 连炸 2 块盘,无非整个机器掉线一两天用备份重建一下。多出的一块盘能多出好多空间。
raid 可以用 ZFS 来做。
rsync.net 这家专做数据备份的公司从 2012 年就把 ZFS 用于生产了。用来存数据还是很稳的。
当然我主要看重 ZFS 的快照和文件系统级别的 checksum (防止 bit rotate)。 我对数据完整性要求高,所以即使只有单盘也会上 ZFS 的 raid0 (strip)。
Q2:不适用 ECC 内存、RAID 卡的情况下,4 硬盘 RAID10 对比 ZFS(RAID-Z2)哪个好?
ZFS 并不一定需要 ECC 内存,而且 ZFS 并不推荐使用 RAID 卡。但是推荐使用 HBA 卡或者 RAID 卡的 HBA 模式。
需要读写性能 raid10 ,需要安全性 raidz2 。我自己是 4 盘 raidz2 ,但是如 Q1 所说,我有足够的备份,也可以接受 raid5 连炸两盘的情况。所以我准备在 raidz2 的磁盘空间使用 70% 以后,用冷备数据重建为 4 盘 raidz (raid5)。
Q3:不适用 ECC 内存、RAID 卡的情况下,2 块硬盘 ZFS(Mirror)+1 块硬盘 ext4 备份 对比 2 块硬盘 RAID1+1 块硬盘 ext4 备份哪个好?
推荐 ZFS 。我需要 ZFS 的快照和文件系统级别的 checksum (防止 bit rotate)。 我对数据完整性要求高,所以即使只有单盘也会上 ZFS 的 raid0 (strip)。我自己用两年多了。没啥毛病。
Q4:不启用重复数据删除的情况下,预留 8G 内存给 32T ZFS 存储池是否足够? zfs.arc_max 是否是刚性的?如果如果突发内存占用较大,PVE 系统可用内存不足是否会 boom ?
Q5:低内存条件下 ZFS L2ARC 是否有必要?官方推荐不大于 10 倍内存,如果分配 512G nvme 固态能否充分利用?
如果你加 L2ARC 的话,要把 ARC 和 L2ARC 一起考虑。
首先,L2ARC 的独立性极强,它缓存的多是小文件,偏向于提升随机读写性能。L2ARC 和 ARC 的联系并不是特别紧密。但是,L2ARC 的索引在内存里,所以它会和 ARC 抢内存。
现在假设你的 4*8T 硬盘创建出的存储池有 15T (raid10 或 raidz2),但是你只有 8G 内存可以用作 ARC+L2ARC 。
primarycache=all 下 8G ARC 的命中率会比较难看。我推荐把 primarycache 的值改成 metadata 这样 ARC 的内存占用就比较小,可以把内存匀给 L2ARC ,然后 L2ARC 设置 primarycache=all 。
我的 raidz2 (4*8t) 15T 左右,配 30G ARC (primarycache=all) 才有 80%+ 的命中率。raidz2 也有 L2ARC ,给了 180G ,命中率 20% 左右。可以看到 ARC 利用率很高。L2ARC 利用率不高,可以接受,因为我的 raidz2 上随机读写比较少,多数是顺序读写。
你这个 15T 可用空间配 8G ARC..... 命中率有多难看我都不敢想 hhhhhh
https://note.lishouzhong.com/article/wiki/zfs/ZFS%20%E9%92%88%E5%AF%B9%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E7%9A%84%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95.html你可以在这看到我写的关于 primarycache 相关的东西。
其实你不用太关心那个 10 倍的数据。
https://note.lishouzhong.com/article/wiki/zfs/ZFS%20%E6%8A%80%E5%B7%A7%E4%B8%8E%E7%9F%A5%E8%AF%86.html#org7c13e2d这是计算 L2ARC 占多少内存的方法,你可以用这个算法算出你的 L2ARC 要用多少内存。
Q6:PVE 自带的 ZFS 会不会有坑?只用过 ext4 的一般 Debian 用户能否维护好?
我目前有一台 DELL R220 装了 PVE ,系统盘默认的 raid0 在跑,小问题有一点,出在 ZFS 和 systemd 的配合上面,影响数据的问题没有。
Q7:用了 ZFS 之后如何备份 PVE 虚拟机比较优雅,如果打算异地备份,可以怎么操作?计划 导出 ZFS 的 snapshot 用 Restic 增量去重备份为一堆 128mb 大小的小文件再传输到各个备份点,减轻网络传输压力。
不了解,我一直是 PVE 本地的第二个 raid1 的 zpool 存备份文件。
Q8:ZFS(RAID-Z2)不适合存放虚拟机数据,是否应将 VM 系统盘单独放在一个 SSD 上(或者两块 SSD ZFS Mirror)?
没有什么不适合存放虚拟机数据的,担心性能的话,加个 SLOG 就行。我只是把数据库之类对 I/O 敏感的 VM 放在了 SSD 上,跑应用的都放在 raidz2 上了。后来给 raidz2 配了 SLOG 之后,把数据库 VM 放在 raidz2 上的性能表现也变得可以接受了。
看这里
https://note.lishouzhong.com/article/wiki/zfs/ZFS%20ZIL(SLOG)%20%E7%BB%84%E4%BB%B6.htmlQ9:大量的小文件会影响 NFS 性能,具体需要多大的量会影响性能?
注:目前 1.2T 共计 182 万文件,如果 500 万小文件,会有影响吗?
我是 NFS 重度用户,没这个说法。NFS 的瓶颈在于硬盘或者网络。小文件影响硬盘 I/O 进而影响 NFS 效能,并不是小文件直接对 NFS 产生影响。
FreeBSD 上 NFS 几个核心服务的文档是我翻译的,你需要可以看这里。文档里压根没提小文件。
https://note.lishouzhong.com/article/translation/sitemap-index.htmlQ10:PVE 下各个 VM 是否应该启用 SWAP ?能否使用内存膨胀替代 SWAP ?
我的使用经验是,SWAP 可以搞小点。一般我只给 VM 最大 2G SWAP (8G ram 1G swap, 16G ram 2G swap),作用是降低一下突发的大内存申请、或者大量内存操作带来的压力。如果 VM 真的开始杀进程了,SWAP 根本救不回来,重启吧。
Q11:我即将利用淘汰配置组一套全新的 PVE ,有什么建议给我的吗?
讲道理,如果你的新 PVE 够用的话,淘汰的配置可以装 PBS 专门用作备份。定时开机,定时跑任务,但是这确实有点浪费。
注:优先计划增加 UPS
UPS 很重要很重要很重要很重要很重要很重要 一定要优先 (我手里两台 APC bk650m2-ch)
注 2:已有 1 块 16T 机械硬盘,计划增加 3 块。当前重要数据 1.2T ,归档存储数据 0.5T ,不重要数据 6T ,备份数据若干
注 3:看了 DELL R730XD ,我这点数据量暂不考虑