咨询 NAS 的硬盘组合问题, ZFS、MergerFS+SnapRaid、普通 Raid

2019-10-11 10:20:23 +08:00
 sidkang
目前的配置如下 i5-8500 2*DDR4-16G 2*32G SLC-U 盘 2*500G-860evo 1*250G-SSD 3*8T-HDD
目前机箱可以容纳 4*3.5,2*3.5,剩余如果加 SSD 的话可以通过双面胶大法解决,主板上有 8SATA 口,1M.2,1PCI-Ex16,目前仅使用了 6SATA 口
未来会逐步提升配置,SSD 应该会根据需要慢慢加,3.5HDD 最多也只能加一个盘了,然后就只能替换更大容量的

目前初步的软件配置,Host 通过双 SLCU 盘组 Raid1/RaidZ-mirror 安装 Proxmox ; 2 个 SSD 组 raid1 或 RaidZ-mirror,主要用于放 vm 以及从系统盘移出来可能需要频繁读写的 Cache 和日志目录; 3 个 HDD 组 RaidZ/(MergerFS+SnapRaid)/普通 Raid,需要存储的资料主要是一些媒体资料,这些改动不会太频繁,还有一些是工作用材料,这一部分主要是零碎文件,但是数量很多,也会经常做变动

目前有些犹豫不确定的有这么几个点:
1、HDD 方面,因为还是有一些变动多一些的文件,所以倾向于用 ZFS 或者 Raid 的方式,Snapraid+MergerFS 的特性使得无法及时对写入的数据进行保护(不太适用于频繁改动的文件);
2、SSD 方面,因为容量比较小,所以即便使用 ZFS 升级也还算方便,直接把数据拷贝出来即可,我的疑问是想说,对于 SSD 来说,组普通 Raid 和 ZFS 的性能方面差距有多大呢?,主要想提升 4k 随机方面的性能,如果差不多的情况下我可能倾向于使用普通 Raid
3、针对于组合 Raid,大家是推荐直接在 Proxmox 上设置并管理 ZFS 及磁盘空间,还是推荐通过 VM 直通 SATA controller 的方式来管理好呢?
提前感谢各位,这些问题实在疑问了很久
10544 次点击
所在节点    Linux
45 条回复
momocraft
2019-10-11 10:37:33 +08:00
1 的 FYI: zfs 的 raidz 在一个多盘 raid 单位 ("vdev") 建好后不能通过加盘来加容量(用正确的方法可以逐块盘替换成大容量)。如果这点不是问题我觉得 zfs 的 raid 挺好的。
sidkang
2019-10-11 10:56:08 +08:00
@momocraft 嗯,对的,这一点确实也是个缺点,不过最近稍微有些进展,https://github.com/zfsonlinux/zfs/pull/8853,鉴于 3*8T 应该可以组 Raid 后有 14T 的容量,应该够用挺长时间的,这个 feature 到时候应该也差不多能 release,剩下就是不同容量的盘的替换扩容问题了= =
smilzman
2019-10-11 11:02:28 +08:00
我没组 raid,3 块数据盘,1 快备份盘,重要数据实时同步到备份盘,然后通过自带的网盘软件同步到本地。
momocraft
2019-10-11 11:02:42 +08:00
> #2

