Ansible es una herramienta de automatización, configuración y administración de infraestructura. Mis artículos anteriores presentan Ansible y explican las funciones del sistema. En este artículo, demuestro cómo configurar Logical Volume Manager (LVM) usando Ansible. La configuración de LVM con Ansible ayuda a los administradores de sistemas a realizar sus tareas de manera más eficiente y a dedicar menos tiempo al trabajo manual. Puede crear un libro de jugadas de Ansible que cree una partición e inicialice LVM.
[ También te puede interesar: Introducción a Logical Volume Manager ]
Descripción general de LVM
Como sabe, la partición primaria no se puede extender ni reducir. Tal escenario puede crear problemas cuando necesita espacio adicional en un disco. Con LVM, puede superar este problema porque LVM le permite agregar y eliminar un disco nuevo en un volumen lógico. LVM es parte de la instalación predeterminada de Red Hat Enterprise Linux (RHEL) desde RHEL 7.
Aquí hay algunos elementos esenciales que debe comprender antes de usar LVM:
- VP :volumen físico inicializado en disco, partición o archivo de bucle invertido. Cuando inicializa un PV, crea una etiqueta al inicio del dispositivo.
- VG —Volume Group es una colección de volúmenes lógicos (LV). Creas un VG dentro de un PV.
- LV —El volumen lógico es como una partición estándar en un disco. Puede crear múltiples LV dentro de un solo VG. Puede cambiar el tamaño de un LV según el espacio requerido.
Creación de una partición
En RHEL 8, crea una partición usando el Parted utilidad. Separados le brinda la flexibilidad de crear una partición utilizando MS-DOS o una partición de tabla de particiones GUID (GPT). En Ansible, puede usar el Parted módulo para particionar.
En este ejemplo, considere /dev/vdb
como el nombre del disco. Cree dos particiones de 1 GB. Simplemente usando el módulo Parted, puede crear particiones de cualquier tamaño.
Ejemplo:
---
- name: playbook for simple 1 GB partition
hosts: vm1.example.com
become: true
tasks:
- name: create partition
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
Ejecute este libro de jugadas usando:
$ ansible-playbook partition.yml
Puedes usar el lsblk
Comando para verificar que la partición ahora existe.
Inicializando LVM y creando LVs
Después de crear la partición, inicialice el LV. Para inicializar, primero debe crear un PV y un VG. Use Ansible lvg módulo para crear un PV y un VG con un tamaño de extensiones físicas (PE). El PE divide el VG en un tamaño fijo. De forma predeterminada, el tamaño del PE es de 4 MB. Puede cambiar el tamaño predeterminado mientras crea el VG. Por lo general, un tamaño de PE más grande proporciona un mejor rendimiento.
Ejemplo:
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/vdb1
pesize: 16
- name: Install lvm2 dependency
package:
name: lvm2
state: present
La siguiente tarea crea el LV. El vol módulo crea LV. Al crear un LV, ofrece opciones como el nombre de VG, el tamaño y un nombre de LV.
En este ejemplo, un VG de 2 GB crea el primer LV con un tamaño de 1 GB.
Ejemplo:
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
Para usar este LV creado, debe montar esa partición dentro del sistema de archivos. Solo usted puede acceder a este LV para almacenar datos. En Ansible, use el sistema de archivos módulos para formatear cualquier dispositivo de bloque con filesystem
. Después de formatear, monta la partición en cualquier directorio. Puedes usar el montaje módulo en Ansible. Asegúrate de que el directorio (/data1
en este ejemplo) existe antes de ejecutar el libro de jugadas.
Ejemplo:
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Ejemplo: Guía completa:
---
- name: playbook for simple 1 GB partition
hosts: localhost
become: true
tasks:
- name: create partition
parted:
device: /dev/nvme1n1
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
- name: Install lvm2 dependency
package:
name: lvm2
state: present
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/nvme1n1p1
pesize: 16
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Ejecute este libro de jugadas y verifique si se crea su LV o use el lvs
comando.
Recuerda que una de las características de LVM es que puedes ampliar el tamaño del LV. Manualmente, puede usar el lvextend
dominio. En Ansible, puede usar el lvol módulo para ampliar el tamaño de sample-lv .
Ejemplo:
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 2g
resizefs: true
force: yes
Usando el lvextend
comando o lvol El módulo te ayuda a ampliar tu LV. En este lvol volumen, utilice resizefs
parámetro para ampliar un sistema de archivos desmontado ubicado en el dispositivo.
Para reducir el tamaño de un LV, la sintaxis es la siguiente:
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 700m
shrink: yes
force: yes
[ ¿Necesita más información sobre Ansible? Realice un curso gratuito de descripción técnica de Red Hat. Ansible Essentials:descripción técnica de la simplicidad en la automatización. ]
Terminar
Este artículo le mostró cómo configurar LVM usando un libro de jugadas simple de Ansible. En lugar de usar un libro de jugadas simple, podría crear un rol , usando el mismo proceso y módulos que el anterior. Ansible lo ayuda a reducir las tareas manuales y a aumentar la eficiencia de la configuración de LVM. El uso de los métodos descritos en este artículo simplifica las operaciones en varios nodos administrados.