FSociety.pt

Infraestrutura Empresarial Segura | Four-Legged Firewall

View on GitHub

πŸ’Ύ ConfiguraΓ§Γ£o de Storage - Proxmox VE

Guia completo de configuraΓ§Γ£o de storage no Proxmox VE, incluindo LVM thin provisioning, storage pools e boas prΓ‘ticas.


πŸ“‹ VisΓ£o Geral

O Proxmox VE suporta diversos tipos de storage para armazenar VMs, containers, backups, ISOs e templates. O projeto FSociety utiliza uma combinaΓ§Γ£o de HDD para capacidade e NVMe para performance.

Arquitetura de Storage

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Proxmox VE Host Storage                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Disco 1: /dev/sda (HDD 931.5 GB)                     β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
β”‚  β”‚  β”‚  sda1: EFI   β”‚  β”‚  sda2: Boot (1 GB)            β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  1 GB        β”‚  β”‚  ext4                         β”‚ β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
β”‚  β”‚                                                        β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
β”‚  β”‚  β”‚  sda3: LVM PV (pve VG)                           β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ pve-root       β”‚  β”‚ pve-data             β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ 96 GB (37%)    β”‚  β”‚ 794 GB (15%)         β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ β†’ local (dir)  β”‚  β”‚ β†’ local-lvm (thin)   β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚   /var/lib/vz  β”‚  β”‚   VMs/Containers     β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚ β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Disco 2: /dev/nvme0n1 (NVMe 223.6 GB)                β”‚  β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
β”‚  β”‚  β”‚  nvme0n1p1: LVM PV (pve-nvme VG)                 β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ pve-nvme-swap  β”‚  β”‚ pve-nvme-data        β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ 8 GB           β”‚  β”‚ 200 GB (12%)         β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚ β†’ swap         β”‚  β”‚ β†’ pve-nvme (thin)    β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β”‚                β”‚  β”‚   VMs CrΓ­ticas       β”‚   β”‚ β”‚  β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚ β”‚  β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Storage Remoto: pbs-store (PBS)                      β”‚  β”‚
β”‚  β”‚  192.168.1.30:8007                                    β”‚  β”‚
β”‚  β”‚  42 GB (95% utilizado)                                β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ’Ώ Discos FΓ­sicos

/dev/sda - HDD 931.5 GB

PartiΓ§Γ£o Tamanho Tipo UtilizaΓ§Γ£o
sda1 1 GB EFI Boot EFI
sda2 1 GB ext4 /boot
sda3 ~929 GB LVM Volume Group β€œpve”
# Ver layout de partiΓ§Γ΅es
fdisk -l /dev/sda

# SaΓ­da esperada:
# Device       Start        End    Sectors  Size Type
# /dev/sda1     2048    2099199    2097152    1G EFI System
# /dev/sda2  2099200    4196351    2097152    1G Linux filesystem
# /dev/sda3  4196352 1953525134 1949328783  929G Linux LVM

/dev/nvme0n1 - NVMe 223.6 GB

PartiΓ§Γ£o Tamanho Tipo UtilizaΓ§Γ£o
nvme0n1p1 ~223 GB LVM Volume Group β€œpve-nvme”
# Ver layout de partiΓ§Γ΅es
fdisk -l /dev/nvme0n1

# SaΓ­da esperada:
# Device           Start       End   Sectors  Size Type
# /dev/nvme0n1p1    2048 468862127 468860080  223G Linux LVM

πŸ—‚οΈ Storage Pools Configurados

1. local (Directory - HDD)

Tipo: Directory
Path: /var/lib/vz
Dispositivo: /dev/pve/root (LVM LV em /dev/sda)

ParΓ’metro Valor
ID local
Tipo dir
Path /var/lib/vz
Capacidade 96 GB
Utilizado 36 GB (37%)
DisponΓ­vel 60 GB
ConteΓΊdo VZDump backup files, ISO images, Container templates
Compartilhado NΓ£o
Ativo Sim

CaracterΓ­sticas:

UtilizaΓ§Γ£o:

# Ver espaΓ§o
df -h /var/lib/vz

# Upload de ISO
# Via Web UI: local β†’ ISO Images β†’ Upload

# Via CLI:
cd /var/lib/vz/template/iso
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso

2. local-lvm (LVM-Thin - HDD)

Tipo: LVM-Thin
Volume Group: pve
Thin Pool: data

ParΓ’metro Valor
ID local-lvm
Tipo lvmthin
Volume Group pve
Thin Pool data
Capacidade 794 GB
Utilizado 119 GB (15%)
DisponΓ­vel 675 GB
ConteΓΊdo Disk image, Container
Compartilhado NΓ£o
Ativo Sim

CaracterΓ­sticas:

VMs Armazenadas:

# Ver volume group
vgs pve

# Ver logical volumes
lvs pve

# Ver thin pool
lvs -a pve/data

# Ver utilizaΓ§Γ£o detalhada
lvs -a -o +lv_metadata_size,lv_size,data_percent,metadata_percent pve/data

3. pve-nvme (LVM-Thin - NVMe)

