====== Praticando LVM - RHCSA-LFCS ======
===== Infraestrutura KVM =====
==== main.tf ====
terraform {
required_providers {
libvirt = {
source = "dmacvicar/libvirt"
}
}
}
provider "libvirt" {
uri = "qemu:///system"
}
resource "libvirt_volume" "os_image" {
name = "lvm-lfcs.qcow2"
pool = "default"
source = "/home/gean/kvm/templates/ol8-amd64.qcow2"
format = "qcow2"
}
data "template_file" "user_data" {
template = file("${path.module}/cloud_init.yml")
}
resource "libvirt_cloudinit_disk" "cloudinit_resized" {
name = "cloudinit_resized.iso"
user_data = data.template_file.user_data.rendered
pool = "default"
}
resource "libvirt_domain" "lvm-lfcs" {
name = "lvm-lfcs"
memory = "2048"
vcpu = 2
cpu {
mode = "host-passthrough"
}
cloudinit = libvirt_cloudinit_disk.cloudinit_resized.id
network_interface {
network_name = "default"
wait_for_lease = true
}
console {
type = "pty"
target_port = "0"
target_type = "serial"
}
disk {
volume_id = libvirt_volume.os_image.id
}
graphics {
type = "spice"
listen_type = "none"
}
}
output "ip" {
value = libvirt_domain.lvm-lfcs.network_interface[0].addresses[0]
}
==== cloud_init.yml ====
#cloud-config
users:
- name: gean
gecos: "Gean Martins"
sudo: "ALL=(ALL) NOPASSWD:ALL"
shell: /bin/bash
lock_passwd: false
ssh-authorized-keys:
- ${file("~/.ssh/tfvms.pub")}
ssh_pwauth: true
chpasswd:
list: |
gean: $6$kp7ay8JwVMNBTlL1$xf/nfw3WWePI3PhzccOTaaNXiDVrhIBck6i4pKJ89897u3/xNbDXc5zf0LInnCN0HkP4A/jVbQVk3qTMt4hq/1
expire: false
runcmd:
- hostnamectl set-hostname lvm-lfcs
==== Criando a infraestrutura ====
terraform init
terraform fmt
terraform validate
terraform plan
terraform apply
==== Adicionando novos discos ====
virsh list
Id Name State
--------------------------
1 lvm-lfcs running
virsh vol-create-as --pool default --name lvm-lfcs-vdb.img --capacity 10G --format raw
virsh vol-create-as --pool default --name lvm-lfcs-vdc.img --capacity 10G --format raw
virsh attach-disk lvm-lfcs /home/gean/kvm/images/lvm-lfcs-vdb.img vdb --targetbus virtio --persistent
virsh attach-disk lvm-lfcs /home/gean/kvm/images/lvm-lfcs-vdc.img vdc --targetbus virtio --persistent
virsh domblklist lvm-lfcs
Target Source
-------------------------------------------------------
vda lvm-lfcs.qcow2
vdb /home/gean/kvm/images/lvm-lfcs-vdb.img
vdc /home/gean/kvm/images/lvm-lfcs-vdc.img
hdd /home/gean/kvm/images/cloudinit_resized.iso
===== Logical Volume Management (LVM) =====
==== Criando volume físico ====
ssh lvm-lfcs
lsblk | grep -E 'vdb|vdc'
vdb 252:16 0 10G 0 disk
vdc 252:32 0 10G 0 disk
sudo lvmdiskscan
/dev/vda1 [ 1,00 GiB]
/dev/vda2 [ <15,00 GiB] LVM physical volume
/dev/vdb [ 10,00 GiB]
/dev/vdc [ 10,00 GiB]
2 disks
1 partition
0 LVM physical volume whole disks
1 LVM physical volume
sudo pvcreate /dev/vdb
sudo pvcreate /dev/vdc
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 ol lvm2 a-- <15,00g 0
/dev/vdb lvm2 --- 10,00g 10,00g
/dev/vdc lvm2 --- 10,00g 10,00g
sudo pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name ol
PV Size <15,00 GiB / not usable 3,00 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 3839
Free PE 0
Allocated PE 3839
PV UUID 9WR60T-6MiC-cHbu-yg18-I1rF-HweP-lua8SQ
"/dev/vdb" is a new physical volume of "10,00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb
VG Name
PV Size 10,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID mo1ytB-c2Ep-GPYv-FqhY-VbCe-4O04-iGv2Bm
"/dev/vdc" is a new physical volume of "10,00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdc
VG Name
PV Size 10,00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Ll8vYO-aBVb-qCPf-aRsa-6gSa-cDmk-QYv30Q
**Para remover**:
sudo pvremove /dev/vdb
==== Volumes físicos para grupos de volume ====
sudo vgcreate dados /dev/vdb /dev/vdc
sudo vgdisplay dados
--- Volume group ---
VG Name dados
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19,99 GiB
PE Size 4,00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19,99 GiB
VG UUID ZiJqqc-g5Nh-C59Q-aqfN-VpAn-dvgm-PoHVLv
sudo vgs
VG #PV #LV #SN Attr VSize VFree
dados 2 0 0 wz--n- 19,99g 19,99g
ol 1 2 0 wz--n- <15,00g 0
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 ol lvm2 a-- <15,00g 0
/dev/vdb dados lvm2 a-- <10,00g <10,00g
/dev/vdc dados lvm2 a-- <10,00g <10,00g
==== Criando volume lógico ====
sudo lvcreate -L 4G -n db dados
sudo lvcreate -L 512M -n web dados
sudo lvdisplay /dev/dados/db
--- Logical volume ---
LV Path /dev/dados/db
LV Name db
VG Name dados
LV UUID 5GNlwp-Zi1t-dTrP-9zq0-Kpux-Ijj7-2z7Jlh
LV Write Access read/write
LV Creation host, time lvm-lfcs, 2024-10-27 12:14:19 -0300
LV Status available
# open 0
LV Size 4,00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
sudo lvdisplay /dev/dados/web
--- Logical volume ---
LV Path /dev/dados/web
LV Name web
VG Name dados
LV UUID 7Ovshw-61dm-8AuA-E2eV-ddgi-JmsA-IcdgJL
LV Write Access read/write
LV Creation host, time lvm-lfcs, 2024-10-27 12:14:54 -0300
LV Status available
# open 0
LV Size 512,00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
sudo vgdisplay dados
--- Volume group ---
VG Name dados
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19,99 GiB
PE Size 4,00 MiB
Total PE 5118
Alloc PE / Size 1152 / 4,50 GiB
Free PE / Size 3966 / 15,49 GiB
VG UUID ZiJqqc-g5Nh-C59Q-aqfN-VpAn-dvgm-PoHVLv
sudo vgs -o +lv_size,lv_name
VG #PV #LV #SN Attr VSize VFree LSize LV
dados 2 2 0 wz--n- 19,99g 15,49g 4,00g db
dados 2 2 0 wz--n- 19,99g 15,49g 512,00m web
ol 1 2 0 wz--n- <15,00g 0 1,60g swap
ol 1 2 0 wz--n- <15,00g 0 13,39g root
==== Deletar volume lógico ====
sudo lvremove /dev/dados/web
Do you really want to remove active logical volume dados/web? [y/n]: y
Logical volume "web" successfully removed.
sudo vgdisplay dados
--- Volume group ---
VG Name dados
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19,99 GiB
PE Size 4,00 MiB
Total PE 5118
Alloc PE / Size 1024 / 4,00
GiB
Free PE / Size 4094 / 15,99 GiB
VG UUID ZiJqqc-g5Nh-C59Q-aqfN-VpAn-dvgm-PoHVLv
**Os comandos utilizados para os testes com o LVM são**:
* **PV (Physical Volume)**
* pvs - saída resumida
* pvscan - saída simples
* pvdisplay - saída detalhada
* **VG (Volume Group)**
* vgs - saída resumida
* vgscan - saída simples
* vgdisplay - saída detalhada
* **LV (Logical Volume)**
* lvs - saída resumida
* lvscan - saída simples
* lvdisplay - saída detalhada
==== Sequência para remover um VG ====
sudo lvchange -an /dev/dados/db
sudo lvremove /dev/dados/db
sudo vgchange -an dados
sudo vgremove dados
sudo pvremove /dev/vdb
sudo pvremove /dev/vdc