Skip to content

📦 Proxmox - Guia Completo


🔄 Live Migration sem Clusters

Este tutorial ensina como migrar uma máquina virtual (VM) entre dois servidores Proxmox que não fazem parte de um cluster. É possível realizar migrações ao vivo utilizando autenticação via token de API e configuração de fingerprint.

1. Obter o Fingerprint no Servidor de Destino

openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -fingerprint -sha256

Exemplo de saída:

SHA256 Fingerprint=CD:71:0A:8C:A2:9B:72:89:3B:72:32:0A:04:4B:60:AA:71:AE:A4:97:4B:64:80:77:61:87:9D:2D:30:C9:03:B0

2. Criar um Token de API no Servidor de Origem

Acesse a interface web do Proxmox → Data Center > Permissions > API Tokens

  • Selecione root@pam ou outro usuário com permissões.
  • Clique em Add e copie o token gerado.

3. Executar o Comando de Migração

qm remote-migrate ID-DA-VM ID-NO-DESTINO 'host=IP-DE-DESTINO,apitoken=PVEAPIToken=root@pam!token=SEU-TOKEN,fingerprint=SEU-FINGERPRINT' --target-bridge vmbr0 --target-storage SEU-STORAGE --online

Parâmetros:

  • ID-DA-VM: ID da VM de origem
  • ID-NO-DESTINO: ID da VM no destino
  • host: IP do servidor destino
  • apitoken: Token gerado
  • fingerprint: Obtido no passo 1
  • --target-bridge: Interface de rede no destino
  • --target-storage: Nome do storage
  • --online: Migração em tempo real

4. Confirmar Migração

  • A VM será migrada e desligada na origem.
  • A nova VM estará ativa no servidor de destino.

✅ Exemplo

qm remote-migrate 101 102 'host=192.168.1.10,apitoken=PVEAPIToken=root@pam!token=9d5481e1-f251-49aa-b5af-88907d4d4e46,fingerprint=CD:71:0A:8C:A2:9B:72:89:3B:72:32:0A:04:4B:60:AA:71:AE:A4:97:4B:64:80:77:61:87:9D:2D:30:C9:03:B0' --target-bridge vmbr0 --target-storage local-lvm --online

🔗 Utilizando SSHFS para Criar Storage no Proxmox

1. Introdução

O SSHFS permite montar sistemas de arquivos remotos via SSH. Isso é útil para adicionar storage extra ao Proxmox (backups, ISOs etc.).

2. Pré-requisitos

  • Proxmox com acesso root
  • Servidor remoto com SSH ativo
  • Conectividade entre as máquinas
  • Chaves SSH para autenticação

3. Instalar SSHFS

apt update
apt install sshfs
sshfs --version

4. Montagem

4.1 Criar ponto de montagem

mkdir -p /mnt/sshfs-storage

4.2 Montar o diretório remoto

sshfs usuario@ip_do_servidor_remoto:/caminho/para/storage /mnt/sshfs-storage

Com chave SSH:

sshfs -o IdentityFile=/root/.ssh/id_rsa usuario@ip_do_servidor_remoto:/caminho/para/storage /mnt/sshfs-storage

5. Montagem automática via /etc/fstab

nano /etc/fstab

Adicione:

usuario@ip_do_servidor_remoto:/caminho/para/storage /mnt/sshfs-storage fuse.sshfs _netdev,allow_other,IdentityFile=/root/.ssh/id_rsa,defaults 0 0

Teste:

mount -a
df -h | grep /mnt/sshfs-storage

6. Adicionar no Proxmox

  • Acesse a interface web
  • Vá em Datacenter > Storage > Add > Directory
  • Configure:
  • ID: Nome do storage
  • Directory: /mnt/sshfs-storage
  • Content: Selecione os tipos (backup, container, ISO etc.)

❌ Remover Nó do Cluster Proxmox

pvecm expected 1
pvecm nodes
pvecm delnode pve2

💽 Formatar Disco via CLI

Método 1

fdisk /dev/sdX
# pressione "d" e depois "w"
mkfs.ext4 /dev/sdX

Método 2

wipefs --all /dev/sdX
reboot

🧹 Formatar Disco Utilizado pelo CEPH

sgdisk --zap-all /dev/sdX
reboot

📈 Expandir Disco Root

Verificar espaço disponível:

vgs

Exemplo de saída:

VG  #PV #LV #SN Attr   VSize    VFree
pve   1   2   0 wz--n- <118.24g  100G

Expandir:

lvresize --size +100G --resizefs /dev/pve/root
lvresize --extents +100%FREE --resizefs /dev/pve/root

📶 Expandir SWAP no Proxmox

swapoff -v /dev/dm-0
lvm lvresize /dev/pve/swap -L +16G
mkswap /dev/mapper/pve-swap
swapon -va

🔓 Desbloquear VM ou CT

qm list         # listar VMs
pct list        # listar containers

pct unlock <ID>
qm unlock <ID>

📥 Importar Disco VM

qm importdisk <ID-VM> /mnt/pve/arquivo.raw local

☁️ Criar Imagens Cloud-Init

Ubuntu

wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
qm create 9000 --name ubuntu1804-templ --memory 2048 --net0 virtio,bridge=vmbr1
qm importdisk 9000 bionic-server-cloudimg-amd64.img local -format qcow2
qm set 9000 --scsihw virtio-scsi-pci --scsi0 /var/lib/vz/images/9000/vm-9000-disk-0.qcow2
qm set 9000 --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0
qm resize 9000 scsi0 +30G
qm set 9000 --ipconfig0 ip=dhcp
qm set 9000 --sshkey ~/.ssh/id_rsa.pub
qm cloudinit dump 9000 user

Debian

wget https://cdimage.debian.org/cdimage/openstack/current/debian-10.0.2-20190721-openstack-amd64.qcow2
qm create 9110 --name debian10-cloud --memory 2048 --net0 virtio,bridge=vmbr1
qm importdisk 9110 debian-10.0.2-20190721-openstack-amd64.qcow2 local -format qcow2
qm set 9110 --scsihw virtio-scsi-pci --scsi0 /var/lib/vz/images/9110/vm-9110-disk-0.qcow2
qm set 9110 --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0
qm resize 9110 scsi0 +30G
qm set 9110 --ipconfig0 ip=dhcp
qm set 9110 --sshkey ~/.ssh/id_rsa.pub
qm cloudinit dump 9110 user

🔐 Habilitar Autenticação por Senha SSH

sudo nano /etc/ssh/sshd_config

Altere:

PasswordAuthentication yes
ChallengeResponseAuthentication no

Reinicie:

sudo systemctl restart sshd

📦 Instalar Dependências Recomendadas

apt install -y cloud-init cloud-initramfs-growroot qemu-guest-agent sudo git curl
apt install -y fish figlet tmux mlocate fonts-powerline resolvconf htop iftop bmon net-tools dnsutils gnupg2 ntpdate

📜 Script para Provisionamento Cloud

Você pode utilizar um script para baixar imagens automaticamente e provisionar. Edite o nome do usuário e o caminho onde as imagens serão salvas dentro do script.

🔗 Script Provisionar Imagens Cloud