Tipo: LVM-Thin
Volume Group: pve-nvme
Thin Pool: data

ParΓ’metro Valor
ID pve-nvme
Tipo lvmthin
Volume Group pve-nvme
Thin Pool data
Capacidade 200 GB
Utilizado 24 GB (12%)
DisponΓ­vel 176 GB
ConteΓΊdo Disk image, Container
Compartilhado NΓ£o
Ativo Sim

CaracterΓ­sticas:

VMs Armazenadas (CrΓ­ticas):

# Ver volume group NVMe
vgs pve-nvme

# Ver logical volumes
lvs pve-nvme

# Ver performance do NVMe
hdparm -Tt /dev/nvme0n1

# SaΓ­da esperada:
# Timing cached reads:   ~30000 MB/sec
# Timing buffered disk reads: ~3000 MB/sec

4. pbs-store (Proxmox Backup Server - Remoto)

Tipo: PBS (Proxmox Backup Server)
Servidor: 192.168.1.30:8007

ParΓ’metro Valor
ID pbs-store
Tipo pbs
Servidor 192.168.1.30
Datastore pve-store
Utilizador root@pam
Capacidade 42 GB
Utilizado 40 GB (95%)
DisponΓ­vel 2 GB
ConteΓΊdo VZDump backup files
EncriptaΓ§Γ£o Sim (fingerprint configurado)

CaracterΓ­sticas:


βš™οΈ ConfiguraΓ§Γ£o de Storage

Ficheiro /etc/pve/storage.cfg

# ConfiguraΓ§Γ£o de Storage - Proxmox VE
# mail.fsociety.pt

# Directory storage (local)
dir: local
	path /var/lib/vz
	content iso,vztmpl,backup
	maxfiles 3
	shared 0

# LVM-Thin storage (HDD)
lvmthin: local-lvm
	thinpool data
	vgname pve
	content rootdir,images
	nodes mail

# LVM-Thin storage (NVMe - Alta Performance)
lvmthin: pve-nvme
	thinpool data
	vgname pve-nvme
	content rootdir,images
	nodes mail

# Proxmox Backup Server (remoto)
pbs: pbs-store
	datastore pve-store
	server 192.168.1.30
	content backup
	fingerprint XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
	username root@pam
	port 8007

Ver ConfiguraΓ§Γ£o Atual

# Ver storage.cfg
cat /etc/pve/storage.cfg

# Listar todos os storages
pvesm status

# SaΓ­da esperada:
# Name            Type     Status           Total            Used       Available
# local            dir     active       98703360        36700160        57318144
# local-lvm    lvmthin     active      834109440       125304832       708804608
# pbs-store        pbs     active       44040192        41877504         2162688
# pve-nvme     lvmthin     active      209715200        25165824       184549376

πŸ› οΈ GestΓ£o de Storage

Adicionar Storage via Web UI

Directory Storage

  1. Datacenter β†’ Storage β†’ Add β†’ Directory
Campo Valor
ID backup-local
Directory /mnt/backup
Content VZDump backup files
Nodes mail
Enable βœ… Sim
Shared ❌ Não
  1. Clicar em Add

LVM-Thin Storage

  1. Datacenter β†’ Storage β†’ Add β†’ LVM-Thin
Campo Valor
ID pve-nvme
Volume group pve-nvme
Thin Pool data
Content Disk image, Container
Nodes mail
  1. Clicar em Add

Adicionar Storage via CLI

# Adicionar directory storage
pvesm add dir backup-local --path /mnt/backup --content backup

# Adicionar LVM-Thin storage
pvesm add lvmthin pve-nvme --vgname pve-nvme --thinpool data --content images,rootdir

# Remover storage
pvesm remove <storage-id>

# Desativar storage
pvesm set <storage-id> --disable 1

# Ativar storage
pvesm set <storage-id> --disable 0

πŸ”§ LVM Thin Provisioning

Verificar Thin Pool

# Ver estado do thin pool
lvs -a pve/data

# SaΓ­da esperada:
# LV              VG  Attr       LSize   Pool Origin Data%  Meta%
# data            pve twi-aotz-- 794.00g              15.00  1.50

# Monitorizar em tempo real
watch -n 2 'lvs -a pve/data'

Expandir Thin Pool

Se o thin pool estiver cheio:

# Ver espaΓ§o disponΓ­vel no VG
vgs pve

# Expandir thin pool
lvextend -L +100G /dev/pve/data

# Ou usar percentagem do espaΓ§o livre
lvextend -l +50%FREE /dev/pve/data

# Verificar nova capacidade
lvs pve/data

Over-Provisioning

Thin provisioning permite alocar mais espaΓ§o do que fisicamente disponΓ­vel:

# Exemplo:
# Thin Pool: 794 GB
# VMs alocadas: 5 x 50 GB = 250 GB
# UtilizaΓ§Γ£o real: 119 GB (15%)

# CΓ‘lculo de over-provision:
# Alocado total: 250 GB
# Capacidade fΓ­sica: 794 GB
# Ratio: 250/794 = 31.5% (seguro)

