概述

本文介绍如何配置 LSF 与 Andrew File System (AFS) 集成,使作业能够访问 AFS 卷中的用户数据。

TGT 转发机制

什么是 TGT 转发

TGT(Ticket Granting Ticket)转发的目的是将用户的 TGT 文件从作业提交主机转发到作业执行主机。

image-20251211090940506

工作流程

  1. TGT 文件随作业提交从 bsub 命令传送到 mbatchd 守护进程
  2. 然后传送到执行主机
  3. 在用户作业进程启动前,TGT 文件已设置好
  4. KRB5CCNAME 环境变量指向此文件

配置 TGT 转发

步骤一:启用 TGT 转发

lsf.conf 中配置:

1
LSB_KRB_TGT_FWD=Y

步骤二:配置 TGT 续期参数(可选)

如果作业运行时间(PEND + RUN)超过 TGT 生命周期(通常8小时),需要配置自动续期:

参数 说明 推荐值
LSB_KRB_CHECK_INTERVAL LSF 检查 TGT 文件的间隔(分钟) 15
LSB_KRB_RENEW_MARGIN TGT 过期前多久续期(分钟) 30
1
2
LSB_KRB_CHECK_INTERVAL=15
LSB_KRB_RENEW_MARGIN=30

步骤三:提交前获取 TGT

使用 Kerberos 5 客户端命令获取有效的 TGT 文件:

1
2
3
4
5
6
7
8
9
10
$ kinit -r 10d -f -l 30m
Password for user1@EXAMPLE.COM:

$ klist
Ticket cache: FILE:/tmp/krb5cc_34252
Default principal: user1@EXAMPLE.COM

Valid starting     Expires            Service principal
05/01/22 10:29:34  05/01/22 10:59:31  krbtgt/EXAMPLE.COM@EXAMPLE.COM
       renew until 05/11/22 10:29:31

步骤四:提交作业

1
2
$ bsub -m host3 <some program that will read NFSv4>
Job <109> is submitted to default queue <normal>.

在执行主机上验证 TGT:

1
2
3
4
5
6
7
$ klist lsf_krb5cc_j109_0
Ticket cache: FILE:lsf_krb5cc_j109_0
Default principal: user1@EXAMPLE.COM

Valid starting     Expires            Service principal
05/01/22 10:33:36  05/01/14 11:03:33  krbtgt/EXAMPLE.COM@EXAMPLE.COM
        renew until 05/11/22 10:29:31

LSF AFS 集成

LSF 与 AFS 的集成是 TGT 转发的扩展应用,但提供了额外的 AFS 令牌管理功能。

AFS 集成需求

场景 需求
作业访问 AFS 卷中的用户数据 作业需要有效的 TGT 文件并获取 AFS 令牌
JOB_SPOOL_DIR 在 AFS 卷中 子 sbatchd 和 RES 需要有效的 TGT 和 AFS 令牌

说明:LSF 为用户作业、子 sbatchd 和作业 RES 创建独立的 PAG(进程认证组),最大化用户令牌的安全性。

配置 AFS 集成

步骤一:启用 TGT 转发

1
LSB_KRB_TGT_FWD=Y

步骤二:启用 AFS 作业支持

1
LSB_AFS_JOB_SUPPORT=Y

此配置确保 LSF 为作业和子 sbatchd 守护进程创建和续期 AFS 令牌。

步骤三:配置 Kerberos 相关参数(可选)

1
2
LSB_KRB_CHECK_INTERVAL=15
LSB_KRB_RENEW_MARGIN=30

步骤四:配置 AFS 相关参数(可选)

TGT 文件续期后,LSF 使用 aklog 命令续期 AFS 令牌:

1
LSB_AFS_BIN_DIR=/usr/local/bin

如果未定义,LSF 默认在以下位置查找:/bin/usr/bin/usr/local/bin

步骤五:提交作业验证

1
2
3
4
5
6
7
8
9
10
11
12
13
$ kinit -r 10d -f -l 30m
Password for user1@EXAMPLE.COM:

$ bsub -m host3 -I "id;tokens"
Job <212> is submitted to default queue <interactive>.
<<Waiting for dispatch ...>>
<<Starting on host3>>
uid=34252(user1) gid=10007(lsf) groups=666(glsf),10007(lsf),100001(pcl)

Tokens held by the Cache Manager:

User's (AFS ID 34252) tokens for afs@example.com [Expires May  1 11:33]
   --End of list--

作业可以像访问普通目录一样自由读写 AFS 卷,所有令牌申请和续期操作由 LSF 自动处理。

配置参数汇总

参数 配置文件 说明
LSB_KRB_TGT_FWD lsf.conf 启用 TGT 转发
LSB_AFS_JOB_SUPPORT lsf.conf 启用 AFS 作业支持
LSB_KRB_CHECK_INTERVAL lsf.conf TGT 检查间隔(分钟)
LSB_KRB_RENEW_MARGIN lsf.conf TGT 续期提前时间(分钟)
LSB_AFS_BIN_DIR lsf.conf aklog 命令路径

参考资料

  1. IBM Documentation - Using LSF with Andrew File System (AFS)
  2. IBM Documentation - Best practices and tips for LSF