写入速度要求:1.1GB / s的可能性?

我们将有一台机器在工作,在高峰时performance,应该能够每小时推送50个(“写头”)75GB的数据。 这是〜1100MB / s写入速度的高峰performance。 为了从机器上获得,需要两条10GBi线。 我的问题是什么样的服务器+技术可以处理/存储这样的数据stream?

目前我们使用ZFS进行数据存储,但写入速度从来都不是问题。 (我们甚至没有接近这些速度)ZFS(linux上的zfs)是否是一个选项? 我们还需要存储大量的数据,“IT指南”build议总数在50-75TB之间。 因此,除非我们想提供我们的第一个孩子,否则它可能不是所有的固态硬盘。

一些基于优秀回复的补充:

  • 小于24小时(最可能小于6小时),最大值为50x75GB /小时,
  • 我们预计这种情况不会很快发生,很可能我们将运行5-10x75GB /小时
  • 这是一个前置alpha机器,但是需要满足(即使很多问号正在播放)
  • 我们将使用NFS作为从机器到服务器的连接
  • 布局:生成机器 – >存储(这一个) – >(安全RAID 6) – >计算集群
  • 所以读取速度并不是必需的 ,但是从计算集群中使用它会很好(但是这是完全可选的)
  • 最有可能的是大数据文件(不是很less)

绝对…如果架构正确,Linux上的ZFS是可能的。 有很多ZFSdevise不好的情况,但做得很好,您的要求可以得到满足。

所以主要决定因素将是如何连接到这个数据存储系统。 它是NFS吗? CIFS? 客户端如何连接到存储? 或者是在存储系统完成的处理等?

填写一些细节,我们可以看看我们是否可以提供帮助。

例如,如果这是NFS和同步装载,那么在Linux上扩展ZFS以满足写入性能需求并且仍然保持长期存储容量需求是绝对可能的。 数据是可压缩的吗? 每个客户端如何连接? 千兆以太网?


编辑:

好吧,我会咬:

这个规格约为17k-23k ,适用于2U机架空间。

HP ProLiant DL380 Gen9 2U Rackmount 2 x Intel E5-2620v3 or v4 CPUs (or better) 128GB RAM 2 x 900GB Enterprise SAS OS drives 12 x 8TB Nearline SAS drives 1 or 2 x Intel P3608 1.6TB NVMe drives 

此设置将使用硬件RAID6或ZFS RAIDZ2为您提供80TB的可用空间。

由于重点是基于NFS的性能(假设同步写入),我们可以轻松地使用P3608 NVMe驱动器(条带化SLOG)吸收所有这些。 他们可以容纳3GB / s的连续写入,并具有足够高的续航能力来持续处理您所描述的工作量。 驱动器可以很容易被过度configuration,以在SLOG用例下增加一些保护。

通过NFS工作负载,写入将被合并并刷新到旋转磁盘。 在Linux下,我们会调整这个每15-30秒刷新一次。 旋转磁盘可以处理这个问题,如果这个数据是可压缩的,那么可能会受益更多。

服务器可以扩展4个更多的开放式PCIe插槽和一个用于双端口10GbE FLR适配器的附加端口。 所以你有networking的灵活性。

对于如此极端的写入速度,我build议针对ZFS,BTRFS或任何CoW文件系统。 我会使用XFS,这是非常有效的大/stream传输。

有许多缺less的信息(你打算如何访问这些数据?读取速度的重要性?你会写大块?)等给你具体的build议,但是一些一般的build议是:

  • 在原始分区或胖LVM卷上使用XFS(不要使用精简卷)
  • 调整ioblock大小以有效地处理大数据写入
  • 使用具有powerloss保护的写入caching的硬件RAID卡; 如果使用硬件RAID不成问题,则使用软件RAID10scheme(避免任何基于奇偶校验的RAID模式)
  • 使用两个10Gb / snetworking接口与LACP(链路聚合)
  • 一定要启用巨帧
  • 当你打算使用NFS时,考虑使用pNFS (v4.1)来提高可伸缩性
  • 当然还有很多其他的东西

