AIX操作系统的逻辑卷管理功能的操作示例中VG管理的操作示例

卷组(VG, Volume Group)是 AIX LVM 的 “存储资源池”,所有逻辑卷(LV)的资源均从 VG 中分配,其管理操作是 LVM 的核心基础。以下围绕VG 全生命周期高频场景(创建、扩容、缩容、激活 / 关闭、导出 / 导入、备份 / 恢复、故障处理),提供完整可落地的操作示例,包含命令详解、输出解读和生产环境注意事项。
所有操作基于 AIX 7.1/7.2,建议先在测试环境验证,生产环境操作前务必备份 VG 配置(vgcfgbackup)和关键数据。

一、VG 核心概念回顾(操作前必备)

  • VG 分类:AIX VG 分为两种类型(默认创建为普通 VG):
    • 普通 VG:最大支持 256 个物理卷(PV),每个 PV 最大 1PB,适合绝大多数场景;
    • 大 VG(Big VG):支持更多逻辑卷(LV)和物理分区(PP),需创建时指定-B参数;
  • 关键属性
    • PP 大小(PP SIZE):VG 中物理分区的最小单位(创建后不可修改),默认 4MB,可选 1/2/4/8/16/32/64MB;
    • PV 数量(PV COUNT):组成 VG 的物理卷个数;
    • 剩余空间(FREE PPs):VG 中未分配给 LV 的物理分区数(决定 LV 扩容上限);
    • 激活状态(Active/Inactive):VG 需激活(varyon)后才能访问其中的 LV / 文件系统。

二、场景 1:创建 VG(从 0 搭建存储池)

需求:将 2 块新硬盘(hdisk1、hdisk2,每块 10GB)初始化为 PV,创建名为appvg的普通 VG,PP 大小设为 8MB(适合中等文件存储)。

步骤 1:初始化 PV(新硬盘必须先激活 PV 属性)
bash
运行
# 1. 查看新硬盘状态(确认未被使用)
lspv hdisk1 hdisk2  # 输出示例:hdisk1: none; hdisk2: none(未加入任何VG)
# 2. 激活PV属性(将硬盘标记为LVM兼容)
chdev -l hdisk1 -a pv=yes  # -l:设备名;-a pv=yes:启用PV属性
chdev -l hdisk2 -a pv=yes
# 3. 验证PV初始化结果(状态变为available)
lspv hdisk1  # 输出:hdisk1: 00f72d5634123456  none  available
步骤 2:创建 VG(整合 PV 为存储池)
bash
运行
# 创建普通VG:名称appvg,包含hdisk1/hdisk2,PP大小8MB
mkvg -y appvg -s 8 hdisk1 hdisk2
# 参数详解:
# -y appvg:指定VG名称(自定义,避免与现有VG冲突);
# -s 8:PP大小为8MB(创建后不可修改,需根据业务场景选择);
# hdisk1 hdisk2:加入VG的PV列表(至少1块PV)。

# 可选:创建大VG(Big VG,支持更多LV/PP)
mkvg -y bigappvg -s 16 -B hdisk3 hdisk4  # -B:指定为大VG

# 验证VG创建结果
lsvg appvg  # 输出示例(关键信息解读):
# VG NAME:     appvg                # VG名称
# VG IDENTIFIER: 00f72d5600004c000000018a7e654321  # 唯一标识(导入/恢复用)
# PV COUNT:     2                    # 包含2块PV
# TOTAL PPs:    2496 (19968 MB)      # 总容量(2496×8MB≈20GB,扣除少量元数据空间)
# FREE PPs:     2488 (19896 MB)      # 剩余空间(可分配给LV)
# PP SIZE:      8 megabytes          # PP大小
# VG STATE:     active/complete      # 状态:激活/完整(可正常使用)

三、场景 2:VG 扩容(添加新 PV,增加存储池容量)

需求:appvg剩余空间不足,新增 1 块 20GB 硬盘(hdisk3),加入appvg以扩容存储池。

