从我记事起,我们就一直在使用 cron 来处理我们所有的作业调度需求。从存储克隆/快照到数据库报告、日常系统报告再到监控检查,所有内容都通过 cron 安排在数百台服务器上。
缺点非常明显:难以管理作业,没有简单的方法来创建依赖项(尤其是跨不同服务器),当然,不可避免地有人“暂时”跳过作业但后来忘记删除注释。
我们尝试了一个商业产品,但最终它被认为是从 cron 升级的太贵了。
我看到了其他选项,例如 SLURM、Oracle Grid Engine、Torque/Maui、Quartz、DIET、Condor,它们似乎面向更大、更同质的集群环境,其作业可以在任意数量的类似节点上运行:网格计算之类的。我们的环境相当混合(各种 Linux、AIX 和 FreeBSD),我们需要在不同类型的系统之间创建依赖关系(例如,Linux 机器上的作业可能需要确定 AIX 机器上的作业是否应该运行。)
有没有人有从 cron 迁移到更集中管理的产品的经验?有什么选择软件的技巧,还是开源或商业化更好?
我在集群环境中的 openSUSE 12.1 上使用扭矩 4.0.1。当我 qsub 一项工作(简单为“echo hello”)时,它保持在“Q”状态,并且永远不会被安排。我可以强制使用 qrun 运行作业,并且它在第一个节点上执行而没有错误。
过去几天我试图找到解决方案,但失败了。我看了手册,日志,甚至源代码,但仍然无法定位问题。当然,我用谷歌搜索了很多,尝试了各种解决方案,但没有一个奏效。
以下是一些可能有用的信息:
05/13/2012 18:55:08;0002; pbs_sched;Svr;Log;Log opened
05/13/2012 18:55:08;0002; pbs_sched;Svr;TokenAct;Account file /var/spool/torque/sched_priv/accounting/20120513 opened
05/13/2012 18:55:08;0002; pbs_sched;Svr;main;pbs_sched startup pid 32604
Run Code Online (Sandbox Code Playgroud)
05/13/2012 19:33:08;0002;PBS_Server;Svr;PBS_Server;Torque Server Version = 4.0.1, loglevel = 0
05/13/2012 19:33:56;0100;PBS_Server;Job;16.head;enqueuing into batch, state 1 hop 1
05/13/2012 19:33:56;0008;PBS_Server;Job;16.head;Job Queued at request of pubuser@head, owner = pubuser@head, job name = STDIN, queue = batch
Run Code Online (Sandbox Code Playgroud)
Job Id: 16.head
Job_Name = STDIN
Job_Owner = pubuser@head
job_state …Run Code Online (Sandbox Code Playgroud)