假设我有几千个大文件(每个 1-800mb),它们都是随机访问的,新上传的文件访问非常频繁,随着时间的推移,访问时间以反平方的方式下降,但是可能是旧文件使用率的随机峰值。
总吞吐量在 2-4Gbit 范围内。
我正在寻找一个自托管的解决方案,而不是亚马逊的产品,因为它们太贵了。
我大致想到的是这样的:
带有几个 15k rpm SAS 驱动器(或 SSD)的昂贵的“主”服务器,它们将托管刚刚上传到站点的新文件。一旦下载速率下降(或文件达到一定年龄),它就会移动到更便宜的存档节点之一。
编辑: 文件将通过 HTTP 提供给各种各样的用户。服务器正在运行 FC5。主要需要读取权限,但写入也很重要。
现在我有一个简单的 2 台服务器设置,最大 1 gbit,我得到了疯狂的 IO。该框使用 4K 块进行格式化。增加它会说.... 1024K 会产生巨大的影响吗?
如果您只在本地提供这些数据,您可以使用现成的组件轻松组装具有几 TB 存储的单个服务器。组合几个千兆网卡可以为您提供网络吞吐量。
如果必须在更远的距离上提供内容,最好跨多个盒子复制数据。如果你能负担得起,你可以完全复制数据,如果文件永远不会被覆盖,那么基于时间戳的原始复制脚本就可以工作。
否则,您可以查看并行文件系统实现;如果你想要一个免费的,你可以看看 Lustre (for linux) 或 Hadoop (multiplatform)。
您提出的是一种自动化的分层存储解决方案。这不是一个微不足道的成就。EMC 等一些高端存储供应商正在兜售自动分层解决方案,但它们面向的是高端企业 LAN 解决方案,并带有相应的价格标签。
你会想看看 Sun 的 ZFS 存储系统,因为它吹捧你所追求的那种功能,而且可能也更接近价格点。
http://blogs.oracle.com/studler/entry/zfs_and_the_hybrid_storage
所有这些都很重要:
1) 大量内存
2) 多个网卡和/或前端以减少瓶颈
3) 反向代理服务器,例如 Squid(参见例如http://www.visolve.com/squid/whitepapers/reverseproxy.php)或 Varnish
4) 磁盘的 RAID 设置(可能是条带或条带/镜像组合)
5)选择正确的文件系统,是的,块大小。XFS 曾经在处理大量数据时表现出色,现在 ZFS 可能更好。
这些都应该有所帮助。您应该能够根据您的目标要求(即您想要使用的总净带宽、单卡的吞吐量、未袭击和袭击的磁盘的最大吞吐量等)计算出需要实施多少和哪些内容。
如果您不想要 DIY 分层存储选项(如果必须,我可能会使用 Windows 2008 r2 中的文件系统管理任务),我强烈建议您查看 Compellent 的解决方案。您不需要任何额外的节点(本身)来实现低成本存储,因为您只需通过您选择的操作系统从 san 安装一些快速磁盘和一些便宜的慢速磁盘。 Compellent 的OOB 功能集是基于访问的 HSM。该解决方案还提供可扩展性。目前这种方法可能很昂贵(并且您没有提供未来展望),但从长远来看,它可能比尝试管理和维护您自己的解决方案更具成本效益。
不清楚您正在使用什么操作系统?或者,如果您打算自动移动这些文件或编写一个脚本来为您处理这些文件?当您说访问时,您是指通过网络 (HTTP) 还是其他方法?
我在一个社交网站上工作,该网站有一个文件“锁箱”。随着网站的发展,我们每天消耗大约 200GB 的存储空间。
我们使用每晚运行的网络统计信息来跟踪繁忙的文件。如果文件列在顶部文件列表中,则脚本将更新数据库并将文件设置为“高优先级”。这告诉 Web 应用程序使用高优先级 URL 并复制确保文件在快速存储系统上。
在他们能够负担得起可扩展的 SAN 解决方案之前,这种方法运行得相当好。
还没有真正听到足够的细节,但知道我知道我会研究一个基本的 1U 服务器(或两个用于 HA),有很多 RAM 运行您选择的操作系统/存储软件,连接到 Xiotech Emprise 5000。假设您可以在内存中安装一个良好的工作集,那么通过主轴的 IOPS 将是相当广泛的随机 i/o,这就是该盒子最擅长的。您可能可以使用一台服务器(64GB)/一台阵列(2.4TB)的组合来实现 20K 以下的触摸。
我们用我们的 VoD 服务器做同样的事情,我们使用许多具有大量内存的非集群服务器作为本地磁盘的缓存,这些本地磁盘又是多个 SAS 连接的 25 x 2.5" 15krpm 磁盘,然后通过多个1Gb NIC 或双 10Gb NIC。我们花了很长时间来正确设置 PCIe 插槽/SAS-HBA 位置以及 RAID 集群和磁盘块大小等设置。
有趣的问题。看起来你正在主持一堆盗版电影:P
撇开玩笑不谈,我认为您的解决方案可能是一个很好的起点。在制定一个过于昂贵或过于有限的解决方案之前,您需要熟悉这类问题。
我会做这样的事情:
(如果可行,我可以在你完成服务器后拥有服务器吗?我有几个我想运行的尖峰神经网络实验)