步骤 1:检查现有 VG 状态(确认剩余空间和 PV 信息)
bash
运行
lsvg appvg  # 查看当前FREE PPs(如:FREE PPs: 100 (800 MB),空间不足)
步骤 2:初始化新 PV 并加入 VG
bash
运行
# 1. 初始化新硬盘hdisk3为PV
chdev -l hdisk3 -a pv=yes
# 2. 将hdisk3加入appvg(扩容VG)
extendvg appvg hdisk3
# 验证扩容结果
lsvg appvg  # 输出:PV COUNT: 3;FREE PPs: 2600 (20800 MB)(新增20GB空间)
lsvg -p appvg  # 查看VG包含的所有PV:hdisk1、hdisk2、hdisk3

四、场景 3:VG 缩容(移除空闲 PV,释放硬件资源)

需求:appvg中的 hdisk2 已闲置(无 LV 数据),需将其从appvg中移除,用于其他 VG。

步骤 1:检查 PV 是否空闲(关键前提:PV 上无分配的 PP)
bash
运行
# 方式1:查看PV在VG中的使用情况
lsvg -p appvg hdisk2  # 输出示例:
# PV NAME:     hdisk2
# PV IDENTIFIER: 00f72d567890abcd
# PV STATE:     active
# TOTAL PPs:    1248 (9984 MB)
# FREE PPs:     1248 (9984 MB)  # 所有PP均为空闲(无LV数据)
# USED PPs:     0 (0 MB)

# 若PV非空闲(USED PPs>0):先迁移数据到其他PV
pvmove hdisk2  # 自动将hdisk2的所有数据迁移到VG内其他PV
步骤 2:从 VG 中移除 PV(缩容)
bash
运行
# 移除空闲PV hdisk2 from appvg
reducevg appvg hdisk2
# 验证缩容结果
lsvg appvg  # 输出:PV COUNT: 2(hdisk1、hdisk3,hdisk2已移除)
lspv hdisk2  # 输出:hdisk2: none(回到未加入任何VG的状态)
注意事项:
  • 只能移除完全空闲的 PV(USED PPs=0),否则会报错 “0516-792 reducevg: Physical volume hdisk2 is still allocated to logical volumes.”;
  • 若需移除非空闲 PV,必须先通过pvmove迁移数据(在线迁移,不影响业务)。

四、场景 4:VG 激活 / 关闭(varyonvg/varyoffvg)

核心作用:

  • 激活(varyonvg):VG 创建后默认激活,重启服务器后需重新激活(可配置开机自动激活);
  • 关闭(varyoffvg):临时断开 VG 的访问(如维护、导出 VG 前),关闭后无法访问其中的 LV / 文件系统。
操作示例:
bash
运行
# 1. 关闭VG(需先卸载所有文件系统)
umount /appdata  # 卸载VG下的所有挂载点(可通过lsvgfs appvg查看)
varyoffvg appvg  # 关闭appvg
lsvg appvg  # 验证:VG STATE: inactive(未激活)

# 2. 激活VG(恢复访问)
varyonvg appvg  # 激活appvg
lsvg appvg  # 验证:VG STATE: active/complete(已激活)
mount /appdata  # 重新挂载文件系统

# 3. 配置VG开机自动激活(生产环境推荐)
chvg -a y appvg  # -a y:enable auto-varyon on system boot
lsvg appvg  # 输出:AUTO ON: yes(已启用自动激活)

五、场景 5:VG 导出 / 导入(服务器间迁移存储资源)

需求:服务器 A 的appvg需迁移到服务器 B(如服务器 A 下线,保留应用数据),迁移通过 “导出 VG→迁移 PV→导入 VG” 实现。

