可以说,我有几千个大文件(每个1-800mb),都是随机访问的,新上传的文件访问非常频繁,随着时间的推移,访问时间以反方形方式下降,但在那里可能是使用旧文件的随机高峰。
总吞吐量在2-4Gbit范围内。
我正在寻找一个自我托pipe的解决scheme,而不是亚马逊的产品,因为它们太贵了。
我大致想到的是这样的:
昂贵的“主”服务器与几个15k rpm的SAS驱动器(或固态硬盘)将托pipe新的文件,只是上传到网站。 一旦下载速度下降(或文件达到一定的年龄),其移动到一个更便宜的存档节点。
编辑:文件将通过HTTP服务于各种各样的用户。 服务器正在运行FC5。 大多需要读取访问权限,但写入也是重要的。
现在我得到了一个简单的2服务器设置最大的一个千兆位,我得到疯狂的IO。 该框格式化为4K块。 会不会增加说…. 1024K有一个巨大的影响?
如果您只在本地提供这些数据,则可以使用现成的组件轻松组装一台具有几TB存储空间的服务器。 组合几千兆网卡可以为您提供networking吞吐量。
如果内容必须在更远的距离上传送,则可能会更好地将数据复制到多个框中。 如果你能负担得起,你可以完全复制数据,如果文件不会被覆盖,粗糙的基于时间戳的复制脚本可以工作。
否则,你可以看看并行文件系统的实现; 如果你想要一个免费的,你可以看看Lustre(用于Linux)或Hadoop(多平台)。
所有这些都是重要的:
1)大量的RAM
2)多个网卡和/或前端,以减less瓶颈
3)反向代理服务器,例如Squid(参见例如http://www.visolve.com/squid/whitepapers/reverseproxy.php )或清漆
4)磁盘的RAID设置(条纹或条纹/镜像组合可能)
5)select正确的文件系统,是的,块大小。 XFS曾经是大量数据的好表演,可能现在ZFS更好。
这些都应该有所帮助。 根据您的目标需求(即您想要使用的总净带宽,单卡吞吐量,未读和未查找的磁盘的最大吞吐量等),您需要执行多less和需要执行哪些操作?
你提出的是一个自动化的分层存储解决scheme。 这不是一个微不足道的成就。 一些像EMC这样的高端存储厂商正在推销自动化分层解决scheme,但是它们面向高端企业局域网解决scheme,并带有相应的价格标签。
你会想看看Sun公司的ZFS存储系统,因为它宣传了你所追求的function,并且可能更接近于价格点。
http://blogs.oracle.com/studler/entry/zfs_and_the_hybrid_storage
如果你不想要一个DIY分层存储选项(如果必须的话,我可能会使用Windows 2008 R2中的文件系统pipe理任务 ),我强烈build议你看一下Compellent的解决scheme。 您不需要任何额外的节点(本身)来降低成本的存储空间,因为您可以简单地通过您select的操作系统安装一些快速磁盘和一些廉价的慢速磁盘。 Compellent的 OOBfunction集是基于访问的HSM。 该解决scheme还提供了可扩展性。 现在这个方法可能会很昂贵(而且你没有提供前景),但是从长远来看,它可能比试图pipe理和维护自己的解决scheme更具成本效益。
不清楚你在哪个操作系统上运行? 或者,如果你计划在这些文件被自动移动或写一个脚本来处理它吗? 当你说访问你的意思是通过networking(HTTP)或其他方法?
我曾在一个社交网站,有一个“锁箱”的文件。 随着网站的增长,我们每天在仓库里烧了大约200GB。
我们使用每天晚上运行的networking统计信息来跟踪繁忙的文件。 如果文件列在顶部文件列表中,则脚本将更新数据库并将文件设置为“高优先级”。 这告诉networking应用程序使用高优先级的URL,并确保文件在快速存储系统上。
直到他们买得起可扩展的SAN解决scheme,这个工作才算合理。
还没有听到足够的细节,但知道我所知道的,我会看到一个基本的1U服务器(或两个HA),有很多RAM运行您select的操作系统/存储软件,连接到一个Xiotech Emprise 5000。假设你可以在内存中安装一个好的工作集,那么通过主轴的IOPS将是非常宽泛的随机I / O,这就是盒子的最佳select。 您可能可以做一个单一的服务器(64GB)/单arrays(2.4TB)组合为20K下触摸。
我们用VoD服务器来做这件事情,我们使用许多具有大量内存的非集群服务器作为本地磁盘的caching,而本地磁盘依次是多个SAS连接的25×2.5“15krpm磁盘,然后通过多个1Gb网卡或双10Gb网卡,我们花了很长时间才弄清了PCIe插槽/ SAS-HBA位置以及RAID群集和磁盘块大小等设置。
有趣的问题。 看起来你正在主持一堆盗版电影:P
除了笑话,我认为你的解决scheme可能是一个很好的起点。 在制定一个太昂贵或者太有限的解决scheme之前,这就是你想要熟悉的问题。
我会做这样的事情:
(如果有效的话,我可以在服务器完成时使用服务器吗?我想运行一些尖峰neural network实验)