我还不是很相信 zfsonlinux (现在用的裸机 /freebsd), 不过 freebsd 将来要改用 zol 了, 总之也是好消息
xiaoranj
2019-10-11 11:24:14 +08:00
@smilzman 我也是这样,还有一块异地备份盘。软 raid 没意思,还不如 basic
sidkang
2019-10-11 12:01:37 +08:00
@smilzman 如果是这样直接使用 Basic 模式的话,如果是自建,我推荐可以考虑 SnapRaid + MergerFS 的方式,完全没有损失作为 Basic 模式下的那些优点,并且还有一些独有的优点
我想要用 ZFS 主要是还是有一大部分的碎片文件存在,想通过 Raid 的方式提高一些性能,并且能够有一定的可靠性
xustrive
2019-10-11 13:42:34 +08:00
@sidkang 我目前用的 ZFS FREENAS 的方案。
lulu00147
2019-10-11 16:55:47 +08:00
兄弟,首先要明确你的 nas 想干嘛。
如果想跑日常 dev 可以按 pve 硬盘直通啥的,如果单纯是存储数据可以按 freenas 或 XigmaNAS,两个方向,一个是应用开发向,一个是稳定存储向。
接下来应该是存储文件的冷热分离,日常不经常使用的冷文件可以放到机械硬盘上,日常常用的热文件最好放在 ssd 上。
最后才是考虑数据存储介质的问题,推荐 4 块机械硬盘组一个 zfs,ssd 组一个 zfs。
ssd 定期快照备份到机械硬盘。
机械硬盘不用快照,定期扫描就行。
lulu00147
2019-10-11 17:05:31 +08:00
我的方案仅供参考。
只有一个主板,所以 host 是 pve,直通给 guest4 块 8t 的硬盘,guest 是 XigmaNAS,四块 8t 组成一个 zfs。
剩下的 2 块 ssd 都是笔记本升级淘汰下来的,安装 pve 的时候格式化为 zfs,shell 开了 smb git 做开发机。
之前 pve 里面还跑了个 ros 当主路由,很稳定。
后来家里宽带升级到 400m,破 j1900 板子跑不到上限,直接换了个 hap ac2,pve 里面现在就个小破站了。
lulu00147
2019-10-11 17:09:02 +08:00
1 hdd 用 zfs 比较稳定,之前多次停电都没问题,无 ups
lulu00147
2019-10-11 17:10:33 +08:00
2 普通 raid 和 zfs 性能区别不大,主要区别在于 zfs 支持快照和自压缩及自恢复,普通 raid 停电很容易出问题
lulu00147
2019-10-11 17:12:28 +08:00
3 仓库存储建议使用稳定的 freenas 或 XigmaNAS,开发存储可以直接 pve 接管,我用的方案就是分开了
lulu00147
2019-10-11 17:27:20 +08:00
这个方案优点是稳定,即使 pve 跪了,插一个 XigmaNAS 的 u 盘就可以再次启动 4 块机械硬盘的 zfs,pve 快照定期写入机械硬盘,可以随时恢复。
缺点也有,缺点是运行两个系统 pve 和 XigmaNAS,多耗费一点内存。
直接 pve 管理可以省点内存,XigmaNAS 比较节省内存支持嵌入式,比 freenas 节省,4g 内存就能跑的很好。
pve 直接管理也可以但是数据没有分离开,如果出现灾难恢复是个问题。
lulu00147
2019-10-11 17:45:05 +08:00
以上,希望能帮到你
shinko
2019-10-11 17:46:16 +08:00
MergerFS+SnapRaid
orzfly
2019-10-11 18:17:56 +08:00
ZFS 的 snapshot 和 compression 还是很好用的(
sidkang
2019-10-12 08:25:44 +08:00
@lulu00147 灰常感谢你的回复,我这台应该会和你的差不多,应用向和存储向都有需求,理解,如果是这样的话,那我就考虑直接在 proxmox 下做三个 zpool,U 盘,SSD,HDD 分别各一个,内存其实问题不大,目前已经上 32G,而且我的存储容量目测不到 15T,这方面应该还好。
不过我注意到你的配置方式里应该是采用直通硬盘的方式到 VM 的方式来组成 HDD 的 ZPool 的,这个在 Freenas 的官网说不太推荐在 vm 下这么做,如果实在要在 vm 下管理,应该把整个 sata controller 直通给 vm 来管理(我目前的方式是 host 装 proxmox,给黑群直通了硬盘来用,感觉不是很放心,所以打算重新搞一遍,机器只有 4 盘位 3.5,所以最多也就 raid5,但是未来肯定会上大容量硬盘,目前看来但盘容量越大,raid5 就越不合适,所以想想就打算趁着升级硬件的机会彻底解决这个问题)
以下是 freenas 的原文:
ZFS combines the roles of RAID controller, Volume Manager, and file system, and since it’s all three in one, it wants direct access to your disks in order to work properly. The closer you can get ZFS to your storage hardware, the happier ZFS is, and the better it can do its job of keeping your data safe. Things like native virtual disks or virtual disks on RAID controllers insulate ZFS from the disks, and therefore should be avoided whenever possible. Using a hypervisor, you typically have a disk on a RAID controller presented to a hypervisor which creates a datastore with a disk on it running FreeNAS. This places two layers between ZFS and the physical disks which warrants taking the following precautions.

Precautions
If you are not using PCI passthrough (more on that below), then you must disable the scrub tasks in ZFS. The hardware can “lie” to ZFS so a scrub can do more damage than good, possibly even permanently destroying your zpool.
The second precaution is to disable any write caching that is happening on the SAN, NAS, or RAID controller itself. A write cache can easily confuse ZFS about what has or has not been written to disk. This confusion can result in catastrophic pool failures.
Using a single disk leaves you vulnerable to pool metadata corruption which could cause the loss of the pool. To avoid this, you need a minimum of three vdevs, either striped or in a RAIDZ configuration. Since ZFS pool metadata is mirrored between three vdevs if they are available, using a minimum of three vdevs to build your pool is safer than a single vdev. Ideally vdevs that have their own redundancy are preferred.
lucifer9
2019-10-12 10:03:01 +08:00
超过 500G 的硬盘用 raid5 也不是不行,反正尽可能勤做备份吧
lulu00147
2019-10-12 11:48:15 +08:00
@sidkang
1.千万不要用黑群做安全存储,血泪史啊,我以前用的黑群,一次家里停电就跪了,只有一次,花了 2000 多找人恢复的数据,费了老大劲了。
2.vm 使用 freenas 直通我没有发言权,我用的是 xigmanas 没啥问题很稳定。
建议问问其他兄弟。

如果喜欢黑群的 app,可以在 pve 按黑裙分个 20g 硬盘,黑群里面挂载 pve 的 smb 共享,类似这种方案,毕竟 zfs 安全太多了。
sidkang
2019-10-12 15:10:37 +08:00
@lulu00147 嗯,确实是这样,打算文件系统通过 nfs 挂载到黑群晖的方式来使用

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

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

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

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

© 2021 V2EX