步骤 1:服务器 A(源服务器)导出 VG
bash
运行
# 1. 卸载VG下所有文件系统
umount /appdata  # 若有多个挂载点,需全部卸载
# 2. 关闭VG(断开与源服务器的关联)
varyoffvg appvg
# 3. 导出VG(生成VG元数据,便于目标服务器识别)
exportvg appvg
# 验证导出结果:lsvg → 无appvg(已从源服务器移除)
lspv hdisk1 hdisk2  # 输出:VG NAME: none(PV仍存在,但与VG解除关联)
步骤 2:迁移 PV(硬件层面操作)
  • 若 PV 是本地硬盘:需物理拆卸硬盘,安装到服务器 B;
  • 若 PV 是存储阵列(如 IBM DS8000):通过存储管理工具(如 SDDPCM)将 PV 映射到服务器 B,确保服务器 B 能识别到 hdisk1、hdisk2。
步骤 3:服务器 B(目标服务器)导入 VG
bash
运行
# 1. 确认服务器B识别到迁移的PV
lspv  # 输出:hdisk1、hdisk2的VG NAME为"none"(未关联任何VG)
# 2. 导入VG(通过任意一块PV即可识别整个VG)
importvg -y appvg hdisk1  # -y appvg:指定导入后的VG名称(与原名称一致)
# 3. 激活VG
varyonvg appvg
# 4. 挂载文件系统(恢复业务)
mount /appdata
# 验证:df -g /appdata → 可见文件系统正常挂载,数据完整
关键说明:
  • 导出 VG 后,源服务器不再识别该 VG,但 PV 上的数据不会删除;
  • 导入 VG 时,目标服务器需识别到 VG 的所有 PV(否则会提示 “VG incomplete”);
  • 若 VG 名称冲突,可通过importvg -y newvgname hdiskx修改 VG 名称。

六、场景 6:VG 配置备份与恢复(防止 VG 元数据丢失)

核心价值:VG 的元数据(PV/LV 映射关系、配置信息)存储在 PV 的 “保留区”,若元数据损坏(如硬盘故障、误操作),会导致 VG 无法使用。通过vgcfgbackup备份元数据,可快速恢复。

操作示例 1:备份 VG 配置
bash
运行
# 方式1:备份单个VG(推荐,生产环境定期执行)
vgcfgbackup -f /backup/appvg_cfg_$(date +%Y%m%d).bak appvg
# 参数:-f:指定备份文件路径;appvg:目标VG名称

# 方式2:备份系统中所有VG
vgcfgbackup -f /backup/all_vg_cfg.bak  # 不指定VG名,默认备份所有激活的VG

# 验证备份文件:备份文件为二进制格式,可通过vgcfgrestore -l查看内容
vgcfgrestore -l /backup/appvg_cfg_20250101.bak  # 列出备份的VG信息
操作示例 2:恢复 VG 配置(元数据损坏时)
bash
运行
# 场景:appvg元数据损坏,无法激活(varyonvg appvg报错)
# 步骤1:关闭VG(若已激活)
varyoffvg appvg
# 步骤2:恢复VG配置(从备份文件)
vgcfgrestore -f /backup/appvg_cfg_20250101.bak appvg
# 步骤3:激活VG,验证恢复结果
varyonvg appvg
lsvg appvg  # 输出:VG STATE: active/complete(恢复正常)

七、场景 7:VG 拆分(splitvg,分离部分 PV 为新 VG)

需求:appvg包含 hdisk1、hdisk2、hdisk3,需将 hdisk2、hdisk3 分离出去,创建新 VGdbvg(用于数据库存储),实现存储资源隔离。

