我们将有一台机器在工作,它在峰值性能下应该能够每小时推送50(“写头”)x 75GB的数据。这是约 1100MB/s 写入速度的峰值性能。要从机器上得到它,它需要两条 10GBi 线。我的问题是什么样的服务器+技术可以处理/存储这样的数据流?
目前对于数据存储,我们使用 ZFS,尽管写入速度从来都不是问题。(我们甚至没有接近这些速度)ZFS(Linux 上的 zfs)会是一个选项吗?我们还需要存储大量数据,“IT 指南”建议总共在 50-75 TB 之间。因此,除非我们想提供我们的第一个孩子,否则它可能不会都是 SSD。
基于优秀回复的一些补充:
- 峰值期间最大值为 50x75GB/小时,小于 24 小时(很可能 <6 小时)
- 我们预计这不会很快发生,我们很可能会以 5-10x75GB/小时的速度运行
- 它是一个 pre-alpha 机器,但是应该满足要求(即使有很多问号在起作用)
- 我们将使用NFS作为从机器到服务器的连接
- 布局:生成机->存储(这个)->(安全RAID 6)->计算集群
- 所以读取速度不是必需的,但是从计算集群中使用它会很好(但这完全是可选的)
- 很可能是大数据文件(不是很多小文件)
对于如此极端的写入速度,我建议不要使用 ZFS、BTRFS 或任何 CoW 文件系统。我会使用 XFS,它对大型/流传输非常有效。
有很多缺失的信息(你打算如何访问这些数据?读取速度重要吗?你要大块写吗?等等)给你具体的建议,但是一些一般的建议是:
绝对......如果架构正确,Linux 上的 ZFS 是可能的。ZFS设计差的案例很多,但是做得好,可以满足你的要求。
所以主要的决定因素将是你如何连接到这个数据存储系统。是 NFS 吗?CIFS?客户端如何连接到存储?还是在存储系统上进行处理等?
填写更多详细信息,我们可以看看是否可以提供帮助。
例如,如果这是 NFS 并且具有同步挂载,那么肯定可以在 Linux 上扩展 ZFS 以满足写入性能需求并仍然保持长期存储容量需求。数据可压缩吗?每个客户端如何连接?千兆以太网?
编辑:
好吧,我咬一口:
这是一个大约17000 美元到 23000 美元的规格,适合 2U 机架空间。
此设置将使用硬件 RAID6 或 ZFS RAIDZ2 为您提供 80TB 可用空间。
由于重点是基于 NFS 的性能(假设同步写入),我们可以使用 P3608 NVMe 驱动器(条带化 SLOG)轻松吸收所有这些。它们可以容纳 3GB/s 的连续写入速度,并且具有足够高的耐久性等级来持续处理您所描述的工作负载。在 SLOG 用例下,可以轻松地过度配置驱动器以添加一些保护。
通过 NFS 工作负载,写入将被合并并刷新到旋转磁盘。在 Linux 下,我们会将其调整为每 15-30 秒刷新一次。旋转磁盘可以处理这个问题,如果这些数据是可压缩的,可能会受益更多。
该服务器可以扩展为 4 个更多开放的 PCIe 插槽和一个用于双端口 10GbE FLR 适配器的附加端口。因此,您拥有网络灵活性。
25Gbps 以太网已经成为主流,而基于 PCIe 的 NVMe 将轻松覆盖该流量。
作为参考,我最近使用四个常规双至强服务器(在本例中为 HPE DL380 Gen9s)构建了一个小型“日志捕获”解决方案,每个服务器都有 6 个 NVMe 驱动器,我使用 IP over Infiniband,但那些 25/40Gbps NIC 将是相同的而且我们每台服务器最多可捕获 8GBps - 很不错。
基本上它并不便宜,但这些天它非常可行。
听起来没什么大不了的。我们当地的硬件供应商将此作为标准产品- 显然它可以在 CCTV 录制模式下持续推动 1400MB/s,这应该比您的峰值要求更难。
(链接是默认的 12GB 配置,但他们指出 20x4TB 也是一个选项。没有使用此特定型号服务器的个人经验。)
现代硬件不存在 1100MB/s 的顺序写入问题。有趣的是,我使用 8x5900 RPM 笔记本电脑驱动器、2x15000 RPM 驱动器和 2x7200 RPM 驱动器的家庭设置在 16GB 一次性有效负载下可维持 300 MB/s。
网络是一个 10GbE 的光纤电缆,以太网上的 9000 MTU,应用层是 Samba 3.0。存储在 raid50 中配置,三个条带分布在三个 4 驱动器 raid5 卷上。控制器是 LSI MegaRAID SAS 9271-8i,每个端口高达 6Gb/s(我有一个额外的、速度较慢的端口倍增器)。
与任何经验丰富的系统管理员交谈,他们应该能够准确地告诉您哪些控制器和驱动器可以满足您的要求。
我认为您可以尝试使用任何 12Gb/s 控制器并配置两个镜像条带,每个条带有八个 7200 RPM 驱动器(几乎任何驱动器都应该这样做)。启动 3-4 个 TCP 连接以使链路饱和,如果一对 10GbE 卡无法处理,请使用四张卡。
有点切线,但考虑使用 InfiniBand 而不是双 10GbE 链路。您可以获得相当便宜的 56Gbps Infiniband 卡,或者 100Gbps 的卡,价格也不高,而且在 Linux 上,通过 IB 使用带有 RDMA 的 NFS 很容易,这将为您提供极低的延迟和接近理论线速度的吞吐量(如果您的底层存储可以处理它)。您不需要交换机,只需两张 InfiniBand 卡和一根直连电缆(如果您需要更长的距离,则需要一根 InfiniBand 光纤电缆)。
像 MCB191A-FCAT 这样的单端口 Mellanox 56Gbps 卡(8x PCIe 3.0)不到 700 美元,一根 2 米长的铜直连电缆大约 80 美元。
在所有用例中,性能通常会破坏 10GbE。没有缺点,除非您需要从许多不能全部使用 InfiniBand 的不同客户端访问服务器(即使这样,Mellanox 的交换机也可以将 10GbE 和 40GbE 桥接到 IB,但这有点投资,当然)。
可以使用 ZFS 执行此操作,但是,请考虑使用 FreeBSD,因为 FreeBSD 具有更快的网络堆栈。这将允许一台机器上可能有 100 GBit。
1100 MBps 听起来很多,但您实际上可以通过仅使用普通硬盘驱动器来实现这一目标。你说你需要 75 TB 的空间,所以你可以在镜像中使用 24 个 8 TB 硬盘。这将为您提供单个驱动器的 12 倍写入速度和 24 倍驱动器读取速度。由于这些驱动器的写入速度超过 100 MBps,因此应该可以轻松处理带宽。确保不要使用 SMR 驱动器,因为它们的写入速度要慢得多。
ZFS 确实为每个块创建校验和。这是单线程实现的。因此,您应该拥有一个时钟速率相当快的 CPU,以免阻塞。
但是,确切的实现细节在很大程度上取决于细节。
我们已经通过他们的 fuse 客户端将 10G NIC 转储数据连接到 Gluster 集群。它需要一点点调整,你不会相信它自 3.0 以来可以达到的性能。