d_little.ansible_role_aix_lvm
ansible-role-aix-lvm
注意:此角色正在重构中。目前不建议用于生产环境。
这是一个用于管理 AIX 服务器上卷组(VG)、逻辑卷(LV)和文件系统(FS)的 Ansible 角色。它目前主要用于构建和创建新环境,虽然可以扩展单个文件系统,但不是最适合这个工作的。它在将多个物理卷(PV)定义为目标主机上的所有卷组(VG)、逻辑卷(LV)和文件系统(FS)方面表现优异。此角色基于 @mrlesmithjr 的优秀 ansible-manage-lvm 角色。
注意:
- 可以用于创建和销毁 LVM 组和卷。
- 我目前不建议使用它来处理调整大小或修改,尚未完全测试。
- 旨在定义一个“整体”环境;它并不适合创建临时的 LV/FS 等。
- 主要用例是定义初始构建时的整个 AIX 服务器存储。
- 暂不支持处理远程/NFS 挂载点。
- 如果您有一个“过挂”的文件系统,它将失败,因为 aix_filesystem 模块在挂载时不会创建目录。
- 例如:/foo/ 和 /foo/bar/ 都是文件系统,并且在挂载之前已创建。
- /foo/ 已挂载,而 /foo/bar/ 目录“消失”。
- 尝试挂载 /foo/bar/ 时会失败,因为该目录不存在。
要求
在使用此角色之前,必须确定 LVM 设置的设备/磁盘。
注意:
- 确保选择正确的设备/磁盘。
- 若要创建 VG 而不创建 LV,请将 lvname 的值定义为
None
,如下例所示。
角色变量结构
我们定义了一个描述所需 VG 的字典列表。
变量 | 默认值 | 说明 |
---|---|---|
manage_lvm |
false |
仅为“安全”标记,确保应该运行此角色。如果为 false ,则此角色不会管理 LVM |
vglist (必需) |
- | 一个 vglist 对象的列表,定义如下 |
vglist
以下是 vglist
选项的完整概述。默认值来自 aix_lvg 模块文档。注意:此角色中的默认值将 始终 使用模块默认值;如果 aix_lvg
模块更改了默认值,此文档 可能未能及时更新。请在默认值更改且此文档未更新时记录一个问题或 PR。
变量 | 默认值 | 说明 |
---|---|---|
vgname (必需) |
- | VG 的名称 |
disks (必需) |
- | PV 设备名称列表 |
force |
false |
强制创建 VG |
ppsize |
- | VG 物理分区的大小 |
state |
present |
absent 或 present 。如果为 absent ,则所有底层 FS 和 LV 必须首先从系统中删除。 |
vg_type |
normal |
VG 类型;可为 big 、normal 、scalable 之一 |
lvlist |
- | lvlist 对象,定义如下。可以设置任意数量。 |
lvlist
以下是 lvlist
选项的完整概述。可以在上面的 vglist
对象中定义任意数量的这些。默认值来自 aix_lvol 模块文档 和 aix_filesystem。虽然可以在没有现有 LV 的情况下创建 FS,但此角色采用最佳实践方法,要求每个 FS 在创建之前都要有父 LV。 注意:此角色中的默认值将 始终 使用模块默认值;如果 aix_lvol
或 aix_filesystem
模块更改了默认值,此文档 可能未能及时更新。请在默认值更改且此文档未更新时记录一个问题或 PR。
变量 | 默认值 | 说明 |
---|---|---|
lvname (必需) |
- | LV 的名称 |
lvstate |
present |
present 或 absent 之一。如果为 absent ,LV 和任何关联的 FS 将被移除。 |
lvcopies |
1 |
LV 的副本数量。最大为 3 |
lvtype |
jfs2 |
创建的 LV 类型:[jfs2 、jfs 、paging 等] |
lvopts |
- | 传递给 mklv 的自由格式选项 了解更多 |
lvpolicy |
maximum |
设置物理卷的分配策略,选择 [maximum 、minimum ] 之一。 |
lvpvs |
- | 要在主机 VG 中使用的 PV 列表。 |
lvsize |
- | 逻辑卷的大小,使用 [MGT] 单位。 |
fsaccount_subsystem |
false |
FS 是否由会计子系统处理。布尔值。 |
fsattributes |
"agblksize='4096',isnapshot='no'" |
使用逗号分隔的文件系统属性 |
fsauto_mount |
false |
文件系统在系统重启时自动挂载。 |
fsfilesystem |
- | 挂载点,即文件系统将被挂载的目录。如果 fsstate 不为 absent ,则该项为必填。 |
fsstate |
present |
取值为 [present 、absent 、mounted 、unmounted ] 之一。如果想要创建一个没有挂载 FS 的 LV,则将 fsstate 设置为 absent 。 |
fsmount_group |
- | FS 挂载组 |
fspermissions |
rw |
FS 权限;取值为 [rw 、ro ] 之一。 |
依赖
无
示例剧本
小型、简单的实验 VG
---
- hosts: test-nodes
vars:
manage_lvm: true
vglist:
- vgname: vg_exp1
disks:
- hdisk4
force: true
lvlist:
- lvname: lv_exp1
lvcopies: 1
lvsize: 5G
fsauto_mount: true
fsstate: mounted
fsfilesystem: /mnt/exp1
- lvname: lv_exp2
lvcopies: 1
lvsize: 10G
fsauto_mount: true
fsstate: mounted
fsfilesystem: /mnt/exp2
roles:
- role: d-little.aixlvm
tasks:
一个 VG,多条 LV
注意:这是此角色的正常用例
---
- hosts: test-nodes
vars:
manage_lvm: true
vglist:
- vgname: vg_test1
disks:
- hdisk10
- hdisk11
lvlist:
- lvname: lv_test1_1
lvcopies: 2
lvsize: 5G
fsauto_mount: true
fsstate: mounted
fsfilesystem: /mnt/test1_1
- lvname: lv_test1_2
lvcopies: 2
lvsize: 10G
fsauto_mount: true
fsstate: mounted
fsfilesystem: /mnt/test1_2
roles:
- role: d-little.aixlvm
tasks:
为空的 VG 没有 LV
---
- hosts: test-nodes
vars:
manage_lvm: true
vglist:
- vgname: vg_test2_1
disks:
- hdisk20
- hdisk21
lvlist:
None
- vgname: vg_test2_2
disks:
- hdisk22
- hdisk23
lvlist:
None
roles:
- role: d-little.aixlvm
tasks:
一个 VG,一个 LV,所有变量已定义
这不是正常用例,但以防您想要更改所有内容
---
- hosts: test-nodes
vars:
manage_lvm: true
vglist:
- vgname: vg_test3
force: true
disks:
- hdisk30
- hdisk31
ppsize: 128
state: present
vg_type: big
lvlist:
- lvname: lv_test3
lvstate: present
lvcopies: 2
lvopts: aaaa
lvpolicy: maximum
lvpvs: hdisk30, hdisk31
lvsize: 50G
lvstate: present
fsaccount_subsystem: false
fsattributes: aaaaa
fsauto_mount: true
fsfilesystem: /mnt/test3_1
fsstate: mounted
fsmount_group: aaaa
fspermissions: rw
roles:
- role: ansible-manage-lvm
tasks:
作者
- David Little - 初始工作 - d-little
许可
MIT
致谢
- Larry Smith Jr. - mrlesmithjr
- Ansible