我正在计划升级一个免费软件镜像服务器,希望得到有关设置新主磁盘的建议。
我目前的用法:
- 系统软件、配置和工作区 <30GB - 保留在 RAID-1 阵列上
- 位于单个 900GB 分区上的内容(四磁盘 RAID-5)
- 2-3个<1G的小镜像
- 一个包含大量小文件的 600MB 镜像 (portage)
- 两个约 5GB 的镜像
- 五个 20-40GB 镜像
- 两个 100GB 镜像
- 三个 150GB 镜像
我可能会得到 44TB 的磁盘,我会将其分布在三个硬件 RAID-5 阵列上,总共 34TB(加上备用磁盘)。
我认为我应该将阵列设为 LVM2 PV,并构建一个 34TB 的 VG,然后以某种方式将其拆分,为每个镜像创建一个 LV。然后,我将为每个发行版创建一个 extN 或 XFS 卷。
一个问题是我无法真正预测任何镜像的增长。我可能不得不在每个 LV 中创建大量开销,或者频繁增加 LV。镜像的大幅缩减并不是真正令人担忧的问题;它们会变得越来越大。如果多次调整 LV 的大小,是否会因碎片增加而导致真正的性能损失?
我可能想要针对特定工作负载优化某些文件系统,例如小型文本文件或 CD 映像,因此使用单个 FS 是不利的。多 FS 方法可以让我更轻松地跟踪各个发行版的磁盘使用模式。保留单个大 FS 的最后一个可能缺点是操作系统搜索树时产生的延迟。这有多令人担忧?
我有 24 或 48GB 的 RAM,计划每月提供 30-50TB 的服务,其中几个大文件(安装程序、CD 映像)占用缓存,并且许多 2-20MB 的文件丢失。
答案1
首先,远离 RAID。它不值得。对于 14TB 阵列,重建将需要几天时间。您不想让磁盘连续几天处于混乱状态,那么最好丢失镜像的一部分,然后在更换磁盘时再次获取数据。
LVM 很不错,当然也适用于较小的镜像,但我不确定它对主存储是否有太大帮助。LVM 的问题在于,任何故障都会导致整个 PV 瘫痪,所以您不会想要庞大的 PV。
您可能会遇到 IO 负载平衡问题,这将迫使您在磁盘之间平衡 IO(例如,您的 Ubuntu 镜像可能会受到严重影响)。因此,我建议您使用某种层,允许您在磁盘之间重新分配 IO 负载。
处理大型且不断增长的镜像存储时,一个典型的解决方案是创建一个抽象层,跟踪文件在磁盘上的位置(通常使用数据库),然后将文件分散到多个物理磁盘上而不产生冗余。这已内置在许多 NAS 解决方案中。
您可以在先前的答案中找到更多信息这里。
答案2
考虑到阵列大小以及您很快就要扩展它的事实,我建议使用 RAID-6 而不是 RAID-5 + 备用阵列。在我的硬件上,重建 20TB 阵列大约需要 2-3 周,因此如果您使用 RAID-5 并且驱动器发生故障,您将在重建期间面临长期风险。也有充分证据表明,重建期间会发生许多故障,这对 RAID-5 阵列来说是致命的。
不过我无法评论分区。我个人避免使用太多分区,我宁愿为所有内容设置一个大分区(也许两个 :-),有时会牺牲潜在的性能优势来换取可管理性和便利性。
最近我也在练习用一块小的 SSD 做系统分区,主要是因为 SSD 驱动器的可靠性。不过很多人仍然认为这种做法值得怀疑。