步骤 1:检查待拆分 PV 的状态(确保无跨 PV 的 LV)
bash
运行
# 查看VG中LV的PV分布(避免LV跨原VG和新VG)
lslv -m applv  # 若applv的数据分布在hdisk1和hdisk2,需先迁移数据到hdisk1
pvmove hdisk2 hdisk1  # 将hdisk2的数据迁移到hdisk1
pvmove hdisk3 hdisk1  # 将hdisk3的数据迁移到hdisk1
步骤 2:拆分 VG(创建新 VGdbvg
bash
运行
# 将appvg中的hdisk2、hdisk3拆分,创建新VG dbvg
splitvg -y dbvg appvg hdisk2 hdisk3
# 参数:-y dbvg:新VG名称;appvg:源VG;hdisk2 hdisk3:拆分到新VG的PV

# 验证拆分结果
lsvg  # 输出:appvg、dbvg(两个独立VG)
lsvg appvg  # PV COUNT: 1(仅hdisk1)
lsvg dbvg   # PV COUNT: 2(hdisk2、hdisk3)
注意事项:
  • 拆分前需确保待拆分的 PV 上无 “跨 PV 的 LV”(否则会导致 LV 损坏);
  • 拆分后,新 VG 默认处于未激活状态,需通过varyonvg dbvg激活。

八、场景 8:VG 故障排查(常见问题解决)

问题 1:VG 激活失败(提示 “VG incomplete”)

bash
运行
# 报错示例:0516-1254 varyonvg: Volume group appvg is incomplete.
# 原因:VG的部分PV未被服务器识别(如存储映射丢失、硬盘故障)
# 解决步骤:
1. 查看VG的PV状态:lsvg -p appvg  # 确认缺失的PV(如hdisk2状态为missing)
2. 检查缺失PV的硬件状态:lspv hdisk2  # 若显示"not available",排查硬件/存储连接
3. 若PV已损坏(无法恢复):移除缺失的PV(需确认该PV无关键数据)
   reducevg -f appvg hdisk2  # -f:强制移除缺失的PV
4. 重新激活VG:varyonvg appvg

问题 2:误删 VG(通过备份恢复)

bash
运行
# 场景:误执行exportvg appvg后,需恢复
# 解决步骤:
1. 确认PV状态:lspv hdisk1 hdisk2  # VG NAME: none
2. 导入VG(无需备份,PV保留元数据):importvg -y appvg hdisk1
3. 激活VG:varyonvg appvg

问题 3:VG 空间显示异常(FREE PPs 与实际不符)

bash
运行
# 原因:LV删除后,空间未及时释放,或元数据缓存不一致
# 解决:同步VG元数据
syncvg -v appvg  # 同步appvg的元数据
lsvg appvg  # 重新查看FREE PPs(恢复正常)

九、VG 管理常用辅助命令(速查)

操作需求 命令 说明
查看所有 VG lsvg 列出系统中所有 VG 名称
查看 VG 详细信息 lsvg <vgname> lsvg appvg,含容量、PV、状态等
查看 VG 包含的 PV lsvg -p <vgname> lsvg -p appvg,列出所有 PV 及使用情况
查看 VG 包含的 LV lsvg -l <vgname> lsvg -l appvg,列出所有 LV 及大小
查看 VG 包含的文件系统 lsvgfs <vgname> lsvgfs appvg,列出所有挂载点
强制激活 VG(忽略错误) varyonvg -f <vgname> 仅用于故障排查,生产环境慎用
修改 VG 名称 chvg -n <newvgname> <oldvgname> chvg -n newappvg appvg

总结

VG 管理是 AIX LVM 的基础,核心围绕 “存储池的创建、扩容 / 缩容、迁移、备份恢复” 展开,关键原则:
  1. PV 初始化是前提:新硬盘必须通过chdev -a pv=yes激活 PV 属性,才能加入 VG;
  2. 操作前先备份:生产环境修改 VG(如缩容、拆分、导出)前,务必备份 VG 配置和数据;
  3. 在线操作优先:扩容、PV 迁移、同步元数据等操作支持在线执行,不影响业务;
  4. 状态检查是关键:操作前后通过lsvg/lsvg -p验证状态,避免误操作。
掌握以上 VG 管理操作,可灵活应对企业级存储池的日常运维、资源调整和故障处理,为 LV 和文件系统的管理打下坚实基础。
阅读剩余
THE END