媒体网站上的10tb文件存储devise问题

我有一个相当繁忙的媒体网站,MP3audio文件由会员上传,并从2个Windows服务器进行stream式传输/下载,此时服务器负载均衡。两台服务器只是互相镜像并保持同步。

我们目前所做的只是在每次当前驱动器已满时添加新的2TB硬盘驱动器,然后用户将数据上传到新驱动器…我们有足够的托盘支持24个磁盘。

我们正在获得最近添加的硬盘的I / O瓶颈,因为所有新的媒体都被添加到这个驱动器,这也是最stream行的…这可以通过在每个磁盘上传播数据来克服,但是当我们用完空间并添加一个新的空白驱动器。

我镜像我的文件的原因是,我有一个1:1的备份,情况1服务器故障的故障转移,以便我可以轻松地负载平衡我的网站与2台机器。

Somone之前曾经使用过NAS / SAN,但是我不能访问这个。

你会推荐什么我的情况…有没有办法改善我的设置?

有一天,我阅读了分布式文件系统,听起来可能适合,但是他们似乎都只是linux …现在转换到linux将是一个挑战,至less我没有什么经验。

如果我错过了任何可以帮助你回答的事情,请告诉我。

谢谢你,保罗

数据负载平衡问题。 这是有趣的东西。 以下是我已经处理大量数据的一些经验,即使我们通常将它分散在多个服务器上。

  1. 听起来你还没有将存储和演示分开。 你需要这样做。 为你的存储devise一个接口(它可以作为一个单独的服务器,NFS共享或类似的文件)。 就我个人而言,我强烈支持有一个“媒体”服务器,它只服务于数据。 这样你就可以转移到NAS模式,随着你的成长,它将为你节省大量的痛苦。

  2. 一旦你的媒体与应用程序分离开来,你就可以开始研究如何处理你拥有的大量数据的解决scheme。

有大量的商业SAN产品。 它们通常在大量磁盘上进行负载平衡,并处理好添加/删除存储。 他们也非常昂贵,听起来你已经有了硬件。

在Linux方面,有标准的软件来处理这个数据量没有任何问题。 LVM和EXT4可以处理非常大的文件系统(但要小心FSCK时间)。 如果我要build立这个,我可能会去LVM,EXT4,并使用Apache来提供数据。 这种组合也可以让你增加存储空间。

但这只是一般的策略。 现在,攻击你的具体问题。 不知道实现细节有点困难,但我可以提供一些build议:

这听起来像你没有正确的负载平衡你的IO。 我假设你可以跟踪哪个磁盘服务于你的数据。 在这种情况下,您应该创build一个“重新平衡”脚本。 将新磁盘添加到系统时,此脚本将从所有旧磁盘获取数据并填充新磁盘。 然后,您可以将传入的文件分散到所有磁盘上,从而更好地平衡IO负载。 这假定你在不同的磁盘上有不同的文件系统,而不仅仅是创build一个巨大的JBOD,这通常是一个坏主意。

第二步是开始分析。 制作一个logging每个文件请求的小应用程序。 如果您看到一个特定的磁盘被命中超过其公平的份额,您在磁盘和最less使用的磁盘之间交换数据。 这种负载均衡最好是作为一个普通的工作来完成,可能是每个小时或每天。

另外,确保你得到大的IOcaching。 在你所获得的应用程序中,通常会导致IO性能下降的是当你提供了许多不同的文件,以至于压倒了caching,导致磁盘开始被破坏。 最大限度地释放磁盘控制器上的caching,并将尽可能多的内存放入系统中。 Windows将高兴地使用备用RAM作为读取caching。 现在把128G以上的内存塞入服务器并不困难,甚至是特别昂贵。 这是一个相当大的caching,即使你的热文件集是1TB。

随着你服务的数据量,我build议你远离RAID解决scheme。 重build大型RAIDarrays往往是一个痛苦的经历。

一个基本的问题 – 您正在使用RAIDarrays,而不是简单地镜像您要添加的两个驱动器?

在存储盒上使用类似RAID10的东西,将允许您增加arrays(通过添加驱动器,然后告诉RAID控制器或软件RAID子系统使用额外的磁盘。

但是,build议使用分离的存储模型。 简单地说,从扩展的angular度来看,你的数据集将会增长和增长。 如果你不存档删除旧数据,你永远不会停止增长。

例如,当您填充现有机器中的所有托架时,您会做什么? 😉

使用Windows,我会亲自摆脱他们使用的分布式文件系统。 使用最简单的解决scheme。 幸运的是,Windows 2008r2带有iSCSI支持 – 所以你可以很容易地build立你自己的SAN( http://technet.microsoft.com/en-us/library/cc726015.aspx )。

更好的做法是,build立一个Linux的机器作为iSCSI的目标,并从Windows机器指向它。