我正在使用 Windows 平台设置基于 Web 的文件共享系统。更详细地说,个人用户可以从 Web 界面上传和共享文档(内容可能是大文档,如视频文件),类似于 Google Docs 的情况。
我目前的问题是如何使存储可扩展?更详细地说,我有 4-5 个前端 Web 服务器(用于组成 Web 服务器场),我想知道如何设置存储系统来存储上传的文件。
我希望存储能够自动增长 - 即每个 Web 服务器似乎都使用无限的磁盘空间(无需处理磁盘已满问题);另一个问题是我不知道如何有效可靠地存储文件(例如,如果每个 Web 服务器都有单独的存储,假设 abc.wmv 存储在 Web 服务器 A 的存储中,那么如果 Web 服务器 A 宕机,则没有人可以访问 abc.wmv)。我能想到的另一个麻烦是,如果我增加前端 Web 服务器的数量,对于新的 Web 服务器,如何决定应该存储哪些上传的文件(我是否应该将一些文件从其他 Web 服务器迁移到新的 Web 服务器)?
我正在考虑使用 SAN,但我不确定 SAN 是否可以解决所有问题。我想学习一些最佳实践来处理这个问题。
提前致谢,乔治
答案1
您可能需要一个共享存储空间,例如 SAN,这样您就可以集中管理和备份数据(并且所有数据都会同步)。您没有提到您预计的负载类型...十几个用户,几百个?...因此,您的前端服务器可能有点多余,只有四五个。
使用后端存储阵列将简化您的配置和管理,并允许您在需要时添加 Web 服务器。然后,您需要专注于设置重型存储和备份。即 RAID 10,以及备份存储方案,以便在 RAID 发生故障时恢复。同样,您没有提到您计划的使用量有多大以及它将承受多少负载,所以我不知道您是否想将硬件加倍作为备份,以防 SAN 发生故障和/或在 SAN 节点之间设置数据复制(如果需要,可以通过高速链路连接到不同的地理区域)。
这会很快变得非常昂贵,您甚至可能需要聘请服务来咨询专门从事大容量数据复制的公司。如果您是一家小型初创公司,您可以考虑设置专用 NAS 进行存储,并使用 DRBD 之类的东西通过以太网将 RAID 连接到不同位置。需要考虑不同的途径,但会严重影响预算,并且再次受到预算、专业知识和必要的正常运行时间预期的影响(家庭项目是一回事,让小型企业中的普通用户保持正常运行时间是另一回事,而保持客户信用卡信息流通所需的硬件以及一小时的停机时间可能会让您的公司损失数千美元,而您的损失将是另一回事)...
答案2
有很多方法可以做到这一点,但我建议使用可以管理自己的文件系统的 NAS。但这实际上取决于 NAS。我的经验主要是使用 NetApp,它可以轻松满足您的要求,并提供其他功能(如磁盘重复数据删除和高级快照系统)。NetApp 的硬件具有极高的可扩展性,可以轻松增加卷,并支持许多不同的网络协议。不过,与任何专业的 SAN/NAS 一样,您需要为此付费。
在低端,您可以考虑尝试 Synology 的 DJ509+ 磁盘站之类的产品。我只和使用过它的人交流过,但许多“企业”IT 都对它的灵活性和低成本印象深刻。
http://www.synology.com/us/products/DS509+/index.php
绝对最便宜的方法是使用 OpenSolaris 和 ZFS 之类的方法。您可以构建自己的硬件并创建自己的 RAID 卷。我个人不知道有谁在像您这样的情况下使用它,但据传闻,很多人对它的强大功能印象深刻。
答案3
你想要的是 MogileFS:http://www.danga.com/mogilefs/ 我们在 MogileFS 中拥有许多、许多 TB(甚至是 PB?还没有检查)的数据,并且它一直在很好地扩展。
答案4
我会考虑使用 NetApp 盒子,它们不是最便宜的,但它们非常灵活并且可以为您提供精简配置的 NFS 共享,这似乎符合您的要求并且可以很好地扩展(大约 1.2PB iirc)。
或者,您可以看看 HP 的“大规模横向扩展”技术,虽然他们的网站上并未介绍所有这项技术,但如果您与他们的存储销售人员交谈,他们会说他们有可以扩展到 EB 级的产品。