新人贴,大家多多包涵
不知道有没有试过 ZFS over iSCSI + ZIL 实现高性能网络磁盘挂载的大佬?求分享一下经验! 目前有两台机器 A 和 B:A 为计算服务器( Debian10 + Proxmox ),B 为存储服务器。两台机器通过 10Gb 网卡直连,希望将 B 中的磁盘空间共享给 A 使用,同时提高性能。
目前方案: B 中 15 盘硬件阵列卡 Raid10+1 热备,然后通过共享 NFS 给 A。
问题: A 对小文件的读写较多,线程数一多就出现 IO Delay,实际看到网卡的流量并不高。
期望的方案: B 共享 iSCSI 给 A,然后 A 基于 iSCSI 磁盘做 ZFS 池,然后使用本地 SSD 做 ZIL 提高性能。 目前还在尝试中,如果有什么严重的设计 /安全性问题请务必提出,感激不尽!
1
Aliencn 2020-01-30 00:51:34 +08:00
我记得 ZFS 的写缓存用的是内存,ZIL 是只是用来存日志的。
ZFS 对内存要求很高,1T 的空间要搭配 1G 的内存,而且要建议是 ECC 内存。 |
2
CloudRaft OP @Aliencn 感谢回复!内存是 ECC 的,服务器配置这里也说一下吧:
计算节点(其实是 5 台) CPU:E5-1650V3 内存:8x RAM 32768 MB DDR4 ECC reg. 硬盘:3x SSD SAMSUNG MZ7LM480 其中 2 块组软 raid1,另一块打算用来做 ZIL 网卡:Intel I210 + Intel X540-T2 存储节点: CPU:E5-1650V3 内存:4x RAM 32768 MB DDR4 ECC reg. 硬盘:15x HDD SATA 6,0 TB Enterprise 硬件 Radi10+1 热备 阵列卡:Adaptec 8405 SGL ( 1G 缓存) + Adaptec AEC-82885T Expander Card 网卡:Intel I210 + Intel X540-T2 内存肯定是够的,每个计算节点拿出 32G 做缓存。之前也组过 RAIDZ3、Z2,对内存缓存后的磁盘性能非常满意! |
3
ungrown 2020-07-13 11:08:33 +08:00
@Aliencn #1
严格来讲 ZFS 没有写缓存,只有写缓冲,默认情况下内存中的缓冲区是一个很小的 buffer,级别和其他文件系统的缓冲区没什么不同。ZIL 无非是这个写缓冲区的外延。 ZFS 只有读缓存,而且 ZFS 的读缓存均会在系统关闭后丢失,包括 L2ARC 也如此。 ZFS 会大量占用内存,但是 ZFS 对已占用内存的释放非常迅速,并不会因此影响系统其他进程的运行效率。但会因此降低自身性能——相较于在有足够内存时的高性能而言。 ECC 内存可以消除内存错误导致的文件数据损坏,但请注意,非 ZFS 的其他文件系统,使用出错的非 ECC 内存时,同样会导致文件数据丢失损坏。所以,应该说,在需要确保文件数据安全的场景下,无论使用什么文件系统,都应该使用 ECC 内存,这也正是服务器的配置。而家用机非 ECC 内存的情况下,无论用 ZFS 还是其他文件系统,数据该受损一样会受损。 |
4
ungrown 2020-07-13 11:12:56 +08:00
linux 中提供 iscsi 服务的软件有几个,我之前在家里用过 ubuntu+tgt 的方式提供 iscsi 服务,在 windows 系统中连接,使用过程中一切都好,但是偶尔——很偶尔会出现连接错误,而这一现象会导致 ubuntu 整个网络功能失效,必须重启恢复。所以后来不用了,也许换个 iscsi 服务端程序不会有这个问题,但是当时没有动力去尝试了。
|