25Gbps以太网已经成为主stream,而PCIe-base NVMe将轻松实现该stream量。

作为参考,我最近使用四台普通的dual-xeon服务器(在这种情况下是HPE DL380 Gen9)build立了一个小型的“日志捕获”解决scheme,每台服务器都配有6个NVMe驱动器,我使用IP over Infiniband,但是这些25 / 40Gbps的NIC是相同的而我们每个服务器最多可以捕获8GBps的数据 – 这是一种享受。

基本上这不是很便宜,但现在这是非常可行的。

1100MB / s的顺序写入对现代硬件来说不是问题。 有趣的是,我的家用8×5900 RPM笔记本电脑驱动器,2×15000 RPM驱动器和2×7200 RPM驱动器的设置可以支持300 MB / s的16GB一次性有效负载。

networking是一个10GbE光纤电缆,以太网9000 MTU,应用层是Samba 3.0。 该存储在raid50中configuration了三个4个驱动器的raid5卷上的三个条纹。 控制器是LSI MegaRAID SAS 9271-8i,每个端口最高6Gb / s(我有一个额外的,更慢的端口倍增器)。

与任何经验丰富的系统pipe理员交谈,他们应该能够准确地告诉你哪个控制器和驱动器能够满足你的要求。

我想你可以尝试使用任何12Gb / s控制器,并configuration两个镜像条带,每个带有8个7200 RPM驱动器(几乎所有驱动器都应该这样做)。 启动3-4个TCP连接以饱和链路,如果一对10GbE卡无法处理,请使用四个卡。

听起来不是什么大不了的事 我们当地的硬件供应商把这个作为标准产品 – 显然它可以在CCTVlogging模式下持续提升1400MB / s,这应该比你的峰值要求更难。

(链接是默认的12GBconfiguration,但是他们注意到20x4TB也是一个选项,没有这个特殊型号服务器的个人经验。)

切线的东西,但考虑使用InfiniBand而不是双10GbE链接。 你可以得到56Gbps Infiniband卡非常便宜,或100Gbps的不太多,在Linux上很容易使用RDMA超过IB的NFS,这将给你非常低的延迟和接近理论线速度吞吐量(如果你的底层存储可以处理它)。 您不需要交换机,只需两个InfiniBand卡和一根直连电缆(如果需要更长的距离,则需要一根InfiniBand光纤电缆)。

像MCB191A-FCAT这样的单端口Mellanox 56Gbps卡(8x PCIe 3.0)不到700美元,而2米铜直连电缆就像80美元。

在所有使用情况下,性能通常会将10GbE排除在水面之外。 没有什么缺点,除非你需要从许多不能使用InfiniBand的不同客户端访问服务器(甚至Mellanox的交换机可以将10GbE和40GbE连接到IB,但这只是一个投资,当然)。

用ZFS做这件事是可能的,但是考虑使用FreeBSD,因为FreeBSD具有更快的networking堆栈。 这将允许在一台机器上可能有100 GBit。

1100 MBps听起来很多,但你可以通过只使用普通硬盘来实现。 你说你需要75TB的空间,所以你可以使用24个8TB的硬盘。 这会给你一个单一的驱动器的12倍的写入速度,以及24倍的驱动器读取速度。 由于这些驱动器的写入速度高于100 MBps,因此应该很容易处理带宽。 请确保不要使用SMR驱动器,因为这些驱动器的写入速度非常慢。

ZFS确实会为每个块创build校验和。 这是单线程实现的。 因此,你应该有一个相当快的时钟速率的CPU不阻止。

但是,具体的实施细节很大程度上取决于细节。

我们将10G网卡的数据转储到Gluster集群的保险丝客户端。 它需要一点点调整,你不会相信自3.0以来的性能。