FlexLM_License_Server_全量实战手册¶
上传件:
FlexLM_License_Server_全量实战手册.md(原文件可下载)。
前言¶
FlexLM 是 Flexera Software 推出的业界通用许可证管理系统,广泛应用于 EDA、CAE、CAD 等商用工程软件的授权管控,支持 ** 浮动授权(Floating Mode)和节点锁定授权(Node-Locked Mode)** 两大核心模式,可满足单机、集群、分布式部署等不同场景的授权需求。
本手册为全量实战版,整合 FlexLM 核心工作原理、标准化 IT 部署、服务管理、许可证配置、高可用方案、混合授权架构,以及Floating License 精细化访问限制策略,从基础部署到高阶管控形成完整落地体系,为企业级 License Server 的搭建、运维、优化提供标准化、可落地的最佳实践,适配 Synopsys、Cadence、Mentor、Keysight、华大九天等主流 EDA 厂商工具。
一 FlexLM 核心工作原理¶
FlexLM 以许可证文件(lic file)*为核心做授权校验,通过服务端守护进程与客户端内置模块的交互实现授权管控,两种授权模式校验逻辑一致,部署形态与适用场景差异显著,其中*浮动模式为企业集群核心部署方式,也是本手册重点讲解对象。
1.1 浮动模式(Floating Mode)¶
适用场景:集群化环境、多终端共享授权、企业级批量部署,支持授权数量动态分配与复用
架构形态:典型 C/S(客户端 / 服务端)架构
- 服务端:由
lmgrd(主守护进程)+Vendor daemon(厂商专属子进程)组成,是授权校验的核心 - 客户端:各类 EDA / 工程工具的内置许可证模块,负责与服务端交互完成授权申请与校验
1.1.1 服务端启动验证流程¶
lmgrd进程启动,通过启动参数-c指定路径查找许可证文件,文件不存在则直接退出;- 校验 lic 文件中
SERVER行的网卡 MAC 地址与服务器实际网卡 MAC 一致性,不一致则退出; - 校验服务器当前系统时间与 lic 文件中授权过期时间,许可证过期则退出;
- 校验 lic 文件中
Feature行的加密签名字段与明文信息(feature name、expired date、count、mac 等)匹配性,匹配则该功能模块授权有效,不匹配则标记为invalid license key并禁用; - 所有校验通过后,
lmgrd正式启动,同时调用对应厂商的Vendor daemon作为子进程启动,等待客户端连接。
1.1.2 客户端授权校验流程¶
- EDA Tools 启动,通过厂商专属环境变量(生产环境禁用通用变量)查找许可证服务端信息;
- 客户端以
PORT@HOST格式与服务端lmgrd建立 TCP 连接,告知需访问的厂商Vendor daemon; lmgrd返回该Vendor daemon的通信 TCP 端口(lic 文件DAEMON行定义,无定义则随机分配合法端口);- 客户端与
Vendor daemon建立专属连接,提交许可证申请; Vendor daemon校验当前该功能模块的可用授权数量,有可用授权则完成分配,无则拒绝申请;- 客户端许可证模块根据授权结果启动 / 终止工具,获权后正常运行,未获权则直接退出。
1.2 节点锁定模式(Node-Locked Mode)¶
适用场景:单工作站专属授权、个人研发终端、无需共享的独立使用场景
架构形态:无服务端进程,单机本地校验,许可证直接绑定终端网卡 MAC 地址,仅限授权节点使用
1.2.1 单机验证流程¶
- EDA Tools 启动,通过厂商专属环境变量查找本地许可证文件,文件不存在则退出;
- 校验系统当前时间与 lic 文件的过期时间,许可证过期则退出;
- 校验 lic 文件
Feature行的加密签名字段与明文信息(feature name、expired date、count、本地 MAC)匹配性,匹配则该功能模块有效;若所有功能模块均不匹配则退出,部分匹配则仅启动有效模块。
1.3 两种模式核心差异¶
| 对比维度 | 浮动模式(Floating Mode) | 节点锁定模式(Node-Locked Mode) |
|---|---|---|
| 架构形态 | C/S 架构,需部署 License Server | 单机架构,无服务端进程 |
| 授权绑定 | 绑定 License Server 的 MAC 和端口 | 绑定客户端单机的 MAC 地址 |
| 访问方式 | 网络访问,需保证客户端与服务端网络连通 | 本地访问,无需网络 |
| 授权复用 | 支持多客户端共享授权数量,动态分配 | 仅限授权单机使用,无复用性 |
| 运维成本 | 需维护 License Server 的可用性、网络策略 | 无服务端运维成本,仅需管理本地 lic 文件 |
| 适用场景 | 企业集群、多终端共享、批量部署 | 个人单机、独立研发、专属授权 |
二 、IT 部署标准化要求¶
为保证 FlexLM License Server 的稳定性、兼容性和安全性,结合行业最佳实践制定以下标准化部署要求,CentOS 7 64bit为核心推荐系统,严格禁用非兼容系统与非标准配置,所有配置均经过主流 EDA 工具兼容性验证。
2.1 基础环境配置¶
- 网卡配置
:网卡名称统一修改为
eth0
- 老版本 FlexLM 默认写死认证网卡名称为
eth0,无法自定义; -
新版虽支持自定义网卡名称,但为兼容多版本 EDA 工具与 FlexLM,强制统一为
eth0。 -
操作系统¶
:CentOS 7 64bit
(唯一推荐)
- 经全量 EDA 工具兼容性验证,为企业级部署最佳实践;
-
严格禁用 Ubuntu、Debian 等非 RHEL 系系统,存在库文件、进程管理兼容性问题。
-
权限控制¶
:禁用 NIS/LDAP 验证
- 从安全角度出发,License Server 仅允许 IT 管理员直接登录;
- 禁止普通研发用户、业务用户拥有服务器登录权限,防止误操作导致服务中断。
2.2 存储与挂载策略¶
采用分级挂载策略,根据安全要求分为默认模式和严格模式,核心原则为最小权限挂载,禁止无关目录挂载,防止许可证文件被篡改、删除。
- 默认模式:仅通过 NFS 挂载
software目录(存放 EDA 工具、FlexLM 程序),不挂载其他目录; - 严格模式:仅通过 NFS 挂载
lic目录(存放许可证文件、日志文件、配置文件),不挂载其他目录; - 通用禁忌:禁止将
lic目录与普通业务目录混合挂载。
2.3 网络与防火墙策略¶
License Server 为企业核心授权资源,禁止外网访问,仅对内部业务区(HPC 区)开放,分默认模式和严格模式管控,核心为端口级精准放行。
- 默认模式:仅对企业内部 HPC 区开放 License Server 的 IP 地址,禁止其他网段访问;
- 严格模式:仅放行
lmgrd和Vendor daemon的专属 TCP 通信端口到 HPC 区,其他端口全部禁用; - 核心要求:防火墙策略需配置入站规则,仅允许 HPC 区的 IP 段发起连接,拒绝所有非授权网段的连接请求。
2.4 硬件与机型配置¶
License Server 对硬件资源要求较低,优先采用虚拟机部署(本地 / 云上均可),满足可靠性需求时需做高可用(HA)配置,硬件配置参考 FlexNetLicensingEndUserGuide.pdf 第 8 章(P67-P70)。
- 基础硬件配置:2Core CPU + 4GB Memory,满足常规集群授权需求;
- 部署形态:优先使用虚拟机,便于资源弹性调整、快照备份与 HA 漂移;
- 运行要求:服务器需7*24 小时常开,禁止随意关机、重启;
- 高可用要求:企业级核心业务场景,需部署 HA 方案,防止单点故障导致授权服务中断。
三 License Server 服务管理¶
3.1 核心程序说明¶
FlexLM 的核心程序为lmgrd,不同 EDA 厂商的lmgrd版本不可混用,存在厂商专属的协议与库文件依赖,程序获取方式分两类:
- Synopsys:
lmgrd单独提供,组件名为scl,需从 Synopsys 官方获取对应版本; - Cadence/Mentor/Keysight/ 华大九天:
lmgrd整合在 EDA 工具安装包中,可从工具的lic/license目录中单独提取。
3.2 服务启动命令¶
3.2.1 基础启动命令¶
# 以Synopsys为例,通用格式:lmgrd -c 许可证文件路径 -l 日志文件路径
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
3.2.2 核心启动参数¶
lmgrd的启动参数大小写敏感,核心必选参数如下,其他参数参考官方文档:
| 参数 | 功能说明 | 必选 / 可选 |
|---|---|---|
-c |
指定许可证文件(lic file)的路径 / 列表 | 必选 |
-l |
指定调试日志(debug log)的存储路径 | 必选 |
-v |
查看lmgrd的版本信息 |
可选 |
-o |
指定访问限制策略配置文件(option file)路径 | 可选(精细化配置时使用) |
3.3 服务自启动配置¶
为保证 License Server 重启后服务自动恢复,将启动命令添加至系统自启动脚本/etc/rc.local,并赋予脚本执行权限。
# 1. 编辑rc.local文件
vi /etc/rc.local
# 2. 添加启动命令(末尾行,以Synopsys为例)
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
# 3. 赋予执行权限
chmod +x /etc/rc.local
3.4 依赖库与系统组件¶
lmgrd运行依赖 Linux 系统核心库文件,需保证所有依赖库存在且版本兼容,同时安装redhat-lsb.x86_64组件(Linux Standard Base)。
3.4.1 核心依赖库文件¶
Linux-vdso.so.1
libpthread.so.0 => /lib64/libpthread.so.0
libm.so.6 => /lib64/libm.so.6
libgcc_s.so.1 => /lib64/libgcc_s.so.1
libc.so.6 => /lib64/libc.so.6
libdl.so.2 => /lib64/libdl.so.2
/lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2
3.4.2 系统组件安装¶
# 安装redhat-lsb.x86_64
yum install -y redhat-lsb.x86_64
3.5 进程状态检查¶
服务启动后,需验证lmgrd和对应Vendor daemon进程是否正常运行,避免进程启动失败导致授权服务不可用
# 检查lmgrd进程
ps -ef | grep lmgrd | grep -v grep
# 检查Vendor daemon进程(以Synopsys的snpslmd为例)
ps -ef | grep snpslmd | grep -v grep
# 检查端口监听状态(以lmgrd端口27000为例)
netstat -tulnp | grep 27000
# 或使用ss命令(CentOS 7推荐)
ss -tulnp | grep 27000
3.6 服务重启方案¶
服务配置修改后(如 lic 文件、option file),需重启lmgrd和Vendor daemon进程使配置生效,支持脚本重启(推荐)*和*手动重启(应急)。
3.6.1 脚本重启(推荐,避免进程残留)¶
#!/bin/bash
# 重启脚本(以Synopsys snpslmd为例),保存为restart_lic.sh,赋予执行权限chmod +x restart_lic.sh
# 1. 查询snpslmd进程PID(适配多空格分隔,awk更稳定)
export PID=`ps -ef | grep snpslmd | grep -v grep | head -n 1 | awk '{print $2}'`
# 2. 查杀进程
if [ -n "$PID" ]; then
echo "Synopsys license process ID is $PID , kill it!"
kill -9 $PID
else
echo "No Synopsys license process running!"
fi
# 3. 等待60秒,确保进程完全退出
sleep 60
# 4. 重启lmgrd服务(指定lic文件和日志文件)
/fastone/software/synopsys/scl/2018.06-SP1/linux64/bin/lmgrd -c /fastone/software/lic/synopsys.dat -l /fastone/software/lic/synopsys.log
# 5. 验证重启后进程状态
export NEW_PID=`ps -ef | grep snpslmd | grep -v grep | head -n 1 | awk '{print $2}'`
if [ -n "$NEW_PID" ]; then
echo "Synopsys license process restart success! New PID is $NEW_PID"
else
echo "Synopsys license process restart failed!"
fi
3.6.2 手动重启(应急使用)¶
# 1. 查杀lmgrd进程
kill -9 `ps -ef | grep lmgrd | grep -v grep | awk '{print $2}'`
# 2. 查杀Vendor daemon进程(如snpslmd)
kill -9 `ps -ef | grep snpslmd | grep -v grep | awk '{print $2}'`
# 3. 等待30秒,确保进程退出
sleep 30
# 4. 重启lmgrd
/xxx/lmgrd -c /xxx/xxx.dat -l /xxx/xxx.log
四 许可证核心配置解读¶
4.1 常用许可证环境变量¶
环境变量是客户端查找许可证服务端 / 本地文件的核心,分通用环境变量和厂商专属环境变量,生产环境严格禁用通用变量,防止多厂商工具授权校验混乱。
4.1.1 配置规则¶
- 浮动授权:格式为
setenv 环境变量名 PORT@IP[:PORT@IP](主从备份用冒号分隔多个服务端); - 节点锁定授权:格式为
setenv 环境变量名 许可证文件绝对路径; - 生效范围:建议在用户环境变量脚本(如
~/.cshrc)或工具启动脚本中配置,保证仅对目标工具生效。
4.1.2 主流厂商环境变量配置示例¶
# 通用变量(仅技术测试使用,生产环境禁用!!!)
# setenv LM_LICENSE_FILE 27000@10.10.1.185
# Cadence
setenv CDS_LICENSE_FILE /fastone/software/lic/cadence.dat
setenv CDS_LIC_FILE /fastone/software/lic/cadence.dat
# Cliosoft SOS
setenv CLIOLMD_LICENSE_FILE 5217@10.10.1.185:5217@10.10.1.209
# Mentor
setenv MGLS_LICENSE_FILE /fastone/software/lic/calibre_Nodelocked.dat:27001@10.10.1.185
# Xilinx
setenv XILINXD_LICENSE_FILE /fastone/software/lic/xilinx_ise_vivado.lic
# Synopsys(主从备份配置示例)
setenv SNPSLMD_LICENSE_FILE 27000@10.10.1.185:27000@10.10.1.209
# Keysight & ADS
setenv ADS_LICENSE_FILE 27009@10.10.1.209
setenv ICCAP_LICENSE_FILE 5277@10.10.1.185
# Sonnet
setenv SONNETD_LICENSE_FILE 27002@10.10.1.185
# Ansys
setenv APACHEDA_LICENSE_FILE 27004@10.10.1.209
setenv ANSYSLMD_LICENSE_FILE /fastone/software/lic/ansyslmd.lic
4.1.3 核心禁忌¶
通用环境变量LM_LICENSE_FILE为所有 FlexLM 验证机制的软件共用,正式生产环境禁止使用:
- 多厂商工具同时使用该变量时,会导致授权校验混乱;
- 引发 EDA Tools 启动缓慢、授权校验失败、工具异常退出等问题
4.2 许可证文件(lic file)结构解读¶
许可证文件是 FlexLM 授权的核心,为明文 + 加密混合格式,包含SERVER、DAEMON/VENDOR、Feature三大核心段,部分字段不可修改,修改后会导致授权失效。
4.2.1 典型文件示例¶
# SERVER段:服务器基础信息
SERVER lic-1 00163e1b40a7 27000
# VENDOR段:厂商守护进程信息(Synopsys为snpslmd,Cadence为cdslimd等)
VENDOR snpslmd /opt/lic/bin/scl/2018.06-SP1/linux64/bin/snpslmd \
options=/opt/lic/option_exclude \
USER_SERVER
# Feature段:具体功能模块授权信息(核心加密段)
Feature hspice_adv snpslmd 2019.2019 30-jun-2029 254 \
VENDOR_STRING=^1+S&PID=9b530424& SUPERSEDE ISSUED=01-apr-2004 \
ck=216 SN=RK:2671-0:167603:0 START=01-apr-2004 AUTH={ snpslmd=( \
LK=9F90391C24EB87215394) }
4.2.2 各段详细说明¶
- SERVER 段
:定义 License Server 基础信息,格式
SERVER 主机名 MAC地址 lmgrd端口
- 可修改字段:主机名、lmgrd 通信端口(服务器变更后同步修改即可);
-
不可修改字段:网卡 MAC 地址(修改后授权失效,需重新申请许可证)。
-
VENDOR/DAEMON 段
:定义厂商专属守护进程信息,格式
VENDOR/DAEMON 厂商daemon名称 进程路径 [端口/配置]
- 必配项:厂商 daemon 名称、进程绝对路径;
- 可配置项:通信端口(无定义则系统随机分配)、
options=(关联访问限制配置文件)、USER_SERVER(强制服务端校验); -
换行标识:行尾加
\,下一行继续书写,空格为分隔符。 -
Feature 段
:定义具体功能模块的授权信息,为核心加密段
- 明文信息:feature 名称、厂商 daemon、授权版本、过期时间、授权数量(count);
- 加密字段:
ck、SN、AUTH等,由明文信息 + SERVER 段 MAC 加密生成; - 不可修改字段:所有字段均不可修改,任意修改会导致加密校验失败,标记为
invalid license key。
4.2.3 关键关键字说明(VENDOR 段)¶
| 关键字 | 配置格式 | 功能说明 |
|---|---|---|
| options= | options = 绝对路径 | 关联访问限制配置文件(option file),精细化管控时必配,必须为绝对路径 |
| USER_SERVER | 单独占行 / 行尾 | 强制 EDA Tools 客户端通过 License Server 做浮动授权校验,禁止本地节点锁定校验 |
4.3 许可证调试日志(debug log)解读¶
调试日志由lmgrd启动参数-l指定,记录 License Server 的启动状态、进程信息、端口监听、配置加载、客户端访问、授权签出 / 归还、拒绝事件等所有核心信息,是故障排查和配置验证的唯一核心依据。
4.3.1 核心日志内容¶
- lmgrd 进程信息:启动时间、版本、PID、监听端口、启动命令;
- Vendor daemon 进程信息:启动时间、版本、PID、通信端口、支持的 feature 列表;
- 配置加载信息:option file 路径、访问限制规则、lic 文件完整性校验结果;
- 许可证校验信息:授权有效性校验、站点信息(Siteid)、服务器 MAC;
- 客户端访问信息:客户端 IP / 用户名、授权申请的 feature 名称、请求处理时间;
- 授权状态信息:授权签出(OUT)/ 归还(IN)记录、当前可用授权数量;
- 拒绝事件信息:非授权访问的拒绝记录、错误码、拒绝原因。
4.3.2 关键日志标识¶
| 标识 | 含义 | 核心说明 |
|---|---|---|
OUT: "feature名" 用户名@客户端节点 |
授权签出 | License Server 的授权数量count-1,客户端获权使用 |
IN: "feature名" 用户名@客户端节点 |
授权归还 | License Server 的授权数量count+1,客户端释放授权 |
[]内唯一标识 |
签出 / 归还关联标识 | 一次完整的签出 - 归还循环为同一个标识,用于追溯单次授权 |
Using options file: 路径 |
加载访问限制配置 | 表示成功关联 option file,精细化管控规则已加载 |
EXCLUDE XXX from XXX |
加载拒绝规则 | 逐一打印 option file 中的所有访问限制规则 |
DENIED: "feature名" 用户名@节点 |
授权拒绝事件 | 触发访问限制规则,非授权访问被拒绝,附带错误码 (-38,348) |
invalid license key |
许可证密钥无效 | Feature 段加密校验失败,该功能模块授权禁用 |
4.3.3 核心日志查看命令¶
# 实时跟踪日志(核心运维命令)
tail -f /fastone/software/lic/synopsys.log
# 查找option file加载信息
grep "Options file used" /fastone/software/lic/synopsys.log
# 查找所有访问限制规则加载信息
grep "EXCLUDE" /fastone/software/lic/synopsys.log
# 查找所有授权拒绝事件(核心排查命令)
grep "DENIED" /fastone/software/lic/synopsys.log
# 查找指定Feature的拒绝事件
grep "DENIED: VCSRuntime_Net" /fastone/software/lic/synopsys.log
# 查找授权签出/归还记录
grep -E "OUT:|IN:" /fastone/software/lic/synopsys.log
# 查找错误信息
grep -i "error|invalid|fail" /fastone/software/lic/synopsys.log
五 Floating License 精细化访问限制策略(核心高阶配置)¶
本策略仅对 Floating Mode 生效,对 Node-Locked Mode 无任何限制作用,通过编写option file定义访问规则,实现对指定 Feature、主机、用户、IP 段的许可证校验拒绝控制,精准管控 Floating License 的使用范围,杜绝非授权节点 / 用户占用授权资源,是企业集群 License 管控的核心配置。
5.1 核心配置原理¶
FlexLM 的访问限制通过 「规则配置文件(option file)+ 许可证文件(lic file)关联」 实现,核心逻辑为:
- 在
option file中定义拒绝规则(如拒绝某主机 / 用户访问某 Feature); - 在 lic 文件的
VENDOR段中通过options=指定option file的绝对路径,建立策略关联; - 添加
USER_SERVER关键字强制服务端校验,禁止客户端本地校验; - 重启 lmgrd 和 Vendor daemon 进程,使规则加载生效;
- 许可证校验时,Vendor daemon 会根据
option file规则过滤请求,拒绝非授权访问并记录日志。
5.2 Step1:编写 Option File 访问规则¶
option file是纯文本配置文件,通过分组关键字 + 拒绝关键字组合定义规则,支持单对象 / 组对象、单 IP/IP 段的精细化限制,配置前需规划好需限制的 Feature、目标主机 / 用户 / IP,配置文件建议命名为option_exclude,存放于lic目录(如/opt/lic/)。
5.2.1 核心关键字说明¶
分为分组关键字(批量定义对象,减少重复配置)和匹配关键字(单对象定义),所有关键字大小写敏感,需严格按语法书写
| 关键字 | 类型 | 功能说明 |
|---|---|---|
| HOST_GROUP | 分组关键字 | 将多个主机名(hostname)定义为一个主机组,便于批量限制(如登录节点组 LOGIN) |
| USER_GROUP | 分组关键字 | 将多个用户名定义为一个用户组,便于批量限制(如普通用户组 ANA) |
| HOST | 匹配关键字 | 指定单个主机名,精准限制某一台节点 |
| USER | 匹配关键字 | 指定单个用户名,精准限制某一个用户 |
| INTERNET | 匹配关键字 | 指定单个 IP/IP 段(支持通配符*),限制某一 IP 段的节点访问 |
| EXCLUDE | 核心关键字 | 拒绝规则标识,后接需限制的 Feature 和目标对象,为所有规则的起始标识 |
5.2.2 标准配置语法¶
所有规则均以EXCLUDE开头,后接Feature 名称 + 匹配类型 + 目标对象,空格为分隔符,不可省略,一行定义一条规则,先分组后定义规则便于管理
# 基础语法
EXCLUDE <feature_name> HOST <hostname> # 拒绝单个主机访问指定Feature
EXCLUDE <feature_name> HOST_GROUP <host_group_name> # 拒绝主机组中所有主机访问指定Feature
EXCLUDE <feature_name> USER <user_name> # 拒绝单个用户访问指定Feature
EXCLUDE <feature_name> USER_GROUP <user_group_name> # 拒绝用户组中所有用户访问指定Feature
EXCLUDE <feature_name> INTERNET <IP_ADDR/*> # 拒绝指定IP/IP段访问指定Feature(支持*通配符)
5.2.3 完整配置示例¶
# 保存为/opt/lic/option_exclude,纯文本无后缀
# 1. 定义主机组:将login-1/2/3/4登录节点划分为LOGIN组,批量限制
HOST_GROUP LOGIN login-1 login-2 login-3 login-4
# 2. 定义用户组:将user1/2/3/4划分为ANA组,批量限制
USER_GROUP ANA user1 user2 user3 user4
# 3. 拒绝单个IP访问VCSCompiler_Net
EXCLUDE VCSCompiler_Net INTERNET 10.100.100.16
# 4. 拒绝10.100.100.*段所有IP访问VCSRuntime_Net(通配符*适配IP段)
EXCLUDE VCSRuntime_Net INTERNET 10.100.100.*
# 5. 拒绝LOGIN主机组所有节点访问VCSCompiler_Net(批量限制)
EXCLUDE VCSCompiler_Net HOST_GROUP LOGIN
# 6. 拒绝LOGIN主机组所有节点访问VCSRuntime_Net(批量限制)
EXCLUDE VCSRuntime_Net HOST_GROUP LOGIN
# 7. 拒绝单个主机login-3访问VCSCompiler_Net(精准补充限制)
EXCLUDE VCSCompiler_Net HOST login-3
# 8. 拒绝单个主机login-3访问VCSRuntime_Net(精准补充限制)
EXCLUDE VCSRuntime_Net HOST login-3
# 9. 拒绝单个用户user1访问VCSRuntime_Net
EXCLUDE VCSRuntime_Net USER user1
# 10. 拒绝ANA用户组所有用户访问VCSRuntime_Net(批量限制)
EXCLUDE VCSRuntime_Net USER_GROUP ANA
# 11. 按用户设置最大并发数(MAX、MAX_INSTANCES)单用户最多 2 个 Innovus、3 个 VCS
MAX 2 pnr_tool user1
MAX_INSTANCES 5 vcs_user user*
# License 超时与自动回收(TIMEOUT、TIMEOUTALL)
TIMEOUT 3600 feature_name
TIMEOUTALL 7200
5.2.4 配置规范¶
- 配置文件无后缀,建议命名为
option_xxx(如option_exclude),便于识别; - 路径建议与 lic 文件同目录,且为绝对路径,避免路径映射问题;
- 注释用
#开头,单独占行,不可与规则同行; - Feature 名称需与 lic 文件中
Feature段的名称完全一致(大小写敏感); - 主机名 / 用户名 / IP 需与实际环境一致(通过
hostname/whoami/ifconfig验证),避免拼写错误导致规则失效; - 优先分组定义规则,减少重复配置,便于后期维护
5.3 Step2:修改 License File 关联策略¶
完成option file编写后,需在lic 文件的VENDOR段中添加配置,此步骤为规则生效的核心关联环节,修改后需保存 lic 文件,确保无语法错误。
5.3.1 核心修改要求¶
- 必须在
VENDOR行中指定Vendor daemon 进程的绝对路径; - 通过
options=指定option file的绝对路径,路径需与实际存放位置一致; - 行尾添加
USER_SERVER关键字,强制客户端通过服务端校验,禁止客户端本地节点锁定校验; - 换行用
\标识(行尾加\,下一行继续书写),空格为分隔符,无多余空格。
5.3.2 完整配置示例(以 Synopsys 为例)¶
# SERVER段:保持原有配置不变,无需修改
SERVER lic-1 00163e1b40a7 27000
# VENDOR段:核心修改,关联option file并强制服务端校验
VENDOR snpslmd /opt/lic/bin/scl/2018.06-SP1/linux64/bin/snpslmd \
options=/opt/lic/option_exclude \
USER_SERVER
# Feature段:保持原有配置不变,无需修改
Feature hspice_adv snpslmd 2019.2019 30-jun-2029 254 \
VENDOR_STRING=^1+S&PID=9b530424& SUPERSEDE ISSUED=01-apr-2004 \
ck=216 SN=RK:2671-0:167603:0 START=01-apr-2004 AUTH={ snpslmd=( \
LK=9F90391C24EB87215394) }
option file和 lic 文件修改后,必须重启 lmgrd 和 Vendor daemon 进程,规则才能被加载生效,重启后通过查看 debug log 验证配置是否生效,分为规则加载验证和拒绝事件验证
5.3.3 规则加载验证(启动日志)¶
重启服务后,日志中会打印已加载的 option file 路径和所有 EXCLUDE 规则,表示规则已成功加载,示例如下:
# 核心验证:option file路径正确
15:21:15 (snpslmd) (@snpslmd-SLOG@) Options file used:/opt/lic/option_exclude
# 所有拒绝规则逐一加载,无缺失
15:21:13 (snpslmd) EXCLUDE Internet Address 10.100.100.16 from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST GROUP LOGIN from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST Login-3 from VCSCompiler_Net
15:21:13 (snpslmd) EXCLUDE HOST_GROUP LOGIN from VCSRuntime_Net
5.3.4 拒绝事件验证(访问日志)¶
当非授权节点 / 用户发起许可证校验请求时,日志中会记录拒绝事件,核心关键字为DENIED,并附带标准错误码(-38,348),表示规则已生效并触发,示例如下:
# 拒绝login-3节点的fuyunlong用户访问VCSCompiler_Net
15:22:42 (snpslmd) DENIED: "VCSCompiler_Net" fuyunlong@login-3 [snps_checkout_1713252162] (User/host on EXCLUDE List for feature.(-38,348))
# 拒绝login-2节点的wangxs用户访问VCSRuntime_Net
16:35:41 (snpslmd) DENIED: "VCSRuntime_Net" wangxs@Login-2 [snps_checkout_1713256541] (User/host on EXCLUDE List for feature.(-38,348))
日志字段解读:DENIED: "Feature名" 用户名@主机名 [校验唯一标识] (拒绝原因+标准错误码)
六 高可用(HA)方案¶
为避免 License Server 单点故障导致企业级 EDA 工具无法使用,FlexLM 的 HA 方案采用双层架构实现,分别在IT 基础设施层和业务层做高可用配置,核心为主从备份、自动切换,保证授权服务 7*24 小时可用。
6.1 IT 基础设施层实现¶
核心方案:基于 Vmotion 的虚拟机漂移方案(VMware 虚拟化环境)
实现原理:将 License Server 部署在 VMware 虚拟化集群中,通过 Vmotion 和 Storage Vmotion 实现:
-
物理服务器故障时,License Server 虚拟机自动漂移至健康的物理节点;
-
存储故障时,虚拟机存储自动漂移至健康的存储设备;
核心优势
:无业务层改造,实现底层硬件 / 存储的无感知故障切换,保证 License Server 的基础运行环境可用。
6.2 业务层实现¶
为避免 License Server 单点故障导致企业级 EDA 工具无法使用,FlexLM 的 HA 方案采用双层架构实现,分别在IT 基础设施层和业务层做高可用配置,核心为主从备份、自动切换,保证授权服务 7*24 小时可用。
6.1 IT 基础设施层实现¶
核心方案:双 License Server 主从备份,客户端环境变量配置多服务端地址,实现自动故障切换
实现原理:
- 部署两台配置完全一致的 License Server(主 / 从),均配置相同的 lic 文件、option file、进程、网络策略;
- 客户端环境变量中配置两个服务端地址(
PORT1@HOST1:PORT2@HOST2),用冒号分隔; - 客户端优先连接主服务端(HOST1),连接失败 / 无响应时,自动切换至从服务端(HOST2);
- 双服务端均失败时,客户端授权校验失败,EDA Tools 退出。
6.2 业务层实现¶
核心方案:双 License Server 主从备份,客户端环境变量配置多服务端地址,实现自动故障切换
实现原理:
- 部署两台配置完全一致的 License Server(主 / 从),均配置相同的 lic 文件、option file、进程、网络策略;
- 客户端环境变量中配置两个服务端地址(
PORT1@HOST1:PORT2@HOST2),用冒号分隔; - 客户端优先连接主服务端(HOST1),连接失败 / 无响应时,自动切换至从服务端(HOST2);
- 双服务端均失败时,客户端授权校验失败,EDA Tools 退出。
6.2.1 客户端配置示例¶
# Synopsys双服务端配置(主:27000@10.10.1.185,从:27000@10.10.1.209)
setenv SNPSLMD_LICENSE_FILE 27000@10.10.1.185:27000@10.10.1.209
# Cadence双服务端配置(主:5280@172.16.1.156,从:5280@172.16.1.109)
setenv CDS_LICENSE_FILE 5280@172.16.1.156:5280@172.16.1.109
6.2.2 核心要求¶
- 主 / 从 License Server 的lic 文件、option file 完全一致,保证授权信息和访问规则相同;
- 双服务端的网络策略、硬件配置、系统环境完全一致,均对 HPC 区开放相同端口;
- 双服务端均配置7*24 小时运行和自启动脚本,防止单端重启导致切换失败;
- 双服务端的 Vendor daemon 进程端口建议统一,便于客户端配置。
七 混合许可证系统架构(商业 lic + 内部 lic)¶
企业场景中常存在商业许可证(商用 EDA 工具)*和*内部许可证(自研工具)*混合使用的需求,**核心禁忌为禁止商业版与内部版工具互相校验许可证**,会导致授权混乱、工具崩溃、许可证失效等严重问题,推荐两种架构方案,按*安全优先级选择。
7.1 方案一:独立集群方案(推荐,安全优先)¶
核心原则:环境完全隔离,商业 lic 和内部 lic 部署在两套独立的集群中,互不可访问,仅共享研发数据目录,从底层杜绝互访风险。
7.1.1 隔离配置要求¶
- License Server 隔离:部署两套独立的 License Server,分别管控商业 lic 和内部 lic,服务器之间禁止网络互通;
- EDA 工具隔离:商业 EDA 工具和自研工具存放在独立的 NFS 文件夹,分别挂载,禁止混合存放;
- 集群隔离:部署两套独立的计算集群,分别运行商业工具和自研工具,集群之间禁止网络互通;
- 数据共享:仅研发数据目录(如
/fastone/projects)可跨集群挂载,保证研发数据的统一性。
7.1.2 核心优势与缺点¶
- 优势:最大限度避免人为失误导致的许可证互访,彻底杜绝商业 / 内部工具的授权冲突,安全性最高,运维排查简单;
- 缺点:需部署两套独立的硬件集群和 License Server,资源开销大,运维成本稍高。
7.2 方案二:环境变量隔离方案(成本优先)¶
核心原则:一套硬件集群,环境变量严格隔离,通过专属的环境变量脚本实现商业 / 内部 lic 的访问隔离,节省硬件资源。
7.2.1 隔离配置要求¶
- License Server 部署:部署两台独立的 License Server(商业 / 内部),同集群内网络可达;
- 环境变量脚本隔离:编写两套专属的环境变量初始化脚本(如
cshinit_commercial、cshinit_internal),分别配置商业 / 内部工具的许可证环境变量; - 工具启动隔离:运行商业工具前执行
source cshinit_commercial,运行自研工具前执行source cshinit_internal,禁止同时执行两套脚本; - 运维管控:制定严格的运维规范,禁止研发 / 运维人员随意修改环境变量,防止隔离失效。
7.2.2 核心优势与缺点¶
- 优势:仅需一套硬件集群,节省硬件资源和部署成本,运维操作集中;
- 缺点:对 IT-CAD 运维人员和研发人员的专业能力要求极高,环境变量配置失误易导致隔离失效,存在授权冲突风险,排查难度大
八 故障排查核心思路与常见问题解决¶
FlexLM 的故障主要分为客户端故障、服务端故障、精细化配置故障,排查核心原则为先客户端后服务端、先基础配置后网络、先日志后进程,结合 FlexLM ErrorCode 手册(FlexNetLicensingEndUserGuide.pdf 第 20 章 P231-P242)快速定位问题,debug log 是所有故障排查的核心依据。
8.1 通用故障排查流程¶
- 定位故障节点:确认是单个客户端故障、部分客户端故障,还是全量客户端故障(全量故障大概率为服务端问题);
- 检查基础配置:客户端环境变量、服务端进程状态、lic 文件路径 / 完整性;
- 检查网络连通性:客户端与服务端的 IP / 端口可达性(ping/telnet 测试);
- 分析 debug log:客户端工具日志、服务端 FlexLM debug log,查找错误关键字 / 错误码;
- 验证配置有效性:lic 文件 MAC / 时间 / 加密字段、option file 规则拼写、路径正确性;
- 重启服务验证:配置修改后重启服务,确认故障是否解决。
8.2 客户端常见故障与解决¶
| 故障现象 | 常见原因 | 解决方法 |
|---|---|---|
| EDA Tools 启动提示无可用授权 | 1. 环境变量配置错误;2. 客户端无访问服务端端口权限;3. 授权数量被占满 | 1. 核对厂商专属环境变量,禁用通用变量;2. 测试端口连通性,开放防火墙;3. 查看服务端 OUT 记录,释放闲置授权 |
| 工具启动缓慢,卡在 license check | 1. 生产环境使用了 LM_LICENSE_FILE 通用变量;2. 服务端网络延迟高 | 1. 删除通用变量,配置厂商专属变量;2. 检查网络链路,优化网络策略 |
| 提示 license key invalid | 1. 本地 lic 文件被篡改;2. 客户端误做本地节点锁定校验 | 1. 替换为原始 lic 文件;2. 服务端添加 USER_SERVER,强制服务端校验 |
8.3 服务端常见故障与解决¶
| 故障现象 | 常见原因 | 解决方法 |
|---|---|---|
| lmgrd 进程无法启动,无日志输出 | 1. lic 文件不存在(-c 参数路径错误);2. 依赖库缺失 | 1. 核对 lic 文件绝对路径,修正 - c 参数;2. 安装 redhat-lsb.x86_64,检查依赖库 |
| lmgrd 启动后 Vendor daemon 进程崩溃 | 1. lic 文件 MAC 与服务器实际 MAC 不一致;2. lic 文件过期;3. Vendor daemon 进程路径错误 | 1. 核对 SERVER 段 MAC,重新申请 lic;2. 核对 lic 过期时间,更新 lic;3. 修正 VENDOR 段进程绝对路径 |
| 日志提示 invalid license key | Feature 段加密字段被篡改 / 修改 | 替换为原始 lic 文件,禁止修改 Feature 段任何字段 |
8.4 精细化配置常见故障与解决¶
| 故障现象 | 常见原因 | 解决方法 |
|---|---|---|
| 日志中无 Options file used 信息,规则未加载 | 1. VENDOR 段 options = 路径错误;2. 换行符 \ 缺失;3. 多余空格 | 1. 核对 option file 绝对路径,确保文件存在;2. 补充行尾 \,删除多余空格;3. 重启服务 |
| 部分规则生效,部分规则失效 | 1. Feature / 主机名 / 用户名拼写错误(大小写敏感);2. IP 段通配符使用错误 | 1. 逐行核对规则与实际环境一致性;2. 通配符仅用于 IP 段,如 10.100.100. |
| 合法节点 / 用户被误拒绝(DENIED) | option file 规则配置错误,误将合法对象加入拒绝列表 | 1. 查找 DENIED 日志,定位误限制对象;2. 修改 option file 删除错误规则;3. 重启服务 |
| 提示错误码 (-38,348) | 对象在 EXCLUDE 列表中,触发访问限制规则 | 1. 如需放行,删除 option file 中对应规则;2. 如需限制,保持规则不变即可 |
8.5 EDA 特有的 License 坑¶
同工具不同 Feature 消耗不同 License
- VCS Runtime 与 VCS Compiler 不同
- SPICE 仿真、Optimization 是不同 Feature
多线程工具会占多份 License
部分工具按 CPU 核数收费,-n N 会 checkout N 个 Lic
交互式 GUI 与 batch 占用同一份 License
有人开 GUI 不关,直接导致批量任务无 License
PnR、SPICE、Formal 一旦 checkout 基本不释放
不能靠 TIMEOUT 管理,必须靠 Slurm QoS + 监控
跨地域 License 漫游(License Borrow)
远程办公借用 License,离线可用
风险:借走不还,中心资源永久减少
九 运维最佳实践总结¶
标准化部署:严格遵循 CentOS 7 64bit、eth0 网卡、最小权限挂载、HPC 区专属访问的部署规范,禁用非兼容配置,从基础保证服务稳定性;
精细化管控:生产环境禁用通用环境变量LM_LICENSE_FILE,使用厂商专属变量;Floating License 配置 option file 做访问限制,杜绝非授权使用;
7*24 小时运维:License Server 设置自启动脚本和进程监控,配置 HA 方案,防止单点故障;定期检查进程状态、日志文件,及时发现异常;
日志化管理:开启 debug log 并配置日志滚动备份,避免日志文件过大;通过日志追溯授权使用情况、拒绝事件、故障问题,日志为唯一核心依据;
安全化隔离:商业 lic 与内部 lic 优先采用独立集群隔离,禁止工具互相校验许可证;License Server 仅允许 IT 管理员登录,限制文件操作权限;
配置规范化:lic 文件、option file 使用绝对路径,存放于专属 lic 目录;配置文件做版本控制,修改后记录变更内容,便于回滚;新规则先在测试环境验证,再部署生产;
最小限制原则:访问限制规则仅对非授权对象做拒绝限制,合法对象保持默认放行,避免过度配置导致授权异常;优先分组定义规则,便于后期维护
十 SOS 全量使用与运维手册¶
本手册整合 SOS(Cliosoft SOS)工具的环境配置、服务器部署、项目管理、数据迁移、客户端使用、故障排查等全维度内容,适用于 IC 设计团队管理员、项目负责人及普通用户,基于 SOS 7.04-7.05 版本编写,适配速石 FCC/FCCE 集群环境,兼顾运维部署与工程化实操需求。
SOS 是 Cliosoft 旗下IC 设计数据管理工具,主打项目文件版本控制、多用户协同、跨站点数据同步,与 Cadence Virtuoso 深度集成,支持原理图、版图、网表、模型文件等 IC 设计全流程数据的统一管理,是大规模 IC 设计团队协同开发的核心工具。
1 工具核心认知¶
1.1 核心功能与工程价值¶
SOS 的核心功能围绕 IC 设计数据的 “存储、协同、版本控制” 展开,解决多用户并行开发、数据一致性、历史回溯等痛点:
| 核心功能 | 具体说明 | 工程价值 |
|---|---|---|
| 项目数据管理 | 集中存储项目文件(原理图、版图、网表等),支持文件 check-in/check-out、版本追溯 | 避免本地文件丢失,统一数据存储规范 |
| 多用户协同 | 基于角色的权限控制(ADMIN/MEMBER/GUEST),支持并发编辑与冲突解决 | 多人并行开发,避免数据覆盖,提升协作效率 |
| 数据迁移与备份 | 支持项目归档、恢复、跨服务器迁移,自动备份关键数据 | 保障数据安全,支持项目迁移与历史数据回溯 |
| 跨站点同步 | 多 site 部署时,通过 Cache Server 实现跨地域数据同步 | 异地团队协同,降低跨站点访问延迟 |
| Virtuoso 集成 | 与 Virtuoso Library Manager 无缝对接,支持设计库直接 check-in/check-out | 无需切换工具,实现设计与数据管理一体化 |
1.2 系统架构与角色分工¶
SOS 采用典型 C/S(客户端 - 服务器)架构,包含 4 个核心角色,各角色独立部署且职责明确:
| 角色 | 部署位置 | 核心职责 | 依赖条件 |
|---|---|---|---|
| Primary Server(主服务器) | 集群常开节点 | 项目元数据管理、数据存储、权限控制 | 需接入 LDAP/NIS,独立 NFS 存储目录 |
| Cache Server(缓存服务器) | 各 site 本地节点 | 缓存常用数据,降低主服务器访问压力 | 与主服务器网络连通,相同存储路径映射 |
| License Server(许可证服务器) | 独立节点 | 提供浮动许可证(Floating License) | 开放 5281/27009 端口,网络可达 |
| Client(客户端) | 用户本地 /login 节点 | 用户交互入口,执行项目文件操作 | 需加载 SOS 环境变量,获取许可证 |
1.2.1 单站点架构¶
[Primary Server] ←→ [Cache Server] ←→ [SOS Client(用户A)/SOS Client(用户B)]
↑
[PostgreSQL数据库](存储项目元数据、版本信息)
1.2.2 多站点架构¶
# 主站点(如San Jose)
[Primary Server] ←→ [Cache Server-1] ←→ [本地Client集群]
↑
[PostgreSQL数据库]
↓
# 从站点(如Shanghai)
[Cache Server-2] ←→ [本地Client集群]
1.3 版本与环境适配¶
| SOS 版本 | 核心特性 | 适配场景 |
|---|---|---|
| 7.04.p1 | 基础项目管理、数据迁移功能,支持 LSF 调度器 | 单站点小规模团队,老项目兼容 |
| 7.05.p3 | 优化跨站点同步、Cache Server 性能,支持 Slurm 调度器 | 多站点协同、大规模团队,推荐新项目使用 |
环境适配要求:
- 操作系统:CentOS 5 及以上(推荐 CentOS7,与集群环境兼容);
- 网络要求:主服务器与客户端、缓存服务器间网络带宽≥1Gbps;
- 存储要求:主服务器需挂载独立 NFS 存储(推荐 450GB 以上可用空间)
2 环境配置(速石 FCC/FCCE 平台)
2.1 基础环境变量配置¶
SOS 环境变量需通过modules统一管理,避免用户间配置冲突,核心配置如下(以 7.05.p3 版本为例):
2.1.1 csh/tcsh 环境¶
# SOS安装根目录
setenv CLIOSOFT_DIR /fastone/software/others/sos/sos_7.05.p3_linux64
# 许可证环境变量(优先5281端口)
setenv CLIOLMD_LICENSE_FILE 5281@licserver01 # 替换为实际License服务器IP
# 添加可执行文件路径
prepend-path PATH $CLIOSOFT_DIR/bin
# 添加库文件路径
prepend-path LD_LIBRARY_PATH $CLIOSOFT_DIR/lib
prepend-path LD_LIBRARY_PATH $CLIOSOFT_DIR/lib/64bit
# 图形界面依赖配置
setenv GDM_USE_SHLIB_ENVVAR 1
2.1.2 bash/zsh 环境¶
export CLIOSOFT_DIR=/fastone/software/others/sos/sos_7.05.p3_linux64
export CLIOLMD_LICENSE_FILE=5281@licserver01
export PATH=$CLIOSOFT_DIR/bin:$PATH
export LD_LIBRARY_PATH=$CLIOSOFT_DIR/lib:$CLIOSOFT_DIR/lib/64bit:$LD_LIBRARY_PATH
export GDM_USE_SHLIB_ENVVAR=1
2.2 环境验证¶
配置完成后,执行以下命令验证环境是否生效:
# 查看SOS版本
sos -version
# 启动服务器端管理工具(管理员权限)
sosadmin &
# 启动客户端(普通用户权限)
sos &
无报错启动且能看到 GUI 界面,说明环境配置成功;
若提示许可证错误,需检查CLIOLMD_LICENSE_FILE配置及 License 服务器网络可达性。
2.3 服务器端特殊配置(管理员)¶
2.3.1 NFS 挂载参数¶
主服务器的存储目录需通过 NFS 挂载,推荐参数(保障稳定性与性能):
# 挂载命令示例
mount -t nfs -o rw,hard,nointr,sync,actimeo=0,tcp <NFS服务器IP>:/repo/sos_repo /fastone/projects/sos_repo
2.3.2 端口开放¶
需在防火墙开放以下端口,避免通信失败:
- Primary Server:6000 端口(主通信端口);
- Cache Server:6001 端口(缓存通信端口);
- License Server:5281 或 27009 端口;
- 其他端口:6002-6020(预留,多项目 / 多服务器部署时使用)。
2.3.3 用户权限配置¶
- 禁止使用
root用户启动 SOS 服务或客户端,需创建专用运维账号sosadmin(LDAP/NIS 域用户); sosadmin用户需拥有 NFS 存储目录的读写权限(chmod 755 /fastone/projects/sos_repo);- 普通用户需加入
schematic用户组(默认权限组),避免权限不足
3 服务器端部署与项目管理(管理员操作)¶
3.1 启动 SOS 服务器(单站点)¶
- 以
sosadmin身份登录主服务器节点; - 加载环境变量并启动
sosadmin:
source /fastone/software/cshinit
module load sos/7.05
sosadmin &
-
新建 SOS 服务器实例:
-
在
sosadmin主界面点击New,创建服务器实例; - 填写
Symbolic name for Server(如SOS_server_1); - 选择
Set up a new primary server和Set up a new cache server(单站点建议主服务器与缓存服务器同节点); Repository Path:指定项目存储路径(如/fastone/projects/sos_repo/SOS_server_1);Cache Path:指定缓存路径(如/fastone/projects/sos_cache);- 其他参数默认(端口自动分配:主服务器 6000,缓存服务器 6001);
-
点击
OK,完成服务器创建。 -
启动服务器:
- 在
sosadmin主界面选中新建的服务器实例; - 点击
Startup,启动主服务器与缓存服务器; - 启动成功后,
Status显示Running,可查看进程 ID(PID)与磁盘信息。
3.2 新建 SOS 项目
-
在
sosadmin主界面点击Projects,打开项目管理窗口; -
点击New,填写项目信息:
-
Project Name:项目名称(如TSMC_018PDK_CCDR); -
Project Administrator:项目管理员(需为 LDAP/NIS 用户,默认sosadmin); -
点击
Create,完成项目创建; -
权限配置(可选):
-
项目创建后,编辑项目目录下的
setup/sosd.cfg文件,配置用户角色
ADMIN sosadmin; # 管理员,拥有全部权限
MEMBER fuyunlong,admin; # 项目成员,可读写文件
GUEST fssupport; # 来宾用户,只读权限
ACL{
READ world; # 读权限:所有人
WRITE owner; # 写权限:所有者
MODIFY ACL yes; # 允许修改权限(Virtuoso集成时必须设为yes)
}
- 保存后,权限配置立即生效。
3.3 项目状态管理¶
3.3.1 项目启动 / 停止¶
- 启动:选中项目,点击
Startup,加载项目元数据与存储目录; - 停止:选中项目,点击
Shutdown,释放资源(不删除数据); - 锁定 / 解锁:选中项目,点击
Lock/Unlock,锁定后禁止用户操作,用于维护场景。
3.3.2 项目删除(谨慎操作)¶
- 在
sosadmin项目管理窗口选中项目,点击Delete; - 警告:删除操作会物理删除项目存储目录,不可恢复,建议先归档再删除。
4 客户端使用(普通用户操作)¶
4.1 启动 SOS 客户端¶
- 以普通用户身份登录 login 节点;
- 加载环境变量并启动 SOS:
module load sos/7.05
sos &
- 客户端启动成功后,显示服务器与项目列表(自动获取主服务器信息)
4.2 新建工作区(Workarea)¶
工作区是用户本地与服务器同步的桥梁,所有文件操作均在工作区内进行:
- 在 SOS 客户端点击
File→New Workarea; - 配置工作区信息:
Server Name:选择目标服务器(如SOS_server_1);Project Name:选择目标项目(如TSMC_018PDK_CCDR);Workarea Dir:指定本地工作区路径(如/home/fuyunlong/ccdr_work);Keep Files in Workarea as:选择文件存储方式(Local Copies本地副本,Links to Smart Cache缓存链接,推荐后者节省空间);Automatically update workarea:设置自动更新频率(如 60 分钟);- 点击
OK,完成工作区创建; - 同步项目文件:
- 选中工作区,点击
File→Populate,同步服务器项目文件到本地; - 同步完成后,本地工作区将显示服务器上的所有项目文件(原理图、版图、模型等)。
4.3 文件操作(Check-in/Check-out)¶
4.3.1 检出文件(Check-out)¶
- 在 SOS 客户端树形结构中,选中需要编辑的文件(如
cds.lib、schematic视图); - 点击
Chk Out,或右键选择Check Out; - 检出成功后,文件状态变为
Checked Out,用户可在本地工作区编辑。
4.3.2 检入文件(Check-in)¶
- 编辑完成后,在 SOS 客户端选中已检出的文件;
- 点击
Chk In,或右键选择Check In; - 可选:填写版本备注(如 “修改电源电压参数”),便于历史追溯;
- 点击
OK,文件同步至服务器,版本号自动递增。
4.3.3 放弃修改(Discard)¶
若无需保留编辑内容,可放弃修改并恢复至服务器最新版本:
- 选中已检出的文件;
- 点击
Discard,或右键选择Discard Checkout; - 确认后,本地文件恢复为服务器版本,检出状态解除。
4.4 Virtuoso 集成使用¶
SOS 与 Virtuoso Library Manager 深度集成,可直接在 Virtuoso 中管理设计库:
- 打开 Virtuoso Library Manager;
- 执行
File→SOS Design Manager,连接 SOS 服务器与项目; - 设计库操作:
- 检入:选中设计库(如
CCDR2_Sim),执行Check In,同步至 SOS 服务器; - 检出:选中服务器上的设计库,执行
Check Out,加载至本地 Virtuoso; - 版本查看:执行
Version Info,查看设计库的历史版本与修改记录。
5 数据迁移与备份¶
SOS 支持两种数据迁移场景:服务器内项目迁移(同一服务器下的项目归档恢复)和跨服务器迁移(GUI 故障时的文件级迁移),同时提供自动备份机制。
5.1 方案 1:服务器内项目迁移(Archive/Restore,推荐)¶
适用于同一 SOS 服务器下的项目备份、复制或重命名,通过sosadmin可视化操作:
-
归档旧项目:
-
以
sosadmin身份启动sosadmin; - 选中需要迁移的旧项目(如
TSMC_018PDK_CCDR2); -
点击
Archive,选择归档路径(推荐 NFS 存储目录),完成归档; -
恢复为新项目:
-
在
sosadmin中切换至目标服务器(或同一服务器); - 点击
Restore,选择归档文件路径; - 填写
New sos project name(如SMIC18_BCD_CCDR2)和Full directory path to restore project data; -
点击
OK,完成项目恢复(新项目与原项目数据完全一致); -
新建工作区:
-
客户端启动 SOS,创建新项目的工作区并
Populate,即可使用迁移后的数据。
5.2 方案 2:GUI 故障时的文件级迁移¶
适用于 SOS 客户端 GUI 损坏,无法通过可视化操作迁移的场景,通过命令行与文件操作实现:
- 归档旧项目目录:
- 登录旧项目工作区所在节点;
- 执行压缩命令(
-h参数跟随符号链接):
cd /home/fuyunlong
tar -h -zcvf old_sos_dir.tgz old_sos_dir/ # old_sos_dir为旧工作区目录
-
迁移归档文件:
-
创建新项目目录,将归档文件拷贝至该目录:
mkdir -p /home/fuyunlong/new_sos_project
mv old_sos_dir.tgz /home/fuyunlong/new_sos_project/
- 解压归档文件:
bash
cd /home/fuyunlong/new_sos_project
tar -zxvf old_sos_dir.tgz
-
重新链接 PDK 模型文件:
-
删除旧工作区的
models和stream目录(与 PDK 绑定,需重新链接): -
rm -rf old_sos_dir/models rm -rf old_sos_dir/stream链接至新 PDK 的对应目录:
ln -s /pdk/tsmc/018pdk/models old_sos_dir/models ln -s /pdk/tsmc/018pdk/stream old_sos_dir/stream注意:不同 PDK 的模型目录结构可能不同,需参考 PDK 用户手册
-
新建 SOS 项目与工作区:
- 按 3.2 节新建 SOS 项目;
- 客户端创建工作区,选择解压后的目录作为数据源,完成迁移
5.3 数据备份策略¶
- 自动备份:SOS 主服务器默认每 60 分钟自动备份项目元数据,可在
sosadmin中修改Update Mode调整频率; - 手动备份:定期执行
Archive操作,将项目归档至独立存储(如磁带库),避免存储故障导致数据丢失; - 跨站点备份:多站点部署时,启用 Cache Server 自动同步,实现数据异地备份。
6 跨站点部署与数据同步(进阶)¶
6.1 多站点部署流程¶
-
主站点部署:按 3.1-3.2 节完成 Primary Server、Cache Server 部署与项目创建;
-
从站点部署:
-
在从站点节点启动
sosadmin; - 点击
New,创建 Cache Server,选择Use an existing primary server; - 填写主站点 Primary Server 的 IP 与端口(如
10.30.1.23:6000); -
配置从站点 Cache Path(与主站点路径一致,如
/fastone/projects/sos_cache); -
数据同步:
-
从站点客户端创建工作区时,选择本地 Cache Server;
- 首次
Populate时,从主站点同步数据;后续操作优先从 Cache Server 读取,降低跨站点延迟。
6.2 同步优化¶
- 网络优化:确保主从站点间网络带宽≥1Gbps,减少同步延迟;
- 缓存策略:设置常用文件预加载至 Cache Server,提升访问速度;
- 冲突解决:多站点并发编辑同一文件时,以最后检入的版本为准,建议关键文件编辑前沟通确认。
7 常见问题与故障排查¶
7.1 环境类问题¶
(1)SOS 客户端启动失败,提示许可证错误
原因:License 服务器未连通,或CLIOLMD_LICENSE_FILE配置错误;
解决方法:
- 检查 License 服务器 IP 可达性(
ping licserver01); - 验证许可证端口是否开放(
telnet licserver01 5281); - 确认
CLIOLMD_LICENSE_FILE格式正确(端口@IP); - 执行
lmutil lmstat -a -c 5281@licserver01,查看许可证是否可用
(2)Virtuoso 中无 SOS 菜单
原因:SOS 与 Virtuoso 集成配置缺失;
解决方法:
-
编辑 Virtuoso 的
.cdsinit文件,添加集成脚本: -
lisp load(strcat(getShellEnvVar("CLIOSOFT_DIR") "/shared/pkgs/icv/tools/queryskl/calibre.skl")) hiMenuAdd("SOS Design Manager" "File" '("Check In..." "Check Out...") '("sosCheckIn" "sosCheckOut"))
7.2 服务器类问题¶
(1)SOS 服务器启动失败,提示目录权限错误
原因:sosadmin用户对 Repository Path 无读写权限;
解决方法:
- 检查存储目录权限:
ls -ld /fastone/projects/sos_repo; - 赋予
sosadmin用户权限:chown -R sosadmin:schematic /fastone/projects/sos_repo; - 重新启动服务器。
(2)Cache Server 同步失败
原因:主从站点网络不通,或 Cache Path 路径不一致;
解决方法:
- 验证主从站点网络连通性(
ping 主站点IP); - 确认从站点 Cache Path 与主站点一致(如
/fastone/projects/sos_cache); - 在
sosadmin中点击Ping,测试主从站点通信; - 重启 Cache Server,重新同步。
7.3 客户端操作类问题¶
(1)文件检入失败,提示 “文件被锁定”
原因:文件已被其他用户检出,或之前检出未正常释放;
解决方法:
- 在
sosadmin中查看文件锁定状态:Projects→View Status; - 若为其他用户锁定,沟通后让对方检入或放弃检出;
- 若为异常锁定,管理员执行
Cancel Checkout,释放锁定。
(2)工作区同步失败,提示 “文件缺失”
原因:服务器文件被删除,或本地工作区文件损坏;
解决方法:
- 检查服务器项目目录,确认文件是否存在;
- 若服务器文件存在,删除本地工作区对应文件,重新
Populate; - 若服务器文件缺失,从归档中恢复文件后再同步。
7.4 数据迁移类问题¶
(1)归档 / 恢复失败,提示 “路径不存在”
原因:归档路径或恢复路径无读写权限,或路径不存在;
解决方法:
- 确认路径存在:
mkdir -p /fastone/archive/sos; - 赋予权限:
chmod 775 /fastone/archive/sos; - 重新执行归档 / 恢复操作。
(2)迁移后模型文件无法使用
原因:模型文件为符号链接,迁移时未跟随链接(未加-h参数);
解决方法:
- 重新压缩旧工作区,添加
-h参数:tar -h -zcvf old_sos_dir.tgz old_sos_dir/; - 解压后重新链接 PDK 模型文件(参考 5.2 节步骤 4)。