Ansible è uno strumento di automazione, configurazione e gestione dell'infrastruttura. I miei articoli precedenti introducono Ansible e spiegano i ruoli di sistema. In questo articolo, mostro la configurazione di Logical Volume Manager (LVM) utilizzando Ansible. La configurazione di LVM con Ansible aiuta gli amministratori di sistema a svolgere le proprie attività in modo più efficiente ea dedicare meno tempo al lavoro manuale. Puoi creare un playbook Ansible che crea una partizione e inizializza LVM.
[ Potrebbe interessarti anche: Introduzione a Logical Volume Manager ]
Panoramica LVM
Come sapete, la partizione primaria non può essere estesa e ridotta. Tale scenario può creare problemi quando è necessario spazio aggiuntivo su un disco. Usando LVM, puoi superare questo problema perché LVM ti consente di aggiungere e rimuovere un nuovo disco su un volume logico. LVM fa parte dell'installazione predefinita di Red Hat Enterprise Linux (RHEL) a partire da RHEL 7.
Ecco alcuni elementi essenziali che devi comprendere prima di utilizzare LVM:
- PV —Volume fisico inizializzato su disco, partizione o file di loopback. Quando si inizializza un PV, viene creata un'etichetta all'inizio del dispositivo.
- VG —Volume Group è una raccolta di volumi logici (LV). Crei un VG all'interno di un PV.
- LV —Il volume logico è proprio come una partizione standard su un disco. Puoi creare più LV all'interno di un singolo VG. Puoi ridimensionare un LV in base allo spazio richiesto.
Creazione di una partizione
In RHEL 8, crei una partizione usando Parted utilità. Separato ti dà la flessibilità di creare una partizione usando MS-DOS o una partizione GUID Partition Table (GPT). In Ansible, puoi utilizzare il Parted modulo per il partizionamento.
In questo esempio, considera /dev/vdb
come nome del disco. Crea due partizioni da 1 GB. Utilizzando semplicemente il modulo Parted, puoi creare partizioni di qualsiasi dimensione.
Esempio:
---
- 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
Esegui questo playbook utilizzando:
$ ansible-playbook partition.yml
Puoi utilizzare il lsblk
comando per verificare che la partizione ora esista.
Inizializzazione di LVM e creazione di LV
Dopo aver creato la partizione, inizializza il LV. Per l'inizializzazione devi prima creare sia un PV che un VG. Usa Ansible lvg modulo per creare un PV e un VG con una dimensione Physical Extents (PE). Il PE divide il VG in una dimensione fissa. Per impostazione predefinita, la dimensione del PE è 4 MB. È possibile modificare la dimensione predefinita durante la creazione del VG. In genere, una dimensione PE più grande offre prestazioni migliori.
Esempio:
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/vdb1
pesize: 16
- name: Install lvm2 dependency
package:
name: lvm2
state: present
L'attività successiva crea il LV. Il lvol modulo crea LV. Quando crei un LV, fornisci opzioni come il nome VG, le dimensioni e un nome LV.
In questo esempio, un VG da 2 GB crea il primo LV con una dimensione di 1 GB.
Esempio:
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
Per utilizzare questo LV creato, devi montare quella partizione all'interno del filesystem. Solo tu puoi accedere a questo LV per la memorizzazione dei dati. In Ansible, usa il filesystem moduli per formattare qualsiasi dispositivo a blocchi con filesystem
. Dopo la formattazione, monti la partizione in qualsiasi directory. Puoi utilizzare il supporto modulo in Ansible. Assicurati che la directory (/data1
in questo esempio) esiste prima di eseguire il playbook.
Esempio:
- 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
Esempio: Intero playbook:
---
- 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
Esegui questo playbook e controlla se il tuo LV viene creato o usa il lvs
comando.
Ricorda che una delle caratteristiche di LVM è che puoi estendere la dimensione del LV. Manualmente, puoi usare lvextend
comando. In Ansible, puoi usare lvol modulo per estendere la dimensione di sample-lv .
Esempio:
- 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 lvextend
comando o lvol modulo ti aiuta ad estendere il tuo LV. In questo lvol volume, usa il resizefs
parametro per ingrandire un file system non montato che si trova sul dispositivo.
Per ridurre le dimensioni di un LV, la sintassi è la seguente:
- 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
[ Hai bisogno di più su Ansible? Partecipa a un corso di panoramica tecnica gratuito di Red Hat. Ansible Essentials:Semplicità nell'automazione Panoramica tecnica. ]
Concludi
Questo articolo ti ha mostrato come configurare LVM usando un semplice playbook Ansible. Anziché utilizzare un semplice playbook, puoi creare un ruolo , utilizzando la stessa procedura e moduli di cui sopra. Ansible ti aiuta a ridurre le attività manuali e ad aumentare l'efficienza per la configurazione LVM. L'utilizzo dei metodi descritti in questo articolo semplifica le operazioni su più nodi gestiti.