本文介绍IBM Spectrum LSF在Microsoft Windows平台上的特性、配置和最佳实践,以及在混合UNIX/Linux/Windows集群中的部署策略。
Windows平台支持概述
LSF原生支持Windows操作系统,可以:
- 在纯Windows集群中运行
- 与UNIX/Linux节点混合部署
- Windows节点可作为Master或Execution Host
- 支持Windows特有的功能和服务
支持的Windows版本
LSF 10.1.0支持:
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
- Windows 10/11(客户端节点)
Windows LSF架构
服务组件
LSF在Windows上以系统服务运行:
| 服务名称 | 对应守护进程 | 用途 |
|---|---|---|
| LSF Master Service | mbatchd/mbschd | 批处理调度(仅Master) |
| LSF LIM Service | lim | 负载信息管理 |
| LSF Server BatchD Service | sbatchd | 作业执行(Execution Host) |
服务管理
使用Windows服务管理器
1
2
3
4
5
6
7
8
9
10
11
12
13
# 启动服务
Start-Service "LSF LIM Service"
Start-Service "LSF Server BatchD Service"
# 停止服务
Stop-Service "LSF LIM Service"
Stop-Service "LSF Server BatchD Service"
# 查看服务状态
Get-Service "LSF*"
# 重启服务
Restart-Service "LSF LIM Service"
使用LSF命令
REM 启动LSF
lsadmin limstartup
badmin hstartup
REM 停止LSF
badmin hshutdown
lsadmin limshutdown
Windows安装特点
安装目录结构
默认安装路径:C:\IBM\LSF
1
2
3
4
5
6
7
8
9
10
11
12
C:\IBM\LSF\
├── 10.1\ # 版本目录
│ └── windows-x64\ # 平台目录
│ ├── bin\ # LSF命令
│ ├── etc\ # 守护进程和工具
│ └── lib\ # 库文件
├── conf\ # 配置文件
│ ├── lsf.conf
│ ├── lsb.params
│ └── ...
├── log\ # 日志文件
└── work\ # 作业工作目录
用户权限要求
安装权限:
- 需要本地管理员权限安装LSF
- 服务账户需要”Log on as a service”权限
LSF服务账户:
- 建议创建专用服务账户(如
lsfadmin) - 需要对LSF目录有读写权限
- 需要对作业工作目录有权限
配置服务账户
1
2
3
4
5
6
7
8
9
10
11
12
# 1. 创建LSF服务账户
New-LocalUser -Name "lsfadmin" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
# 2. 授予"Log on as a service"权限
# 通过本地安全策略:
# secpol.msc -> Local Policies -> User Rights Assignment -> Log on as a service
# 3. 授予LSF目录权限
icacls "C:\IBM\LSF" /grant "lsfadmin:(OI)(CI)F" /T
# 4. 配置服务使用该账户
sc.exe config "LSF LIM Service" obj= ".\lsfadmin" password= "P@ssw0rd"
混合集群配置
主控节点选择
推荐配置:
- Primary Master:Linux/UNIX(稳定性和性能)
- Execution Hosts:混合Windows和Linux节点
Windows作为Master:
- 支持但不推荐用于大规模集群
- 适用于小型或全Windows环境
平台类型定义
在lsf.shared中定义Windows平台:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Begin Resource
RESOURCENAME TYPE INTERVAL INCREASING DESCRIPTION
windows Boolean () () Windows hosts
linux Boolean () () Linux hosts
End Resource
Begin HostType
TYPENAME # 定义主机类型
X86_64 # Intel/AMD 64位
End HostType
Begin HostModel
MODELNAME CPUFACTOR ARCHITECTURE
IntelI5 100 (X86_64)
End HostModel
lsf.cluster配置示例
1
2
3
4
5
6
7
8
9
10
ClusterName MyCluster
Servers master01 # Linux Master
Clients (compute-win[01-10]) # Windows节点
Begin Host
HOSTNAME model type server RESOURCES
master01 ! ! 1 (linux)
compute-win01 IntelI5 ! 1 (windows mem)
compute-win02 IntelI5 ! 1 (windows mem)
End Host
跨平台作业提交
1
2
3
4
5
6
7
8
# 从Linux提交到Windows节点
bsub -m "compute-win01" -R "select[windows]" job.bat
# 从Windows提交到Linux节点
bsub -m "linux_host" -R "select[linux]" job.sh
# 自动选择Windows主机
bsub -R "select[windows && mem>8000]" job.bat
Windows特有功能
批处理文件支持
LSF自动识别.bat和.cmd文件:
REM job.bat
@echo off
echo Running on %COMPUTERNAME%
echo Job ID: %LSB_JOBID%
my_windows_app.exe input.dat
提交:
bsub < job.bat
PowerShell脚本支持
1
2
3
4
# job.ps1
Write-Host "LSF Job on Windows"
Write-Host "Job ID: $env:LSB_JOBID"
Get-Process | Out-File processes.txt
提交:
bsub powershell.exe -File job.ps1
Windows路径处理
LSF在Windows上支持两种路径格式:
REM Windows路径
bsub -o "C:\Users\john\output.txt" job.bat
REM UNIX风格路径(推荐用于跨平台脚本)
bsub -o "/cygdrive/c/Users/john/output.txt" job.bat
共享文件系统
SMB/CIFS共享
Windows节点通常使用SMB访问共享存储:
REM 映射网络驱动器
net use Z: \\fileserver\lsf_share
REM 在作业中使用
bsub -cwd "Z:\projects\sim1" job.bat
权限考虑
- 确保LSF服务账户有SMB共享的访问权限
- 使用域账户可简化跨节点权限管理
- 避免使用本地账户(权限不跨节点)
Active Directory集成
域用户认证
1
2
3
# lsf.conf
LSF_AUTH=user_ad
LSB_AUTH_DAEMONS=user_ad
用户组映射
1
2
3
4
5
6
# lsb.users
Begin UserGroup
GROUP_NAME USERS
domain_admins (DOMAIN\admin1 DOMAIN\admin2)
domain_users (DOMAIN\user1 DOMAIN\user2)
End UserGroup
Windows作业脚本最佳实践
环境变量设置
@echo off
REM 设置LSF环境
call "C:\IBM\LSF\conf\lsf.bat"
REM 设置应用环境
set PATH=C:\MyApp\bin;%PATH%
set MY_LICENSE_FILE=@license_server
REM 运行应用
myapp.exe input.dat > output.log 2>&1
错误处理
@echo off
setlocal enabledelayedexpansion
REM 运行应用并检查返回码
myapp.exe input.dat
if %ERRORLEVEL% NEQ 0 (
echo Application failed with error code %ERRORLEVEL%
exit /b %ERRORLEVEL%
)
echo Job completed successfully
exit /b 0
资源清理
@echo off
REM 设置trap清理临时文件
REM Windows没有trap,使用错误处理
set TEMP_DIR=%TEMP%\lsf_job_%LSB_JOBID%
mkdir %TEMP_DIR%
REM 主程序
call main_task.bat
set EXIT_CODE=%ERRORLEVEL%
REM 清理
rmdir /s /q %TEMP_DIR%
exit /b %EXIT_CODE%
Windows性能优化
禁用不必要的服务
在专用计算节点上禁用:
- Windows Search
- Windows Update(配置手动更新)
- Windows Defender(如有企业防病毒)
- 不必要的后台应用
内存管理
1
2
# lsb.params
WIN_MEMORY_ADJUSTMENT=0.9 # Windows预留10%内存给OS
CPU调度优先级
Windows上的LSF作业默认以”Below Normal”优先级运行,避免影响系统响应。
监控和日志
Windows事件日志
LSF会记录关键事件到Windows事件日志:
1
2
# 查看LSF事件
Get-EventLog -LogName Application -Source "LSF*" -Newest 50
性能计数器
监控LSF服务性能:
1
2
3
4
5
6
# 查看LSF进程CPU使用
Get-Counter "\Process(lim)\% Processor Time"
Get-Counter "\Process(sbatchd)\% Processor Time"
# 内存使用
Get-Counter "\Process(lim)\Working Set"
故障排查
常见问题
1. 服务无法启动
检查:
1
2
3
4
5
# 查看服务状态和错误
Get-Service "LSF LIM Service" | Select-Object *
# 查看事件日志
Get-EventLog -LogName Application -Source "LSF LIM Service" -Newest 10
解决:
- 验证服务账户权限
- 检查防火墙规则
- 查看lim.log日志文件
2. 作业不调度到Windows节点
检查:
bhosts REM 主机状态
lsload compute-win01 REM 负载信息
bjobs -p <job_id> REM 挂起原因
常见原因:
- 资源选择字符串未包含
windows - 主机状态为closed或unavail
- 网络通信问题
3. 路径问题
症状:找不到文件或命令
解决:
- 使用绝对路径
- 检查路径分隔符(
\vs/) - 验证文件共享挂载
调试工具
REM 启用调试日志
set LSF_LOG_MASK=LOG_DEBUG
lsadmin reconfig
REM 测试网络连接
badmin showstatus REM Master连接
lsadmin limstatus REM LIM连接性
REM 手动运行命令测试
lsrun -m compute-win01 cmd /c hostname
许可证管理
Windows应用通常使用FLEXlm或其他许可证服务器:
REM 配置许可证资源
REM lsf.shared
Begin Resource
RESOURCENAME TYPE INTERVAL
ansys_lic Numeric ()
End Resource
REM 提交作业
bsub -R "rusage[ansys_lic=1]" ansys_batch.bat
混合集群最佳实践
1. 明确平台职责
- Linux Master:集群管理和调度
- Linux Execution:计算密集型任务
- Windows Execution:Windows专有应用
2. 统一环境管理
- 使用域账户统一认证
- 共享存储使用SMB+NFS混合访问
- 标准化作业提交脚本
3. 资源隔离
1
2
3
4
5
6
7
8
9
10
11
12
# 为Windows和Linux创建单独队列
Begin Queue
QUEUE_NAME = win_queue
HOSTS = (compute-win[01-10])
RES_REQ = select[windows]
End Queue
Begin Queue
QUEUE_NAME = linux_queue
HOSTS = (compute-linux[01-20])
RES_REQ = select[linux]
End Queue
4. 监控策略
- Windows节点:使用SCOM或类似工具
- Linux节点:使用Nagios/Prometheus
- LSF层:使用LSF RTM统一监控
安全注意事项
防火墙配置:
1
2
3
4
# 允许LSF端口
New-NetFirewallRule -DisplayName "LSF LIM" -Direction Inbound -Protocol TCP -LocalPort 7869 -Action Allow
New-NetFirewallRule -DisplayName "LSF MBD" -Direction Inbound -Protocol TCP -LocalPort 6878 -Action Allow
New-NetFirewallRule -DisplayName "LSF SBD" -Direction Inbound -Protocol TCP -LocalPort 6879 -Action Allow
服务账户安全:
- 使用强密码策略
- 定期轮换密码
- 最小权限原则
- 审计服务账户操作
总结
LSF在Windows平台上提供了与UNIX/Linux相当的功能,支持构建纯Windows或混合集群。通过合理配置和遵循最佳实践,可以充分利用Windows节点的计算能力,同时保持与Linux节点的无缝集成。
对于企业环境,混合集群通常是最佳选择:Linux作为稳定的管理平面,Windows节点运行特定应用,共同组成高效的HPC环境。
参考资源: