如何获得最佳性能:存储caching服务器(小文件)与4个磁盘(3TB)?

我们正在准备caching存储服务器,用于caching几天的小文件(所以硬盘将有更多的读取和写入)。 所有的文件都是100到500KB左右的文件,但是我们有很多文件,所以我们可以完全填充12TB文件。 服务器有一个1G的连接,我希望我们可以完全使用它,因为我们有4个硬盘,读取速度应该是250Mb / s(31.25MB / s)

服务器在Ubuntu Server 14.04LTS上运行

我想知道人们的build议:

  • 我们应该使用什么文件系统
  • 我们应该把硬盘整合到一个大目录吗?
  • 文件应该放在同一个目录下吗? (我们正在谈论25000.000左右的文件)

读取速度应该是250Mb / s(31.25MB / s)

首先,使用随机读访问模式的4个7200转硬盘驱动器不太可能达到这个性能水平。 即使您的磁盘可以读取更大的块大小(〜16-64 KB),7.2k磁盘的每秒I / O操作的最大值对于非顺序访问而言为大约100。 根据我的经验,如果你所做的一切正确,你最终可能会看〜10-20 MB / s。

我们应该把硬盘整合到一个大目录吗?

显然,您将受益于mddmraid或用于RAID0的硬件RAID控制器提供的分条。 请注意,在此操作模式下,即使单个磁盘出现故障,您也将丢失所有数据

如果你有并行的读写请求(即使写操作的百分比与读操作比较低),你将受益于RAID控制器的写回function。 考虑购买带有BBU的控制器以获得更好的操作一致性(没有BBU的控制器将会在掉电时丢失高速caching的内容,并可能会破坏文件系统)。

文件应该放在同一个目录下吗? (我们正在谈论2500万左右的文件)

当然不是。 许多文件系统在单个目录中的大量文件(> 50,000)中performance不佳。 出于便携性的原因避免这种情况。 如果你绝对必须的话,看一下在这些条件下已知性能很好的文件系统 。

我们应该使用什么文件系统?

这取决于。 testing你的负载与现代的一堆,看看你是否效率低下。 你也可能会发现自己寻找可调和微调来减less每个文件访问的磁盘search数量(比如noatime )。

最后,您可能需要将要使用的磁盘数量翻倍,以提高性能并在RAID10设置中引入冗余。