扩容lvm
约 225 字小于 1 分钟
2025-11-16
---
- name: Extend LVM and filesystem
hosts: all
become: yes
vars:
pv_device: "/dev/vdb" # 需要扩容的物理设备
vg_name: "rhel_cnv-spvdb03-t" # 目标卷组
lv_name: "root" # 目标逻辑卷
fa_type: "xfs" #文件系统类型
tasks:
- name: Check if /dev/vdb exists
command: lsblk -no NAME {{ pv_device }}
register: lsblk_result
failed_when: false
changed_when: false
- name: Ensure /dev/vdb is not partitioned
command: lsblk -no TYPE {{ pv_device }}
register: device_type
failed_when: false
changed_when: false
- name: Fail if /dev/vdb is already partitioned
fail:
msg: "/dev/vdb is already partitioned. Please provide a raw disk."
when: "'part' in device_type.stdout"
- name: Check if /dev/vdb is already a PV
command: pvs --noheadings -o pv_name
register: existing_pvs
changed_when: false
- name: Create physical volume if not exists
command: pvcreate {{ pv_device }}
when: pv_device not in existing_pvs.stdout
register: pv_create_result
- name: Extend volume group
command: vgextend {{ vg_name }} {{ pv_device }}
when: pv_create_result.changed
register: vg_extend_result
- name: Check available space in VG
command: vgs --noheadings -o vg_free --units m --nosuffix {{ vg_name }}
register: vg_free_space
changed_when: false
- name: Extend logical volume
command: lvextend -l +100%FREE /dev/{{ vg_name }}/{{ lv_name }}
when: vg_free_space.stdout | float > 0
register: lv_extend_result
- name: Resize filesystem
command: >
{% if fs_type == 'xfs' %}
xfs_growfs /dev/{{ vg_name }}/{{ lv_name }}
{% elif fs_type == 'ext4' %}
resize2fs /dev/{{ vg_name }}/{{ lv_name }}
{% else %}
echo "Unsupported filesystem type: {{ fs_type }}"
{% endif %}
when: lv_extend_result.changed