LSF 10.1 Server端手动安装与配置实战指南
1. 项目缘起为什么还要手动部署LSF在当下容器化、云原生和自动化部署大行其道的时代听到“手动安装LSF”这个任务很多朋友可能会觉得有点“复古”。确实像Kubernetes这样的平台通过声明式配置和Operator已经极大地简化了复杂集群应用的部署和管理。那么为什么我们还需要深入了解LSF 10.1 Server端的传统安装过程呢这背后有几个非常实际的原因。首先历史遗留系统的维护与升级。在许多科研机构、芯片设计公司、汽车仿真或金融风险计算领域LSFLoad Sharing Facility作为老牌的高性能计算作业调度系统已经稳定运行了十几年甚至更久。这些系统承载着核心的生产和研发任务牵一发而动全身。当我们需要从旧版本如LSF 9.1、LSF 10升级到10.1时或者在新机房搭建一个与现有环境保持一致的测试/灾备集群时自动化工具可能无法完全覆盖所有定制化的配置这时扎实的手动安装与排错能力就至关重要。其次深度定制与问题根因定位。LSF的强大之处在于其高度的可配置性从资源定义RES、队列策略、外部负载集成到复杂的公平共享和抢占规则。使用一键安装脚本或商业安装工具固然方便但一旦遇到非标准硬件、特殊网络拓扑如多子网、特定防火墙规则、或者与第三方存储/认证系统的集成问题脚本很可能“卡壳”。此时如果你对从操作系统准备、依赖包安装、到配置文件逐行修改的完整流程了如指掌你就能快速定位问题是在lsf.conf的某个参数还是lsf.shared的资源定义亦或是主机名解析和端口通信层面。最后理解系统架构的基石。手动安装是一次绝佳的学习机会。你会清晰地看到LSF MasterLIM、ServerRES、SBD、Client各个组件是如何被安装和配置的它们之间的依赖关系是什么关键的服务如limressbatchd是如何被lsfadmin工具启停和管理的。这份理解是后续进行性能调优、高可用配置如Master双机热备、以及编写自动化部署脚本Ansible, Puppet的基础。知其然更要知其所以然。因此这篇内容将带你完整走一遍LSF 10.1 Server端即管理节点和计算节点的手动安装之旅。这不是一个简单的“复制粘贴命令”的教程而是一个融合了原理说明、步骤详解、以及大量我本人和同行们在无数次部署中积累下来的避坑经验的实战指南。我们的目标不仅是把LSF装起来更是要装得明白、装得稳固。2. 战前准备环境与材料的清点在真正动手敲下安装命令之前充分的准备工作能避免至少80%的后续问题。这个阶段的核心是确保基础环境完全符合LSF的要求并规划好部署架构。2.1 硬件与操作系统要求LSF 10.1支持的主流Linux发行版包括Red Hat Enterprise Linux (RHEL) 7/8、SUSE Linux Enterprise Server (SLES) 12/15、以及对应的社区版本如CentOS 7/8虽然CentOS 8已停止维护但在现有环境中仍常见。对于Ubuntu官方支持列表可能更新较慢通常需要验证特定版本或自行解决一些依赖库问题。关键检查点内核版本确保系统内核不是过于陈旧的版本。对于RHEL/CentOS 7建议使用3.10.0-1062或更高版本的内核以获得更好的稳定性和新硬件支持。内存与磁盘Master主机需要至少4GB内存对于管理上千个节点的大型集群建议8GB或更多。/opt目录LSF默认安装路径需要至少10GB的可用空间用于存放安装包、日志和临时文件。网络集群内所有主机Master Server Client必须能够通过主机名互相解析并且网络延迟要低且稳定。这是LSF正常工作的生命线。2.2 集群架构规划你需要明确以下几件事Master Host管理主机这是集群的大脑运行LIMLoad Information Manager主进程。通常只需要一个但对于高可用性要求极高的生产环境可以配置两个Master做热备。Server Hosts服务器主机/计算节点这些是实际执行作业的机器。它们需要安装完整的Server端组件包括RES资源管理器、SBD作业守护进程等。我们本文的重点就是安装这类主机。候选主机Candidate Hosts在lsf.cluster.cluster文件中定义的所有可能加入集群的主机列表。共享文件系统这是强烈推荐的。/home用户目录和/opt/ibm/lsf或你自定义的LSF安装目录应该通过NFS、GPFS、Lustre等共享给所有Server和Client。这保证了配置文件、用户环境、以及作业输入输出文件的一致性。如果无法共享安装目录则需要通过lsfdistcp工具进行分发这增加了复杂度。2.3 关键材料准备安装介质从IBM官网或授权渠道获取LSF 10.1的安装包通常是名为lsf10.1_linux2.6-glibc2.3-x86_64.tar.Z或类似的一个压缩包。License文件合法的LSF许可证文件lsf.lic或lsf.licenses。你需要知道License Server的主机名或IP地址。在安装后期需要配置。环境检查清单主机名使用hostname -f命令查看完全限定域名FQDN。确保/etc/hosts文件或DNS配置中每台主机的IP地址同时对应其短主机名如host01和长主机名如host01.cluster.com。一个常见的坑是hostname返回localhost.localdomain这必须修正。防火墙临时关闭或配置防火墙规则开放LSF所需的端口。默认主要端口是7869LIM其他端口可能动态分配。一个简单的初期测试方法是暂时禁用防火墙systemctl stop firewalld待调试成功后再细化规则。SSH互信从Master主机到所有Server主机需要配置root用户的SSH免密登录。这是安装程序向远程主机分发文件和执行命令的基础。使用ssh-keygen和ssh-copy-id命令完成。依赖包安装基础编译环境和库例如gcc,gcc-c,make,glibc,libstdc等。对于RHEL/CentOS可以执行yum install -y gcc gcc-c make glibc-headers glibc-devel libstdc-devel。注意SSH互信是很多安装失败的罪魁祸首。务必使用ssh hostname命令逐一测试确保不需要输入密码就能以root身份登录并且不会出现任何“未知主机”的提示这可以通过ssh-keyscan或手动将主机密钥添加到known_hosts文件解决。3. 核心安装流程分解假设我们已经将LSF安装包上传至Master主机的/tmp目录并完成了所有前期准备。现在开始核心安装。3.1 解压与安装入口# 切换到临时目录并解压 cd /tmp tar -xzvf lsf10.1_linux2.6-glibc2.3-x86_64.tar.Z cd lsf10.1_linux2.6-glibc2.3-x86_64解压后你会看到install、lsf等目录。install目录下包含了安装脚本和配置文件模板。不要急于运行脚本我们先理解一下安装器的逻辑。LSF的安装器是一个交互式程序但它本质上是在收集你的输入安装路径、主机名等然后填充一系列配置文件模板最后将这些配置和二进制文件部署到本地或远程主机。因此我们也可以选择“沉默安装”Silent Install即事先准备好一个应答文件。但对于首次安装我建议先走一遍交互式流程以熟悉各个参数。3.2 交互式安装过程与关键参数解读在安装目录下运行./install。安装程序会引导你完成以下步骤每一步的选择都至关重要选择安装类型选择“完整安装”Full Installation。输入安装路径默认是/opt/ibm/lsf。除非有特殊规划否则建议使用默认路径因为很多脚本和文档都基于此路径。确保该路径在共享文件系统上如果规划了共享。配置集群名称给你的集群起一个名字例如MyHPCCluster。这会在日志和命令输出中显示。指定Master主机名输入Master主机的长主机名FQDN。安装程序会检查该主机是否在候选主机列表中。编辑候选主机列表这是lsf.cluster.cluster文件的雏形。你需要在此列出集群中所有可能的主机包括Master和所有Server。格式是每行一个主机名建议使用FQDN。安装程序会尝试与这些主机通信。选择Server主机从候选主机列表中勾选哪些主机将作为Server Host计算节点。其他未被选中的候选主机可以作为未来的Client或备用Server。配置管理员邮箱用于接收LSF系统报警邮件。配置License服务器输入你的LSF License Server的主机名或IP地址。如果License Server尚未安装可以先跳过但之后必须正确配置才能提交作业。确认并开始安装安装程序会生成配置文件并将LSF软件分发到所有被选为Server的主机上。这个过程依赖于之前配置的SSH互信。关键参数深度解析LSF_ENVDIR这是安装后最重要的环境变量指向LSF配置目录通常是/opt/ibm/lsf/conf。所有lsf.conflsf.sharedlsb.hostslsb.queues等核心配置文件都在这里。后续任何手动配置都在此目录下进行。LSF_SERVERDIR指向LSF可执行文件目录通常是/opt/ibm/lsf/10.1/linux2.6-glibc2.3-x86_64/etc。lsfadminbsubbhosts等命令的封装脚本在这里。主机名一致性安装程序、配置文件、以及各主机实际hostname -f的输出三者必须严格一致。一个字符的差异比如多了个域名后缀都会导致lim服务无法识别主机而启动失败。3.3 安装后配置文件的初始化检查安装脚本运行完毕后不要急着启动服务。先花10分钟检查几个核心配置文件。它们位于$LSF_ENVDIR默认为/opt/ibm/lsf/conf下。lsf.conf主配置文件。检查LSF_SERVER_HOSTS是否包含了所有Server主机名LSF_MASTER_LIST是否正确指向Master主机。lsf.cluster.cluster集群主机定义文件。打开它你会看到类似下面的结构Begin Cluster ClusterName MyHPCCluster ... End Cluster Begin HostType TYPENAME model ... End HostType Begin Host HOSTNAME master-host # Master主机 ... End Host Begin Host HOSTNAME server-host1 # Server主机1 ... End Host确保所有主机都在Begin Host和End Host块中正确定义。lsb.hosts定义队列与主机的映射关系。安装后可能只有一个默认队列default。检查默认队列是否包含了你的Server主机。lsb.queues定义队列属性。检查默认队列的参数如作业槽位SLOTS、用户权限等是否符合预期。实操心得安装程序生成的配置文件通常是最小化可用的。对于生产环境我们几乎100%需要手动调整lsb.hosts和lsb.queues来创建符合业务需求的队列结构如short,normal,long,gpu等。但在初次启动前可以先使用默认配置确保基础服务能跑通。4. 服务启动、验证与首次排错配置文件检查无误后就可以启动LSF服务了。4.1 启动服务与顺序在Master主机上使用lsfadmin工具启动服务。启动顺序有讲究cd /opt/ibm/lsf/10.1/linux2.6-glibc2.3-x86_64/etc ./lsfadmin startlsfadmin start脚本会按照正确的顺序启动lim在Master和所有Server上然后启动res和sbatchd在所有Server上。你也可以分步启动以便观察日志# 在Master上启动主LIM ./lsadmin limstartup # 在所有Server上启动LIM ./lsadmin limstartup all # 启动RES和SBD ./badmin start4.2 基础状态验证服务启动后使用以下命令验证集群状态检查LIM状态lsadmin limstat -v。这个命令会显示Master和所有Server上LIM进程的状态。看到所有主机都是“OK”状态才算成功。检查主机状态bhosts。显示所有Server主机的状态应该是“ok”或“unavail”如果未启动sbatchd。-l参数可以查看详细信息。检查队列状态bqueues -l default。查看默认队列的详细配置和状态。理想情况下你应该看到lsadmin limstat -v所有主机状态为OK。bhosts所有Server主机状态为ok且MAX和NJOBS列有数字显示。此时你已经可以尝试提交一个简单的测试作业了bsub -Is hostname。这个命令会交互式地提交一个作业执行hostname命令并返回输出。如果成功你会看到作业在某个计算节点上执行并打印出该节点的主机名。4.3 首次安装常见问题与排错链路然而第一次安装就一帆风顺的情况并不多见。下面是一个典型的排错链路你可以按顺序检查问题现象lsadmin limstat -v显示某些主机状态为CLOSED或根本不在列表中。排查步骤检查网络连通性与主机名解析在Master主机上ping server_hostname和ssh server_hostname hostname -f。确保能通且返回的主机名与配置文件中完全一致。特别注意检查/etc/hosts文件确保没有将127.0.0.1错误地绑定到主机名。一个经典的错误配置是127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 my-actual-hostname这会导致主机认为自己就是localhost从而无法被其他主机正确识别。正确的做法是将主机名绑定到其真实的管理IP地址。检查LSF服务日志Master LIM日志tail -f /opt/ibm/lsf/log/lim.log.master_hostnameServer LIM日志在出问题的Server上查看/opt/ibm/lsf/log/lim.log.server_hostname重点关注日志中的错误信息例如“cannot resolve hostname” “connection refused” “authentication error”。这些是直接的线索。检查端口通信LSF LIM默认使用TCP 7869端口。在Master上执行netstat -tlnp | grep 7869查看lim进程是否在监听。在Server上执行telnet master_hostname 7869测试是否能连接到Master的LIM端口。如果失败可能是防火墙阻止。检查环境变量与配置文件同步确保所有Server主机上的$LSF_ENVDIR路径下的配置文件与Master主机完全一致。如果使用共享安装这自动保证。如果是独立安装必须用lsfdistcp或手动方式同步。在Server上检查source /opt/ibm/lsf/conf/profile.lsf之后环境变量LSF_ENVDIRLSF_SERVERDIR等是否被正确设置。检查lsf.conf中的关键参数LSF_LOGDIR日志目录路径必须存在且可写。LSF_SERVER_HOSTS是否包含了该Server的主机名LSF_LIM_PORTLSF_RES_PORT等端口参数是否冲突问题现象bhosts显示主机状态为unavail或unreachable。排查步骤这通常意味着res或sbatchd进程没有正常启动。登录到状态为unavail的Server主机。检查res和sbatchd进程ps -ef | grep -E \res|sbatchd\。如果没有尝试手动启动/opt/ibm/lsf/10.1/linux2.6-glibc2.3-x86_64/etc/resadmin start和/opt/ibm/lsf/10.1/linux2.6-glibc2.3-x86_64/etc/sbdadmin start。查看Server上的res.log.hostname和sbatchd.log.hostname日志文件寻找启动错误。踩坑实录我曾遇到过一次bhosts显示unavail但limstat是OK的情况。查看res日志发现报错“Cannot open shared memory”。原因是/dev/shm空间不足。通过df -h /dev/shm检查并修改/etc/fstab中tmpfs的size参数后解决。这说明LSF的res进程会使用共享内存进行通信系统资源也需要纳入检查范围。5. 生产环境加固与进阶配置当基础集群能够运行简单作业后我们就需要向生产环境标准看齐进行一系列加固和优化配置。5.1 用户环境集成与profile.lsf为了让用户方便地使用LSF命令bsubbjobs等需要将LSF环境变量加入到系统profile中。安装程序通常会在/opt/ibm/lsf/conf下生成一个profile.lsf文件。最稳妥的做法是在共享的/etc/profile.d/目录下创建一个软连接或者让用户在自己的~/.bashrc中source这个文件。# 在Master和所有Server上执行 echo \source /opt/ibm/lsf/conf/profile.lsf\ /etc/profile.d/lsf.sh chmod x /etc/profile.d/lsf.sh之后用户重新登录shell就应该能直接使用LSF命令了。可以用which bsub命令验证。5.2 资源RES定义与自定义指标默认安装只定义了基础的CPU槽位slots。在生产中我们通常需要定义更多资源如内存、GPU、软件许可证等。这通过修改$LSF_ENVDIR/lsf.shared文件实现。例如为每个节点定义物理内存资源Begin Resource RESOURCENAME TYPE INTERVAL INCREASING CONSUMABLE DESCRIPTION # 关键词 mem Numeric 30 N () (Memory in MB) ngpus Numeric 30 N () (Number of GPUs) End Resource然后在lsb.hosts或lsb.queues中为具体主机或队列配置这些资源的数量。在作业提交时用户可以通过bsub -R \rusage[mem4096]\来请求4GB内存。自定义负载指标除了静态资源还可以配置动态负载指标如cpu15min15分钟平均CPU负载。这些在lsf.shared的Begin Resource部分定义并由res进程通过lsf.conf中LSF_SERVER_HOSTS参数指定的外部脚本收集。5.3 队列策略与调度优化默认的队列配置非常简陋。你需要根据实际业务设计队列结构。编辑$LSF_ENVDIR/lsb.queues文件。一个常见的多队列设计示例Begin Queue QUEUE_NAME short PRIORITY 50 NICE 10 RUN_WINDOW Mo-Su 00:00-23:59 SLOTS 200 USERS all HOSTS all End Queue Begin Queue QUEUE_NAME normal PRIORITY 30 NICE 0 SLOTS 500 USERS all HOSTS all End Queue Begin Queue QUEUE_NAME gpu PRIORITY 40 NICE 0 SLOTS 50 RES_REQ rusage[ngpus1] HOSTS gpu_hosts # 需要在lsb.hosts中定义gpu_hosts主机组 End Queue关键参数解读PRIORITY队列优先级数字越高优先级越高。NICE作业的nice值偏移量影响CPU调度。RUN_WINDOW队列允许运行的时间窗口。RES_REQ该队列中作业的默认资源请求。配置完成后需要使用badmin reconfig命令动态重载配置而无需重启服务。5.4 日志轮转与系统监控LSF的日志默认不会自动轮转长时间运行可能撑满磁盘。需要配置日志轮转策略。可以编辑/etc/logrotate.d/lsf文件如果不存在则创建/opt/ibm/lsf/log/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 lsfadmin lsfadmin sharedscripts postrotate /opt/ibm/lsf/10.1/linux2.6-glibc2.3-x86_64/etc/lsfadmin reconfig /dev/null 21 || true endscript }对于系统监控除了LSF自带的bhistbhpart等命令建议将LSF的关键指标如队列等待作业数、主机状态、作业失败率集成到现有的监控系统如Zabbix Prometheus中。可以通过解析LSF命令的输出来实现例如bqueues -wbhosts -w。5.5 高可用性HA考量对于要求7x24小时不间断的生产集群需要考虑Master的高可用。LSF支持双Master热备配置。这需要在安装时或安装后在lsf.conf中配置LSF_MASTER_LIST为两个主机名并正确设置LSF_ELECTION_TIMEOUTLSF_ELECTION_RETRY等参数。同时需要确保两个Master之间的LSF_ENVDIR配置文件实时同步通常通过DRBD或共享存储实现。这是一个相对复杂的主题在初次安装稳定后可以作为进阶任务进行规划。6. 从安装到运维日常管理命令与最佳实践安装完成并稳定运行后日常运维离不开一系列命令。这里列举最常用的部分并附上一些最佳实践。6.1 管理员常用命令速查集群控制lsadmin reconfig 重载lim相关配置lsf.conflsf.cluster.cluster。badmin reconfig 重载lsb相关配置lsb.hostslsb.queueslsf.shared。修改队列或资源定义后必须执行。lsadmin limstartup/limshutdown 启动/关闭指定主机或所有主机的lim服务。badmin hclose/hopen 关闭/开启指定主机使其不接受新作业。badmin mbdrestart 重启Master上的mbatchd守护进程慎用会中断调度。信息查看bhosts -l 查看主机详细信息包括资源、状态、运行作业。bqueues -l queue_name 查看队列详细信息、策略、等待作业。busers 查看用户资源使用情况和限制。bparams -l 查看所有LSF参数及其当前值。lshosts 查看主机静态资源配置来自lsf.shared和lsb.hosts。作业管理bjobs -u all 查看所有用户的作业。bkill jobid 终止作业。bpeek jobid 查看运行中作业的标准输出无需等待作业结束。bhist jobid 查看作业历史记录。6.2 性能调优与问题诊断经验调度延迟如果用户抱怨作业提交后很久才调度可以检查badmin debug on开启调试日志观察调度决策过程注意会产生大量日志。检查lsb.queues中的SLOTS是否设置过小导致作业排队。使用bjobs -p查看作业未调度的具体原因“PENDING REASONS”。作业挂起或失败首先用bpeek jobid查看作业是否有输出错误信息。然后登录到作业执行的主机查看作业的ER文件通常在$LSB_OUTDIR或$HOME里面包含了更详细的错误。检查作业请求的资源-R是否超过了主机实际可用资源。检查用户的环境变量和~/.bashrc是否有冲突命令如ulimit设置过严。主机状态异常如果主机频繁变为unavail或unreachable首先检查网络和lim/res进程是否稳定。查看该主机的lim.log和res.log看是否有周期性报错。检查系统负载是否过高导致LSF守护进程响应超时可调整lsf.conf中的LSF_TIMEOUT参数族。6.3 备份策略LSF的配置是集群的核心资产必须定期备份。备份内容整个$LSF_ENVDIR目录/opt/ibm/lsf/conf。备份频率每次修改配置前后都应手动备份。同时建立定期如每日全量备份机制。恢复测试定期将备份的配置恢复到测试环境验证其完整性和正确性。手动安装并配置好一个LSF 10.1 Server端集群就像亲手搭建了一座精密仪器的控制台。每一个步骤的严谨每一次排错的深入都会让你对这套系统的理解加深一层。当看到第一个测试作业顺利在计算节点上执行并返回结果时当用户开始在你的集群上提交他们的仿真、编译、数据分析任务时那种成就感是使用黑盒安装工具无法比拟的。这份指南涵盖了一个稳定可用的LSF集群从零到一的核心路径但LSF的深度远不止于此诸如公平份额调度、外部负载集成、与Spectrum LSF Suite中其他组件如LSF Application Center的集成等都是后续可以探索的广阔天地。记住清晰的文档、规范的变更记录和定期的演练是运维这样一个生产级系统的基石。