Ubuntu20.04下Torque-6.1.2单机版安装全攻略:从源码修改到服务自启
Ubuntu 20.04下Torque-6.1.2单机部署实战指南引言在高性能计算领域任务调度系统是管理计算资源的核心组件。Torque作为PBSPortable Batch System的开源实现以其稳定性和灵活性成为许多科研机构的首选。本文将带您完成Ubuntu 20.04系统下Torque-6.1.2的完整部署过程特别针对单机环境优化配置。与常见的简单安装教程不同我们将深入探讨源码级修改、服务自启配置等高级主题。您将了解到如何规避Ubuntu特有依赖问题关键源码修改的实际意义服务初始化脚本的适配技巧计算节点参数调优方法无论您是搭建个人研究环境还是为团队部署测试平台这份指南都能提供系统级的解决方案。我们特别关注实际部署中的坑点确保您能一次性完成配置。1. 环境准备与依赖处理1.1 系统基础配置在开始安装前需要确保系统网络和主机名配置正确。执行以下命令检查基本信息hostnamectl status ip a典型的输出应包含有效的IPv4地址和规范的主机名。如果使用云服务器请特别注意# 检查/etc/hosts配置 127.0.0.1 localhost 您的实际IP 您的主机名 # 必须添加此项提示Ubuntu默认可能未将主机名与IP绑定这会导致Torque服务启动异常。1.2 开发工具与库安装Torque编译需要完整的开发工具链和特定库文件。推荐使用以下组合命令sudo apt update sudo apt install -y \ build-essential \ libxml2-dev \ zlib1g-dev \ libboost-all-dev \ libssl-dev \ autoconf \ automake \ libtool关键组件说明组件作用是否必需libboost-all-dev提供C扩展支持必需libssl-dev安全通信支持必需autoconf配置脚本生成推荐2. 源码编译与关键修改2.1 获取与解压源码从官方仓库下载Torque-6.1.2源码包wget http://wpfilebase.s3.amazonaws.com/torque/torque-6.1.2.tar.gz tar -zxvf torque-6.1.2.tar.gz cd torque-6.1.22.2 配置编译选项执行configure时建议启用以下参数./configure \ --prefix/opt/torque/6.1.2 \ --with-scp \ --with-default-server$(hostname) \ --disable-gcc-warnings重要参数解析--prefix指定安装目录便于多版本管理--with-default-server自动设置默认服务器主机名--disable-gcc-warnings抑制警告信息2.3 关键源码修改在Ubuntu环境下必须修改req.cpp文件vim ./src/lib/Libattr/req.cpp找到1057行将字符常量改为字符串// 修改前 *p \0; // 修改后 *p \0;这一修改解决了Ubuntu严格类型检查导致编译失败的问题。2.4 编译与安装使用并行编译加速过程make -j$(nproc) CFLAGS-fpermissive sudo make install sudo make packages编译完成后检查关键文件是否生成ls -l /opt/torque/6.1.2/sbin/pbs_server3. 服务配置与优化3.1 初始化脚本部署复制Systemd服务文件sudo cp contrib/systemd/{pbs_{server,sched,mom},trqauthd}.service \ /etc/systemd/system/Ubuntu需要特殊处理初始化脚本sudo vim /etc/init.d/pbs_sched修改内容将. /etc/rc.d/init.d/functions替换为. /lib/lsb/init-functions替换所有daemon为start_daemon3.2 环境变量配置持久化Torque路径sudo tee -a /etc/profile.d/torque.sh EOF TORQUE/opt/torque/6.1.2 PATH\$PATH:\$TORQUE/bin:\$TORQUE/sbin EOF source /etc/profile3.3 服务启动顺序正确的启动顺序至关重要trqauthd认证服务pbs_server主服务pbs_sched调度器pbs_mom执行节点使用Systemd同时启动sudo systemctl daemon-reload for service in trqauthd pbs_server pbs_sched pbs_mom; do sudo systemctl enable --now $service done验证服务状态pbsnodes -a4. 计算节点与队列配置4.1 单机节点设置配置计算节点参数sudo tee /var/spool/torque/server_priv/nodes EOF $(hostname) np$(nproc) EOF sudo tee /var/spool/torque/mom_priv/config EOF pbsserver $(hostname) logevent 255 EOF关键参数说明np处理器核心数可通过nproc获取logevent日志级别255表示全日志4.2 队列创建与管理使用qmgr创建默认队列qmgr EOF create queue batch set queue batch queue_typeexecution set queue batch startedtrue set queue batch enabledtrue set queue batch resources_default.walltime01:00:00 set queue batch resources_default.nodes1 set server default_queuebatch set server schedulingtrue EOF常用队列参数调整参数建议值说明walltime24:00:00默认任务最大运行时间nodes1默认节点数priority0队列优先级4.3 测试任务提交验证系统功能echo sleep 30 | qsub qstat -an预期看到类似输出Job id Name User Time Use S Queue ---------------- ---------------- ---------------- -------- - ----- 1.node STDIN user 00:00:00 R batch5. 高级配置与维护5.1 开机自启方案推荐使用Systemd原生支持sudo systemctl enable pbs_server pbs_sched pbs_mom trqauthd检查服务依赖关系systemctl list-dependencies pbs_server5.2 日志管理关键日志文件位置/var/spool/torque/server_logs/- 服务器日志/var/spool/torque/mom_logs/- 计算节点日志/var/log/trqauthd.log- 认证日志日志轮转配置示例sudo tee /etc/logrotate.d/torque EOF /var/spool/torque/*_logs/* { weekly missingok rotate 4 compress delaycompress sharedscripts postrotate systemctl restart pbs_server /dev/null 21 || true endscript } EOF5.3 性能调优建议针对单机环境的优化参数qmgr -c set server query_other_jobs true qmgr -c set server scheduler_iteration 60 qmgr -c set server default_qsub_arguments -l mem4gb内存管理技巧# 检查实际内存使用 qstat -f | grep resources_used.mem6. 故障排查指南6.1 常见错误解决问题1qsub: Bad UID for job execution解决方案sudo usermod -aG torque 用户名 sudo service pbs_mom restart问题2Server could not connect to MOM检查步骤验证/var/spool/torque/server_priv/nodes配置检查pbs_mom服务状态查看/var/spool/torque/mom_logs/*6.2 诊断命令集合服务状态检查torque_status() { for service in trqauthd pbs_server pbs_sched pbs_mom; do systemctl status $service | head -n 5 done }资源监控watch -n 1 pbsnodes -a | grep -E state|jobs6.3 数据备份策略关键目录备份清单目录内容备份频率/var/spool/torque/server_priv队列配置每日/var/spool/torque/mom_priv节点配置变更时/opt/torque/6.1.2/var数据库文件每周备份示例命令tar -czvf torque_backup_$(date %F).tar.gz \ /var/spool/torque/server_priv \ /var/spool/torque/mom_priv \ /opt/torque/6.1.2/var/spool7. 实际应用技巧7.1 作业提交最佳实践推荐作业脚本模板#!/bin/bash #PBS -N job_name #PBS -l nodes1:ppn4 #PBS -l walltime01:00:00 #PBS -o output.log #PBS -e error.log cd $PBS_O_WORKDIR module load intel/2020 # 实际计算命令 ./my_program input.txt参数优化对比参数保守值激进值适用场景walltime实际2倍实际1.2倍调试/生产mem实际1.5倍精确值内存敏感型nodes固定值动态范围弹性需求7.2 资源监控方案实时监控命令组合watch -n 1 echo Queue ; qstat -an; echo \n Nodes ; pbsnodes -a性能数据记录while true; do date torque_monitor.log qstat -an torque_monitor.log pbsnodes -a torque_monitor.log sleep 60 done7.3 用户权限管理创建角色组sudo groupadd torqueadmin sudo qmgr -c set server operators torqueadmin* sudo qmgr -c set server managers torqueadmin*用户权限分配# 查看当前权限 qmgr -c print server | grep -E managers|operators # 添加用户 sudo usermod -aG torqueadmin 用户名