13.2 软件发布¶
软件发布 是指实验软件管理员发布计算环境中依赖的实验软件,用于支持计算环境中实验用户提交的作业加载软件包。
计算中心采用 CVMFS 存放各个实验组相关软件。
cvmfspublisher.ihep.ac.cn 是软件发布服务器,仅支持系统用户使用私钥登录。为确保软件管理员编译的实验软件仅依赖于 /cvmfs,确保实验软件在只挂载 /cvmfs 的系统环境下,不依赖于其他网络存储系统能够正常运行,该服务器系统环境和登录节点一致,但不包含其他网络存储系统,予以保证软件编译过程中环境的独立性。
具体发布流程和架构见下图:

13.2.1 实验软件发布流程¶
实验软件管理员联系计算中心申请软件发布账号,定制软件仓库名称 $repo,同时发送公钥。
CVMFS 管理员创建软件发布账号 username 后,实验软件管理员执行登录发布。
如何创建私钥公钥:执行下面命令,可以设置私钥的密码,也可以不设置密码,默认生成位置是 ~/.ssh/ 下面的 id_rsa 和 id_rsa.pub。
-
软件管理员登录 cvmfspublisher.ihep.ac.cn
-
查看软件仓库当前状态
如果软件仓库处于 transaction 状态,说明该 repo 正在被其他管理员编辑,需要协商处理,或等待其他人员发布完成后,再编辑和发布。避免将其他人员的测试版本发布到生产环境。
-
如果没有处于 transaction 状态,执行 transaction 操作,使 /cvmfs/yourrepository 进入可编辑状态,软件最长编辑时间为 24 小时,超过该时间后再执行 publish 命令会报 tokens expire 错误。
-
软件编译相关方式,CVMFS 实验软件仓库的编译一般有三种方式:
a. 简单 copy 方式:软件管理员拥有独立的实验软件编译环境进行新发布软件的编译,将编译后生成的发布数据通过远程拷贝的方式写入 cvmfspublisher.ihep.ac.cn 的 /cvmfs/repositoryname/... 相关路径下。
b. 通用编译安装方式:软件管理员在 cvmfspublisher.ihep.ac.cn 服务器上直接调用编译软件和相关依赖包对新发布的软件进行编译,编译生成的软件直接写入 /cvmfs/repositoryname/... 相关路径下。编译过程中所需的通用软件可以使用系统默认的软件,或使用 /cvmfs/common.ihep.ac.cn/ 路径下特定版本的软件,如 python35、python27 等。
c. 依赖操作系统的编译安装方式:软件管理员在 cvmfspublisher.ihep.ac.cn 服务器使用
/cvmfs/container.ihep.ac.cn/bin/hep_container shell SL5/SL6/SL7选择对应的操作系统,将 /cvmfs 挂载并启动镜像,进入镜像后进行软件编译,编译生成的软件直接写入 /cvmfs/repositoryname/... 相关路径下,退出容器镜像。编译过程中所需的通用软件可以使用系统默认的软件,或使用 /cvmfs/common.ihep.ac.cn/ 路径下特定版本的软件。/cvmfs/container.ihep.ac.cn/bin/hep_container shell SL5/SL6/SL7 Singularity yourimage.sif:~> (Make changes to files in the R/W mount: /cvmfs/<repo>/dirA & All /cvmfs/*.ihep.ac.cn can be accessed ) Singularity yourimage.sif:~> exit编译过程中如果出现异常(包括编译超时等情况),需要重新编译发布,可以执行
cvmfs_server abort repositoryname命令,该命令会清除当前 transaction 后的所有操作。执行结束后,用户重新执行步骤 3 的cvmfs_server transaction repositoryname。 -
编译完成后跳出软件仓库目录,然后执行发布命令
-
查看最近几次发布版本
输出示例:
Name │ Revision │ Channel │ Timestamp │ Branch │ Description ─────────────────────────────┼──────────┼─────────┼──────────────────────┼────────┼───────────── trunk-previous │ 1 │ trunk │ 13 Jul 2020 14:19:08 │ │ default undo target generic-2020-07-13T06:19:07Z │ 1 │ trunk │ 13 Jul 2020 14:19:08 │ │ trunk │ 2 │ trunk │ 13 Jul 2020 15:40:53 │ │ current HEAD origin │ 2 │ trunk │ 13 Jul 2020 15:40:53 │ │ create ─────────────────────────────┴──────────┴─────────┴──────────────────────┴────────┴───────────── listing contains 4 tags -
发布成功约 10 分钟后,计算环境可以访问新发布的软件。
-
发布中常见故障和处理。
仓库下文件或文件夹正在被访问,导致发布失败:
输出示例:
Using auto tag 'generic-2020-07-16T09:34:18Z' WARNING! There are open read-only file descriptors in /cvmfs/bes3.ihep.ac.cn --> This is potentially harmful and might cause problems later on. We can anyway perform the requested operation, but this will most likely break other processes with open file descriptors on /cvmfs/bes3.ihep.ac.cn! The following lsof report might show the processes with open file handles输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rm 95788 bes3pub cwd DIR 0,68 23 9237356 /cvmfs/bes3.ihep.ac.cn/bes3sw/Boss rm 95788 bes3pub 4r DIR 0,68 10 9255952 /cvmfs/bes3.ihep.ac.cn/bes3sw/Boss/6.6.5.p01/Generator/Bhlumi/Bhlumi-00-00-12/x86_64-slc6-gcc46-opt (deleted) rm 95788 bes3pub 5r DIR 0,68 10 9255873 /cvmfs/bes3.ihep.ac.cn/bes3sw/Boss/6.6.5.p01/Generator/Bhlumi (deleted) rm 95788 bes3pub 6r DIR 0,68 10 9255874 /cvmfs/bes3.ihep.ac.cn/bes3sw/Boss/6.6.5.p01/Generator/Bhlumi/Bhlumi-00-00-12 (deleted)
13.2.2 实验软件访问流程¶
实验软件安装在 CVMFS 文件系统,用户安装 cvmfs client 后,通过简单配置即可实现软件访问。
-
cvmfs client 安装步骤:
a. 安装 cvmfs and cvmfs-ihep-config
yum -y install https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest.noarch.rpm yum -y install cvmfs cvmfs-config-default cvmfs_config setupb. 配置 default.local,设置默认检测的软件仓库,是否直连服务器或通过代理服务器访问。编辑
/etc/cvmfs/default.local,输入以下内容:CVMFS_REPOSITORIES=bes3.ihep.ac.cn,common.ihep.ac.cn,cvmfs-config.cern.ch CVMFS_CACHE_BASE=/scratch/cvmfs CVMFS_QUOTA_LIMIT=40960 CVMFS_HTTP_PROXY=DIRECT如需通过代理访问,将
CVMFS_HTTP_PROXY设置为"http://proxyIP:3128";IHEP 站点代理 IP 为 202.122.33.47、202.122.33.52,SDU 站点代理为 cvmfs.hepg.sdu.edu.cn。c. 配置系统 enforce=disable
d. 配置默认访问的 stratum 服务器地址
curl -o /etc/cvmfs/domain.d/cern.ch.local http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/cern.ch.local ln -s /etc/cvmfs/domain.d/cern.ch.local /etc/cvmfs/domain.d/egi.eu.local ln -s /etc/cvmfs/domain.d/cern.ch.local /etc/cvmfs/domain.d/opensciencegrid.org.locale. 配置 ihep.ac.cn 域并导入 key
mkdir /etc/cvmfs/keys/ihep.ac.cn curl -o /etc/cvmfs/keys/ihep.ac.cn/ihep.ac.cn.pub http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/ihep.ac.cn/ihep.ac.cn.pub curl -o /etc/cvmfs/domain.d/ihep.ac.cn.conf http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/ihep.ac.cn.conff. 检查 cvmfs client 是否正常
完成安装。
一键安装脚本(可直接复制运行)¶
将上述步骤整合为以下脚本,保存为 install_cvmfs_client.sh 后以 root 运行:
#!/bin/bash
# === CVMFS client 一键安装脚本 (IHEP) ===
# 适用于 RHEL/CentOS 系, 需 root 权限运行
# 用法: sudo bash install_cvmfs_client.sh
set -e
echo "====[1/7] 安装 cvmfs 及 ihep 配置包 ===="
yum -y install https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest.noarch.rpm
yum -y install cvmfs cvmfs-config-default
cvmfs_config setup
echo "====[2/7] 配置 default.local ===="
cat > /etc/cvmfs/default.local <<'EOF'
CVMFS_REPOSITORIES=bes3.ihep.ac.cn,common.ihep.ac.cn,cvmfs-config.cern.ch
CVMFS_CACHE_BASE=/scratch/cvmfs
CVMFS_QUOTA_LIMIT=40960
CVMFS_HTTP_PROXY=DIRECT
EOF
echo "====[3/7] 关闭 SELinux enforce ===="
setenforce 0
echo "====[4/7] 配置默认 stratum 服务器地址 ===="
curl -o /etc/cvmfs/domain.d/cern.ch.local http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/cern.ch.local
ln -sf /etc/cvmfs/domain.d/cern.ch.local /etc/cvmfs/domain.d/egi.eu.local
ln -sf /etc/cvmfs/domain.d/cern.ch.local /etc/cvmfs/domain.d/opensciencegrid.org.local
echo "====[5/7] 配置 ihep.ac.cn 域并导入 key ===="
mkdir -p /etc/cvmfs/keys/ihep.ac.cn
curl -o /etc/cvmfs/keys/ihep.ac.cn/ihep.ac.cn.pub http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/ihep.ac.cn/ihep.ac.cn.pub
curl -o /etc/cvmfs/domain.d/ihep.ac.cn.conf http://cvmfs-stratum-one.ihep.ac.cn/cvmfs/software/client_configure/ihep.ac.cn.conf
echo "====[6/7] 探测 CVMFS client 是否正常 ===="
cvmfs_config probe
echo "====[7/7] 完成 ===="
echo "CVMFS client 安装完成,可访问 /cvmfs 下的软件仓库。"
注意
若需通过代理访问,请修改 /etc/cvmfs/default.local 中的 CVMFS_HTTP_PROXY,例如:
常见问题(FAQ)¶
见常见问题。
有问题?输入后跳转到对话页继续交流