我有以下基于NFS的存储设置:
计算节点是Linux. NFS服务器是Solaris.
不太重要的用户在计算节点的子集上运行一堆读取密集型作业.结果,整组计算节点变得非常慢(ls块持续30秒).我能够追踪到专用的NFS服务器达到了san读取吞吐量的极限.
如何实现服务质量(QoS),将NFS带宽限制为节点,进程或用户?
解决方法
我不确定NFS是否可以“强化”来反对群集中的DDOS.如果您确实需要,使用其他东西访问持久存储将更容易.
鉴于您的设置,我建议在集群引擎级别上执行“QoS”.
将资源“io_heavy”配置为限制为“10”,并让您的用户请求“1”这样的IO重工作.这样,I / O约束的作业不会超过10个并发运行.您的NFS不会崩溃,并且群集的其余部分将保持空闲,以用于cpu绑定任务.
您还应该将暂存磁盘添加到节点.这些可以保存临时数据,而这些数据实际上并不需要转到NFS.它还有助于提供此处常用的“参考数据”.
我假设您的Solaris NFS服务器使用ZFS.使用尽可能多的RAM填充服务器.将SSD添加到服务器以用作ZFS缓存磁盘.这两件事都可以减少SAN上的流量.