存储大量的照片(1.5亿),并提供给networking

对于一个实际的项目,我必须build立一个高可用的存储服务器,可以存储和发布(http)1.5亿张7种尺寸的照片,总计10亿5000万个文件。 对于每张照片,我们都需要总共200 KB的空间来存储它们共计28 TB的7种尺寸。

其实我有两个服务器(2个E5620,12GB内存,Raid控制器1GB NVcaching,2个160GB的磁盘操作系统),都有一个存储arrays(DAS)与12x3TB SAS磁盘。

我不确定我的计划设置是否是最好的解决scheme:

操作系统:RHEL 6

磁盘arrays:Raid 6,ext4 / rsync或gfs2

HTTP服务器:Apache Traffic Server 3或nginx

通过这种方式,服务器存储和发布照片。

对我有什么build议? 我可以根据需要添加更多的服务器。 什么文件系统是正确的路要走? Raid 6好吗?

编辑:误读存储要求!

我会使用至less2 + K + N服务器。

  • 2服务器是负载均衡器与keepalived ,运行在纯故障转移(或任何漂浮你的船) – 我猜测,1GigE连接可用,并可以处理大量简单的GET请求,如果您使用直接返回您的IPVS组态
  • k服务器是前端HTTP服务器,HTTP服务器将是nginx,并为本地caching提供一些额外的分区。 k取决于你期望提供的stream量(见下面的公开问题
  • n使用glusterfs设置服务器来存储数据。 这样你就可以从2个GlusterFs服务器开始并testing你的设置。 由于你只存储相当小的文件,所以不需要在多个服务器上划分单个文件,GlusterFS应该可以。 前端的本地caching应该能够克服任何速度问题,因为文件访问量通常小于5%(但我不知道你的用例 – 这只是猜测)。 n很容易计算。 是的,这只是一个例子,我不写这个,因为我认为你不能这样做,但我发现自己经常忘记明显的部分…
    • 带一个8个500GB磁盘的存储服务器。 为您提供每个服务器6 * 500GB存储(RAID6)3 TB,
    • 10台服务器的存储容量为30TB(预留2TB用于初始增长)。 你现在没有冗余,
    • 所以添加另外10台服务器,你可以configurationGlusterFS来保存每个文件的2个副本,这样任何一个存储服务器都可以随时失败,而且不会发生任何问题。
    • 这只需要增加更多的服务器就可以轻松扩展,只要让GlusterFS变得温暖起来,一切都会好的。
  • 在前端安装存储服务器:开始快乐地提供内容

开放性问题(以及封面问题) :(不知道你的需求是否清楚)

  • 你期望有多lessstream量(需要确定前端和上游带宽的数量)
  • 高峰时间和每秒多less次请求 – 每天的平均stream量是好的,但如果所有的stream量发生在6小时之内
  • 预期增长(即将离任的stream量和总数据量)
  • 日志文件在哪里? – 听起来像有人想在所有的文件去哪里运行数字,你也需要有空间。
  • 您的pipe理层是否愿意在实验室设置上花几块钱? 如果不问他们多less停机时间,他们可以承受,如果你不得不尝试在现场硬件上的新configuration。 问问他们多less钱一分钟的停机时间是会花费的。 如果不知道或不给你预算,他们可以很容易地find

在任何情况下,我都会远离涉及同步文件的解决scheme,因为它听起来像是希望能够将文件放置在某处并立即可用。 只有在服务器上放置15分钟的文件才是最佳select,而且在大多数情况下会花费实实在在的成本。

注意我假设你有一个备份系统,将采取28TB,如果不扔在另一个存储系统与所需的冗余来处理最坏的情况下select。 join一些非现场备份来处理如果你忘记了一些最糟糕的情况会发生什么

毕竟听起来不太复杂。 有趣的问题是: 你的pipe理层是否愿意花钱?

为什么不存储一个大文件并让服务器将它们转换为所需的大小,然后将它们存储在caching中? 考虑同时运行多个前端服务器(通过负载平衡器)为请求提供服务,然后可能使用NAS或其他几台服务器来提供静态内容。 您需要的前端数量取决于您将获得多lessstream量(YouTube容量或仅存储偶尔访问的内容)。