假设我有几千个大文件(每个 1-800mb),这些文件都是随机访问的,新上传的文件访问非常频繁,随着时间的推移,访问时间以平方反比的方式下降,但旧文件的使用率可能会出现随机峰值。
总吞吐量在2-4Gbit范围内。
我正在寻找自托管解决方案,而不是亚马逊的产品,因为它们太贵了。
我大概想到的是这样的:
昂贵的“主”服务器,配有多个 15k rpm SAS 驱动器(或 SSD),用于托管刚刚上传到网站的新文件。一旦下载速率下降(或文件达到一定年龄),它就会移动到较便宜的存档节点之一。
编辑: 文件将通过 HTTP 提供给各种用户。服务器运行 FC5。主要需要读取权限,但写入也很重要。
现在我有一个简单的 2 服务器设置,最大 1 Gbit,并且我的 IO 变得很疯狂。该盒子使用 4K 块格式化。将其增加到 1024K 会产生巨大影响吗?
答案1
如果您只在本地提供这些数据,那么您可以使用现成的组件轻松组装一台具有几 TB 存储空间的服务器。搭配几块千兆位 NIC 即可为您提供网络吞吐量。
如果内容需要远距离传输,最好将数据复制到多个设备中。如果经济条件允许,您可以完全复制数据,如果文件永远不会被覆盖,那么基于时间戳的复制脚本也可以奏效。
否则,您可以查看并行文件系统实现;如果您想要免费的,您可以查看 Lustre(适用于 Linux)或 Hadoop(多平台)。
答案2
所有这些都很重要:
1)大量 RAM
2)多个网卡和/或前端以减少瓶颈
3) 反向代理服务器,例如 Squid(参见例如http://www.visolve.com/squid/whitepapers/reverseproxy.php)或 Varnish
4) 磁盘 RAID 设置(可能是条带化或条带/镜像组合)
5) 选择正确的文件系统,当然还有块大小。XFS 曾经是处理大量数据的最佳选择,但现在 ZFS 可能更好一些。
这些都应该有所帮助。您应该能够根据您的目标要求(即您想要利用的总网络带宽、单卡的吞吐量、未进行 raid 和 raid 的磁盘的最大吞吐量等)计算出需要实施多少以及需要实施哪些内容。
答案3
您提议的是一种自动分层存储解决方案。这不是一项微不足道的成就。一些高端存储供应商(如 EMC)正在大力推广自动分层解决方案,但它们面向高端企业 LAN 解决方案,并带有相应的价格标签。
您将需要了解一下 Sun 的 ZFS 存储系统,因为它宣称具有您所追求的功能,并且价格也可能更接近。
http://blogs.oracle.com/studler/entry/zfs_and_the_hybrid_storage
答案4
不清楚您使用的是什么操作系统?或者您是否计划自动移动这些文件或编写脚本来为您处理?您说的访问是指通过 Web(HTTP)还是其他方法?
我曾在一个社交网站上工作,那里有一个文件“保险箱”。随着网站的发展,我们每天消耗大约 200GB 的存储空间。
我们利用每晚运行的 Web 统计来跟踪繁忙文件。如果某个文件列在热门文件列表中,则脚本将更新数据库并将该文件设置为“高优先级”。这告诉 Web 应用程序使用高优先级 URL 并确保该文件位于快速存储系统上。
在他们能够负担得起可扩展的 SAN 解决方案之前,这种方法一直运行良好。