hdlm 是 Hierarchical Data Language (HDL) 的管理工具命令行接口,主要用于与 IBM Spectrum Scale(原名 GPFS,通用并行文件系统)进行交互,它是管理员用来管理文件系统策略、规则和策略域的核心工具。

hdlm 命令让你能够以编程的方式或交互式地定义和管理文件系统中的数据,
- 根据文件名、路径、大小、所有者等规则,将文件自动存放到不同的存储池中。
- 定义数据保留和删除的策略。
- 监控策略的执行情况。
命令的基本语法
hdlm 命令的基本结构如下:
hdlm <command> [options] [operands]
hdlm: 命令本身。<command>: 具体的操作指令,show,create,delete,modify等。[options]: 可选的参数,通常以 开头,用于修改命令的行为。[operands]: 命令的操作对象,例如策略名称、文件系统名称等。
核心概念(理解命令前必须知道)
在使用 hdlm 之前,必须理解 Spectrum Scale 中与数据管理相关的几个核心概念:
- Fileset (文件集): 文件系统中的一个逻辑目录,是数据管理的基本单位,你可以把它想象成一个普通的文件夹,但它可以附加特殊的策略。
- Policy (策略): 一组规则的集合,用于定义如何管理 fileset 中的数据,一个策略可以包含一个或多个规则。
- Rule (规则): 策略中的具体逻辑,它定义了当文件满足某些条件时(文件名包含
.log),应该执行什么操作(移动到archive_pool存储池)。 - Storage Pool (存储池): 一组具有相同特性的物理磁盘或存储卷的集合,可以有高性能的
ssd_pool和大容量的hdd_pool,规则会将文件映射到特定的存储池。 - Management Class (管理类): 这是 Spectrum Scale HLM 的核心,它是一个逻辑实体,将一个或多个规则与一个 fileset 关联起来,当文件被写入一个关联了管理类的 fileset 时,系统会自动应用该管理类中的规则。
常用 hdlm 命令分类
以下是 hdlm 命令最常用的分类和示例:

显示和查询信息
这些命令用于查看当前的配置和状态。
| 命令 | 描述 | 示例 |
|---|---|---|
hdlm show fs |
显示所有文件系统的 HLM 状态。 | hdlm show fs |
hdlm show fileset <fs_name> <fileset_name> |
显示指定 fileset 的详细信息,包括关联的管理类。 | hdlm show fileset myfs data_logs |
hdlm show mc <mc_name> |
显示指定管理类的详细信息,包括其包含的所有规则。 | hdlm show mc archive_policy |
hdlm show rule <rule_name> |
显示指定规则的详细信息。 | hdlm show rule move_to_archive |
hdlm show storagepool <pool_name> |
显示指定存储池的详细信息。 | hdlm show storagepool archive_pool |
hdlm show events |
显示策略执行的事件和日志。 | hdlm show events -n 10 (显示最近10个事件) |
创建对象
这些命令用于创建新的策略、规则和管理类。
| 命令 | 描述 | 示例 |
|---|---|---|
hdlm create storagepool <pool_name> ... |
创建一个新的存储池。 | hdlm create storagepool archive_pool -disk /archive/disk1,/archive/disk2 |
hdlm create rule <rule_name> ... |
创建一个新的规则。 | hdlm create rule move_logs -class archive_pool -file "*.log" |
hdlm create mc <mc_name> ... |
创建一个新的管理类。 | hdlm create mc log_policy -rule move_logs -rule move_old_files |
hdlm create fileset <fs_name> <fileset_name> ... |
创建一个新的 fileset,并可选地关联一个管理类。 | hdlm create fileset myfs app_logs -mc log_policy |
修改对象
这些命令用于修改现有对象的属性。
| 命令 | 描述 | 示例 |
|---|---|---|
hdlm modify rule <rule_name> ... |
修改现有规则的属性,如条件或目标存储池。 | hdlm modify rule move_logs -file "*.log" -file "*.out" |
hdlm modify mc <mc_name> ... |
修改管理类,例如添加或移除规则。 | hdlm modify mc log_policy -add-rule new_rule |
hdlm modify fileset <fs_name> <fileset_name> ... |
修改 fileset 的属性,例如关联或取消关联管理类。 | hdlm modify fileset myfs app_logs -mc new_policy |
删除对象
这些命令用于删除不再需要的对象。

| 命令 | 描述 | 示例 |
|---|---|---|
hdlm delete rule <rule_name> |
删除一个规则。 | hdlm delete rule move_old_files |
hdlm delete mc <mc_name> |
删除一个管理类。 | hdlm delete mc log_policy |
hdlm delete fileset <fs_name> <fileset_name> |
删除一个 fileset(注意:这会删除 fileset 中的所有数据)。 | hdlm delete fileset myfs temp_data |
综合示例场景
假设我们想要实现以下自动化数据管理:
在文件系统
myfs中,有一个logs文件集,所有写入该文件集的.log文件,如果超过 7 天未被访问,就自动移动到一个名为cold_storage的存储池中。
步骤 1: 检查现有环境
# 查看文件系统状态 hdlm show fs # 假设我们已经有一个 myfs 文件系统和一个 logs fileset hdlm show fileset myfs logs
步骤 2: 创建存储池
# 假设我们有一些冷磁盘可用 hdlm create storagepool cold_storage -disk /data/cold_disk1,/data/cold_disk2
步骤 3: 创建规则 这个规则定义了“条件”和“动作”。
# 创建一个规则,将7天内未被访问的.log文件移动到cold_storage池 hdlm create rule move_stale_logs -file "*.log" -pool cold_storage -days 7 -action move
步骤 4: 创建管理类 将规则打包成一个管理类。
hdlm create mc log_retention_policy -rule move_stale_logs
步骤 5: 将管理类应用到 Fileset
hdlm modify fileset myfs logs -mc log_retention_policy
步骤 6: 验证配置
# 查看fileset是否已正确关联管理类 hdlm show fileset myfs logs # 查看管理类的详细规则 hdlm show mc log_retention_policy
完成以上步骤后,Spectrum Scale 后台进程会自动监控 myfs:logs 目录,并根据定义的策略执行数据迁移。
注意事项
- 权限: 执行
hdlm命令通常需要root用户或属于mmadm组的用户权限。 - 交互模式:
hdlm可以不带任何参数直接运行,进入交互式模式,你可以逐条输入命令,这对于复杂操作或脚本调试很有用。 - 帮助: 几乎所有
hdlm命令都内置了帮助信息,使用hdlm <command> --help或hdlm help <command>可以查看该命令的详细用法和选项。hdlm create rule --help
- 官方文档: 最权威的信息来源是 IBM 官方文档,请根据你使用的 Spectrum Scale 版本查阅相关的 "IBM Spectrum Scale: Managing Data with Policies" 或类似主题的文档。
希望这份详细的解释能帮助你理解和使用 hdlm 命令!
