RAID 设置以实现高速读取

RAID 设置以实现高速读取

我们希望使用 Linux 和 RAID(5 或 10)设置构建实时播放机。当前设置如下:

  • 12GB 内存
  • 5 x 7200rpm 驱动器(软件 raid)
  • centOS 6(内核Linux 2.6.32-71.29.1.el6.x86_64)
  • NVidia Quadro 5000(驱动程序 280.13)
  • 英特尔(R) 至强(R) CPU X5650 @ 2.67GHz

我确实运行了 Bonnie++ 和 iozone,对不同的 raid 设置(5 和 10)、不同的 fs 类型(ext4 和 xfs)和不同的条带大小进行了一些基准测试。不幸的是,我似乎无法从中获得我想要的速度(始终 <200MB/s)。

我做的另一个测试是直接在播放软件中(RV -http://www.tweaksoftware.com/products/rv),但无法使其以超过 3 个序列的速度播放超过 20 帧每秒(寻找 24 fps)。

这些播放细节有点无用,我只想知道最好的设置是什么,才能获得大约 700MB/s 的读取性能?有可能吗?

我读了不少资料,似乎硬件控制器会更好。另外我猜 7200rpm 不够。10 或 15k 可能更好?SSD 怎么样?

我对这个项目还有另一个限制,这台机器将存储所有项目的所有序列,因此密度很重要(我敢打赌,使用 SSD 驱动器与标准 10k rpm 驱动器相比,获得相同存储量的成本要高得多)。

如能得到最佳读取速度/存储量的任何建议或提示都将不胜感激。

谢谢!

编辑:偶然发现这个http://www.fusionio.com/products/iodrive/。有人用过这张卡吗?

答案1

如果你需要处理视频流,那么你需要一些东西方式比您指定的要好。即使您有足够的 SATA 驱动器来获得所需的 700MB/s 带宽(这在当今的消费级硬件上应该很容易实现),您也可能会遇到严重的延迟问题。

如果您可以达到 1GB/s 的速度,但每个 IO 需要 500ms 左右才能完成,那么您的存储解决方案有什么用呢?您正在谈论视频,因此您需要能够提供足够 IO 的东西,以便解决检索帧的最大延迟 40ms (25fps)。

您可能还想了解一下视频流应用程序专用的文件系统。例如,日立数据系统 (HDS) 就销售一种文件系统,XFS 也有一个为媒体应用程序开发的实时扩展。

答案2

如果您需要能够支持多个一致的流,那么您要么需要一组非常快的驱动器(15k),要么需要几个融合 IO 卡或其他企业级 SSD。驱动器越快越好,因为即使每个视频文件在磁盘上都是连续的,只要您开始流式传输其中 2 个或更多文件,这就会成为随机工作负载,硬盘很难处理。特别是当您有 3 个或更多文件时。

答案3

硬件 raid 会从 raid1 中获得比 raid5 更多的读取优势,但 IIRC 软件 raid 不会获得读取优势。如果我对 mdadm 的了解过时了,请纠正我。

寻找大型存储供应商,如 EMC、IBM 甚至戴尔。他们的网站上会发布有关存储解决方案规模的文章,有时甚至会提供简单的 Web 应用程序。显然,他们想向您推销产品,但您可以使用他们的规模页面来确定他们建议的驱动器数量和速度,以获得所需的吞吐量。

答案4

对于相同数量和类型的硬盘,最佳的整体读取性能是在没有任何阵列的情况下实现的,但您的软件应该知道这种配置。

单个 7200 rpm 硬盘的连续 IO 速度为 80-120MB/s。

在您的情况下,要达到 700 MB/s,您将需要 700/80 = (8.75) = 9 个 HDD。要增加冗余,您将需要 RAID10 配置中的 18 个 HDD。加上磁盘架和控制器,您将花费大约 4000 美元。

使用 SSD,您可以通过单个 SATA 驱动器获得 200-300MB/s。要获得 700,您需要 6 个 SATA SSD 的 RAID10。价格约为 3000 美元(但您的磁盘空间将比使用 HDD 时少)

FusionIO 卡能够达到 700MB/s,但只有当您拥有多个 IO 线程时才可以。根据基准测试,单线程将达到 140-150MB/s。

相关内容