目前我的设置是 1 个主服务器,它保存所有 mp4 视频,另外 3 个服务器保存该视频的部分内容。流程如下:当用户上传视频时,它会被存储到主服务器中,然后同步 (rsync) 到 3 个服务器中的其中一个。因此,主服务器充当存储服务器,将这些视频同步到各自的服务器。从属服务器上有 12 个 HDD,配置为 raid 10。在专用的 10GBps 线路上,每个服务器的最大带宽峰值为 2GBps。我相信这是 HDD 瓶颈,因为我的 iowait 在高峰时段上升到 40%。当 HDD 设置为 2048 预读时,我能够将 iowait 保持在 5% 以下。
我计划用 SSD 替换 HDD,但放弃 raid 设置。相反,为每台服务器使用一堆 SSD。这会比我的 raid 10 设置更好吗?目前 HDD 只有 7200。另一个问题是,为什么将 HDD 预读设置为 2048 会降低 iowait 这么多,并且不会影响整个带宽?它的平均水平仍然与默认 128k 的预读相同甚至更好。
每个从属服务器具有相似/相同的规格:
- 双 XEON E5 2603
- 128GB 内存
- 12 个 3TB 硬盘 7200 Raid 10
- 10Gbps 光纤网卡
- 10Gbps 专用端口
答案1
首先要记住,10Gbps 链路是千兆比特,而不是千兆字节。对于绑定的双 10Gbps 链路来说,每秒 2-2.5 千兆字节的传输量几乎是最大值。我将继续回答这个问题,假设情况并非如此,而您的意思是您没有通过网络获得全部吞吐量。
通过使用 raid 10 中的许多磁盘,您应该在从属服务器端获得足够的吞吐量。确保您的硬件控制器支持您正在使用的驱动器的 3Gb/s(您不希望限制在 1.5Gb/s 或更低)并且控制器的接口处于其最大带宽(我见过 PCIe 插槽限制为 x4,而卡支持 x8)。
每台从服务器都有相当多的 RAM。您可以考虑设置一个大 ramdisk(75-100GB)并将数据复制到其中作为测试用例。如果传输速度相似,则从服务器没有问题;您需要主服务器上的读取速度更快。此服务器中的 4 或 6 SSD raid 10 可以帮助实现这一点。
如果您执意要升级到 SSD,您还需要确保您的控制器每磁盘速度高达 6GB/s。