LVM - lvg and lvol
最近幫同事看 DRBD 還有準備考 RHCSA/RHCE,就想說可以趁這機會來練習如何用 Ansible 來操作磁碟分割區與 LVM。
這邊有個誤會,我一直以來都以為 pvcreate / vgcreate / lvcreate 都有對應的模組可以使用,經過這次研讀後,發現只要用到 lvg 跟 lvol 這兩個模組就可以來建立。
community.general.lvg 是 LVM volume groups 的縮寫, 主要是用來設置 LVM volume groups 的模組。 這個模組包辦了 pvcreate / vgcreate 這兩個指令。
例如要建立 volume group,就用
- name: 在 /dev/sda1 跟 /dev/sdb1 之上建立 volume group,其 extend size 設置為 32MB
community.general.lvg:
vg: vg.services
pvs: /dev/sda1,/dev/sdb1
pesize: 32
要移除,就加上 state: absent
- name: 移除名稱是 vg.services 的 volume group
community.general.lvg:
vg: vg.services
state: absent
若是要建立 local volume,則是用 community.general.lvol。
- name: 建立一個大小為 512m 的 local volume
community.general.lvol:
vg: firefly
lv: test
size: 512
要刪掉,就加上 state: absent
- name: 移除 local volume
community.general.lvol:
vg: firefly
lv: test
state: absent
force: yes
這個模組也可以建立 thinpool、cache pool 這些。 這邊可以參照 community.general.lvol下面的範例來複製使用,會比較快。
最後附上我去初始化 DRBD 所需要的 local volume 的 playbook,這個 playbook 首先使用 parted 去做出磁碟分割區,然後標注給 LVM 使用。 接著再使用 lvg 跟 lvol 來建立所需要的 Local volume。
---
- name: Create LVM for DRBD
hosts: all
become: yes
vars:
vg_name: drbdpool
tasks:
- name: Create a new primary partition for LVM
community.general.parted:
device: /dev/sdb
number: 1
align: optimal
flags: [ lvm ]
state: present
- name: Create a volume group on top of /dev/sda1 with physical extent size = 32MB
community.general.lvg:
vg: "{{ vg_name }}"
pvs: /dev/sdb1
state: present
- name: Create a logical volume
community.general.lvol:
vg: "{{ vg_name }}"
lv: drbddata
size: 100%FREE
參考資料