# Recomendado: NΓ£o exceder 200% de over-provision

πŸ“Š MonitorizaΓ§Γ£o de Storage

Via Web UI

Datacenter β†’ mail β†’ Disks

Mostra:

Datacenter β†’ Storage

Mostra:

Via CLI

# Resumo de storage
pvesm status

# Detalhes de um storage especΓ­fico
pvesm list local

# EspaΓ§o em disco
df -h

# UtilizaΓ§Γ£o LVM
vgs
lvs

# SMART health
smartctl -H /dev/sda
smartctl -H /dev/nvme0n1

# I/O stats
iostat -x 2

🎯 Boas PrÑticas

Escolha de Storage para VMs

Tipo de VM Storage Recomendado Motivo
Firewall (pfSense) pve-nvme (NVMe) Alta performance de I/O necessΓ‘ria
Domain Controller pve-nvme (NVMe) Acesso rΓ‘pido a LDAP/DNS
File Server local-lvm (HDD) Grande capacidade para ficheiros
Web Server local-lvm (HDD) I/O moderado
Mail Server local-lvm (HDD) Grande capacidade para emails
Backup Server local-lvm (HDD) Capacidade mais importante que velocidade

GestΓ£o de EspaΓ§o

  1. Monitorizar regularmente
    # Adicionar a crontab
    0 */6 * * * /usr/sbin/pvesm status | mail -s "Proxmox Storage Status" admin@fsociety.pt
    
  2. Configurar alertas
    • Datacenter β†’ Options β†’ Email Settings
    • Configurar threshold para alertas (ex: 80%)
  3. Limpar backups antigos
    # Listar backups
    pvesm list local --content backup
       
    # Remover backup especΓ­fico
    pvesm free local:backup/vzdump-qemu-102-2025_12_01-02_00_00.vma.zst
    
  4. Utilizar PBS para backups
    • DeduplicaΓ§Γ£o economiza espaΓ§o
    • RetenΓ§Γ£o automΓ‘tica configurΓ‘vel

Thin Provisioning

  1. NΓ£o over-provisionar excessivamente
    • Manter ratio < 200%
    • Monitorizar Data% regularmente
  2. Configurar alertas
    # Criar script de monitorizaΓ§Γ£o
    nano /usr/local/bin/check-thin-pool.sh
    
    #!/bin/bash
    THRESHOLD=80
    USAGE=$(lvs --noheadings -o data_percent pve/data | tr -d ' ')
    if [ ${USAGE%.*} -gt $THRESHOLD ]; then
        echo "Thin pool acima de $THRESHOLD%: ${USAGE}%" | \
        mail -s "ALERTA: Thin Pool pve/data" admin@fsociety.pt
    fi
    
  3. Expandir proativamente
    • Adicionar espaΓ§o antes de atingir 90%

πŸ› Troubleshooting

Problema: Thin pool cheio

Sintoma: Erro ao iniciar VMs ou criar discos

SoluΓ§Γ£o:

# Verificar utilizaΓ§Γ£o
lvs pve/data

# Se Data% > 95%, expandir:
lvextend -L +50G /dev/pve/data

# Ou adicionar novo disco e estender VG
pvcreate /dev/sdX
vgextend pve /dev/sdX
lvextend -L +100G /dev/pve/data

Problema: Storage nΓ£o aparece na Web UI

SoluΓ§Γ£o:

# Verificar ficheiro de configuraΓ§Γ£o
cat /etc/pve/storage.cfg

# Verificar se storage estΓ‘ montado
df -h
mount | grep vz

# Reiniciar serviΓ§os
systemctl restart pve-cluster
systemctl restart pvedaemon

Problema: Performance lenta em VMs

DiagnΓ³stico:

# Verificar I/O wait
top
# Observar %wa (I/O wait)

# Ver I/O por disco
iostat -x 2

# Ver VMs com mais I/O
iotop

SoluΓ§Γ£o:


πŸ“– PrΓ³ximos Passos

ApΓ³s configurar storage, prosseguir com:

  1. βœ… Storage Configurado
  2. ➑️ Criação de VMs - Criar e configurar VMs
  3. ➑️ Backup - Configurar backups automÑticos

πŸŽ“ InformaΓ§Γ£o AcadΓ©mica

Campo InformaΓ§Γ£o
InstituiΓ§Γ£o ESTG - Instituto PolitΓ©cnico do Porto
Unidade Curricular AdministraΓ§Γ£o de Sistemas II
Ano Letivo 2025/2026
Autores Ryan Barbosa, Hugo Correia, Igor AraΓΊjo

**[⬅️ Anterior: ConfiguraΓ§Γ£o de Rede](/fsociety-infrastructure/02-proxmox/02-configuracao-rede.html)** | **[Índice](/fsociety-infrastructure/02-proxmox/)** | **[PrΓ³ximo: CriaΓ§Γ£o de VMs ➑️](/fsociety-infrastructure/02-proxmox/04-criacao-vms.html)**

Última atualização: Dezembro 2025