我需要购买/构建一个服务器来托管我们的 Subversion 存储库(仅供参考:我是一名开发人员,不是 IT 人员)。显然,这是一项关键任务,需要具有较高的网络和磁盘 I/O 性能。我们的存储库目前为 5GB,我们支持 20 名开发人员。服务器将使用 Windows 2008,但如果 Linux 是一种引人注目且更简单/更轻松的解决方案,那么它也是一个选择。
澄清:5GB 存储库包含大约 2GB 源代码,是的,它需要处理 20 名开发人员一整天进行的多次小提交、日志、历史记录和签出。(我如何澄清源代码提交?这里和那里有几个 C# 文件,有几行更改?非常标准的东西。)
更新:预算:我原本希望花 2,000 美元或更少的钱,只是因为我觉得我们不需要花那么多钱。但是,如果要花 5,000 美元,那就得花这么多钱。这就是我们的生活。但如果 2500 美元得到 100%,而 5000 美元得到 103%,那么额外的钱就不值得了。
当然,我的首要任务是确保数据完整性。如果驱动器发生故障,我希望机器停止写入,并能够快速放入新驱动器,以便机器尽快恢复运行。(我可以忍受几个小时的停机时间,但不能忍受停机期间几个小时的“工作”)。
我认为我不需要(或不想要) RAID 5,因为重建成本似乎太高/太复杂。
至少,我可以使用 RAID 1,并有一个备份磁盘(显然不是来自同一批次甚至同一制造商的磁盘 ;-)
RAID 1+0 看起来可能更快?它值得这么复杂吗?
有人能给我一些管理 RAID 驱动器的建议和最佳实践吗?特别是,无论提供什么解决方案,我该如何管理磁盘故障。是否有软件可以在驱动器坏掉时通知我(电子邮件/寻呼机)?是否有软件可以阻止此时写入磁盘?
我还需要考虑其他事情吗?
更新:我的问题是:硬件 RAID 与 Windows Server 2008 软件 RAID 在 RAID 1+0 速度、管理(死盘)和磁盘故障警报方面有哪些优势。
谢谢
答案1
如果驱动器发生故障,我希望机器停止写入并能够放入新的驱动器
RAID 控制器通常不这样运行。如果驱动器发生故障,控制器会将阵列标记为降级,并继续让阵列运行(但速度会降低,因为它需要进行更多的错误处理)。
我认为我不需要(或不想要) RAID 5,因为重建成本似乎太高/太复杂。
一般来说,RAID 5 和 6 是完全有效的选择,很少产生重建成本。更糟糕的是RAID 5/6 的写入性能可能相当低。
我可以使用 RAID 1
对于 20 个用户来说,如果有合适的磁盘,我想这就足够了。
RAID 1+0 看起来可能更快?它值得这么复杂吗?
是的,RAID 1+0 速度更快并且没有任何显著的额外复杂性——这是最常用的 RAID 级别之一所有好的控制器都对此有成熟的实现。在理想情况下,4 磁盘 RAID 1+0 的读取性能是单个驱动器的 4 倍,写入性能是单个驱动器的 2 倍。不过,成本会上升,因为您至少需要 4 个驱动器,而且相对于所用驱动器的数量,有效存储大小不是太大。
我该如何处理磁盘故障。有没有可以通知我的软件(电子邮件/传呼机)
如果您购买了合适的控制器,则控制器会随附该软件;您只需安装管理软件并设置电子邮件通知即可。此外,您还可以在控制器上放置热备用驱动器,以便立即重建(请注意,重建期间性能会下降)。
3 个提示:
- 测量现有服务器的当前磁盘 I/O 模式和性能需求(perfmon 等)。如果实际磁盘 I/O 不是很高,请不要过度使用 RAID。20 个用户并不多,但 Subversion 可能需要比人们想象的更多的磁盘 I/O。
- 购买名牌服务器(戴尔、惠普、IBM 等),不要自己动手。通用标准服务器几乎不值得。
- 记住,RAID != 备份。你似乎有点执着于磁盘故障场景——RAID 为你的服务器提供了更长的正常运行时间和更多的磁盘 I/O,但你仍然需要适当的备份。
答案2
您的存储库是 5GB,但是您的提交/更新的频率是多少以及大致大小是多少?
我们在这里投入了多少钱?这确实是你应该问自己的最重要的第一个问题。
我认为,带有 1 个或 2 个热备用驱动器的 RAID 1 或 1+0 是理想的选择,这样如果驱动器发生故障,RAID 卡将自动使用热备用驱动器开始重建 RAID。然后,您只需购买一个与您现有的驱动器相匹配的新驱动器,并用该驱动器替换损坏的驱动器。
答案3
我建议使用硬件 RAID 1+0 设置。这将为您提供良好的性能和冗余/容错能力,但成本会更高(与 RAID 5 相比,需要更多驱动器)。
镜像 RAID 卷具有所有数据的 2 个副本,因此如果驱动器发生故障,您仍然有可访问的副本。您无需在驱动器发生故障时阻止磁盘访问。您可以在系统中配置“热备用”驱动器,这些驱动器处于闲置状态,直到发生驱动器故障,然后恢复运行并自动取代发生故障的驱动器。这应该为您提供一个功能齐全的 RAID 卷,可以容忍另一个驱动器发生故障,并为您赢得足够的时间来更换发生故障的驱动器。要使 RAID 1+0 卷完全失效,您需要在短时间内发生多个驱动器故障(这通常很少见)。
大多数硬件 RAID 控制器都配有管理软件,可以在发生故障时发出警报。
我的大部分服务器经验是使用 HP 产品,因此我主要从这个角度来讲(尽管大多数其他品牌也做类似的事情)。
答案4
从您的描述中我看不出高网络或磁盘 IO 负载可能发生在哪里。5 GB 对于 SCM 来说是一个非常小的存储库,C# 文件只有几 KB 大小,20 个开发人员完全没有问题。因此,您应该专注于设置的可靠性,因此具有冗余电源和 RAID 1 的服务器应该没问题。您主要关注的应该是灾难恢复,但您可能知道,RAID 设置不会为您带来任何好处。