Tahniah sebab sampai ke bab lanjutan! Kalau anda dah selesa dengan Proxmox asas, VM, dan LXC — bab ni akan bawa anda ke tahap seterusnya. Tapi jangan risau, saya akan terangkan satu per satu dan anda boleh pilih topik yang relevan sahaja.
Apa yang anda akan belajar:
Nota Beginner: Anda tidak rugi apa-apa jika belum sentuh cluster atau Ceph. Banyak homelab yang sangat matang masih berjalan dengan satu node yang diurus dengan baik. Bab ini adalah menu upgrade, bukan checklist wajib.
GPU Passthrough membolehkan VM menggunakan kad grafik fizikal secara langsung. Bayangkan macam ni — anda “serahkan” GPU fizikal kepada satu VM, dan VM tu boleh guna GPU tu macam ia dipasang terus.
Ini berguna untuk: - Transcoding media (Plex/Jellyfin) dalam VM - Menjalankan model AI/ML (Ollama) dalam VM - VM Windows dengan permainan atau aplikasi GPU - VM dengan pengawasan video (Frigate NVR)
Proses ni ada beberapa langkah, tapi kalau ikut satu per satu, insyaAllah tak susah.
Langkah 1: Aktifkan IOMMU dalam BIOS
Intel: VT-d = Enabled AMD: IOMMU = Enabled / AMD-Vi = Enabled
Nota Beginner: IOMMU adalah ciri dalam CPU yang membolehkan peranti fizikal (seperti GPU) digunakan terus oleh VM. Tanpa ini, GPU Passthrough tak boleh berfungsi. Setting ni ada dalam BIOS/UEFI komputer anda.
Langkah 2: Konfigurasi GRUB
# Edit /etc/default/grub # Untuk Intel: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" # Untuk AMD: GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt" # Kemas kini GRUB update-grub
Langkah 3: Muat modul VFIO
# Edit /etc/modules vfio vfio_iommu_type1 vfio_pci vfio_virqfd # Kenal pasti ID PCI GPU lspci -nn | grep -i vga # Contoh output: # 01:00.0 VGA: NVIDIA Corporation [10de:2504] # 01:00.1 Audio: NVIDIA Corporation [10de:228e] # Edit /etc/modprobe.d/vfio.conf options vfio-pci ids=10de:2504,10de:228e # Kemas kini initramfs update-initramfs -u -k all # Reboot reboot
Langkah 4: Tetapkan GPU kepada VM
Intel Quick Sync sangat berguna untuk transcoding media. Dari pengalaman saya, ini salah satu GPU Passthrough yang paling mudah dan berbaloi untuk homelab.
# Periksa kumpulan IOMMU untuk iGPU find /sys/kernel/iommu_groups/ -type l | sort -V | \ grep "00:02.0" # Pada Proxmox, tambah PCI Device: # Device: 0000:00:02.0 (Intel UHD Graphics) # All Functions: Ya # Primary GPU: Tidak (melainkan untuk VM desktop)
Alternatif: Intel GVT-g (Split iGPU)
GVT-g membolehkan satu iGPU Intel dikongsi antara host dan berbilang VM. Macam satu GPU tapi boleh “dipecah” kepada beberapa bahagian.
# Periksa sokongan GVT-g ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/ # Cipta vGPU echo "uuid-yang-dijana" > \ /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create
Nota Beginner: Kalau anda hanya nak transcoding untuk Jellyfin atau Plex, Intel iGPU Passthrough sudah lebih dari cukup. Tak perlu GPU NVIDIA yang mahal untuk tujuan ini.
Cluster Proxmox menggabungkan berbilang node untuk: - Live Migration — Pindahkan VM tanpa downtime - High Availability (HA) — VM dimulakan semula pada node lain jika satu gagal - Pengurusan berpusat — Urus semua node dari satu antara muka
Tip dari saya — cluster best bila anda dah ada 3 node. Dengan 2 node pun boleh, tapi quorum jadi isu. Jangan rush ke sini kalau belum perlu.
Keperluan: - Minimum 3 node untuk quorum yang betul - Rangkaian khusus untuk cluster (disyorkan) - Storan dikongsi untuk live migration (NFS, Ceph, iSCSI)
Langkah 1: Cipta Cluster pada Node 1
# Pada node pertama (pve1) pvecm create homelab-cluster # Periksa status pvecm status
Langkah 2: Tambah Node
# Pada node kedua (pve2) pvecm add 10.0.20.10 # Pada node ketiga (pve3) pvecm add 10.0.20.10
Langkah 3: Konfigurasi Storan Dikongsi
# Tambah storan NFS yang boleh diakses oleh semua node # Datacenter → Storage → Add → NFS # Server: 10.0.0.10 (NAS) # Export: /mnt/pool/proxmox # Content: Disk image, Container, ISO image, VZDump
Setelah cluster dikonfigurasi dengan storan dikongsi, anda boleh pindahkan VM antara node tanpa downtime. Ini macam “magic” — VM terus berjalan semasa dipindahkan!
Keperluan live migration: - CPU yang serasi antara node (atau gunakan cpu type: kvm64) - Storan dikongsi (NFS, Ceph, iSCSI) - Rangkaian antara node yang pantas (disyorkan 10GbE)
cpu type: kvm64
# Tambah VM ke kumpulan HA # Datacenter → HA → Resources → Add # VM/CT ID: 100 # Group: (pilih kumpulan) # State: started # Max Restart: 3 # Max Relocate: 3
Jika node yang menjalankan VM gagal, Proxmox HA akan: 1. Mengesan kegagalan node 2. Memulakan semula VM pada node lain yang tersedia 3. Menghantar pemberitahuan (jika dikonfigurasi)
Nota Beginner: HA memerlukan minimum 3 node untuk berfungsi dengan betul. Kalau anda hanya ada 1-2 node, fokus pada backup yang baik sahaja — itu sudah cukup selamat untuk homelab.
Ceph adalah sistem storan teragih. Bayangkan macam ni — daripada simpan data pada satu hard disk, Ceph “sebarkan” data merentasi banyak disk pada banyak node. Kalau satu disk rosak, data anda masih selamat.
Ceph menyediakan: - Storan yang dikongsi antara semua node cluster - Replikasi data automatik - Keupayaan self-healing (membaiki diri jika cakera gagal) - Tiada titik kegagalan tunggal
Keperluan minimum: - 3 node Proxmox - Sekurang-kurangnya 1 OSD (cakera) per node - Rangkaian khusus untuk trafik Ceph (disyorkan 10GbE)
# Langkah 1: Pasang Ceph pada semua node # Melalui antara muka web: Node → Ceph → Install # Langkah 2: Cipta Monitor pada setiap node # Node → Ceph → Monitor → Create # Langkah 3: Cipta OSD pada setiap node # Node → Ceph → OSD → Create OSD # Disk: /dev/sdb (cakera data) # DB Disk: /dev/nvme0n1 (SSD untuk metadata - pilihan) # Langkah 4: Cipta Pool # Node → Ceph → Pools → Create # Name: vm-pool # Size: 3 (3 salinan) # Min Size: 2
Penggunaan Ceph dalam Proxmox:
Setelah pool Ceph dicipta, ia boleh digunakan sebagai storan untuk: - Cakera VM (sangat disyorkan) - Volume container LXC - Imej ISO dan template
Kelebihan utama: VM yang menggunakan storan Ceph boleh dipindahkan antara node tanpa memerlukan storan NFS luaran. Semua data dah “ada di mana-mana” secara automatik.
Nota Beginner: Ceph memerlukan perkakasan yang agak serius dan minimum 3 node. Untuk homelab dengan 1 node, guna storan tempatan (local-lvm) sahaja sudah memadai. Jangan rasa perlu setup Ceph kalau tak perlu.
Terraform membolehkan anda mendefinisikan infrastruktur VM sebagai kod. Daripada klik satu-satu dalam GUI, anda tulis config file dan Terraform akan buat semuanya untuk anda.
Saya cadangkan topik ini kalau anda nak belajar DevOps atau dah mula ada banyak VM yang perlu diurus.
# Pasang Terraform wget -O- https://apt.releases.hashicorp.com/gpg | \ sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \ https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \ sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform
# main.tf terraform { required_providers { proxmox = { source = "telmate/proxmox" version = ">=2.9.0" } } } provider "proxmox" { pm_api_url = "https://10.0.20.10:8006/api2/json" pm_user = "terraform@pam" pm_password = var.proxmox_password pm_tls_insecure = true } # VM Docker Host resource "proxmox_vm_qemu" "docker_host" { name = "docker-host-01" target_node = "pve" clone = "ubuntu-template" cores = 4 memory = 8192 sockets = 1 disk { size = "50G" type = "virtio" storage = "local-lvm" } network { model = "virtio" bridge = "vmbr0" tag = 20 } os_type = "cloud-init" ipconfig0 = "ip=10.0.20.20/24,gw=10.0.20.1" nameserver = "10.0.0.2" lifecycle { ignore_changes = [disk] } } # VM Pi-hole resource "proxmox_vm_qemu" "pihole" { name = "pihole-01" target_node = "pve" clone = "debian-template" cores = 1 memory = 1024 sockets = 1 disk { size = "10G" type = "virtio" storage = "local-lvm" } network { model = "virtio" bridge = "vmbr0" } os_type = "cloud-init" ipconfig0 = "ip=10.0.0.2/24,gw=10.0.0.1" }
# Inisialisasi Terraform terraform init # Rancang perubahan terraform plan # Laksanakan terraform apply # Musnahkan semua sumber terraform destroy
Nota Beginner: Terraform nampak complicated pada awalnya, tapi ia sebenarnya sangat berguna. Bayangkan anda boleh “destroy” dan “recreate” keseluruhan homelab anda dengan satu arahan. Untuk belajar, mulakan dengan satu VM sahaja dulu.
Packer membina template VM secara automatik. Daripada install OS secara manual setiap kali nak buat template baru, Packer boleh buat semua tu untuk anda.
{ "builders": [ { "type": "proxmox-iso", "proxmox_url": "https://10.0.20.10:8006/api2/json", "username": "packer@pam", "password": "{{user `proxmox_password`}}", "node": "pve", "iso_file": "local:iso/ubuntu-24.04-server.iso", "vm_name": "ubuntu-template", "cores": 2, "memory": 2048, "os": "l26", "network_adapters": [ { "bridge": "vmbr0", "model": "virtio" } ], "disks": [ { "type": "virtio", "disk_size": "20G", "storage_pool": "local-lvm" } ], "ssh_username": "admin", "ssh_password": "packer", "ssh_timeout": "20m", "template_name": "ubuntu-2404-template", "template_description": "Ubuntu 24.04 Template" } ], "provisioners": [ { "type": "shell", "inline": [ "sudo apt update && sudo apt upgrade -y", "sudo apt install -y qemu-guest-agent cloud-init", "sudo cloud-init clean", "sudo truncate -s 0 /etc/machine-id" ] } ] }
Bahagian ni untuk anda yang nak “squeeze” prestasi maksimum dari VM. Tak wajib untuk bermula, tapi bagus untuk difahami.
Tetapkan teras CPU fizikal tertentu kepada VM untuk prestasi yang konsisten. Macam “reserve” lane tertentu di highway untuk satu kereta sahaja.
# Di Proxmox, edit konfigurasi VM # /etc/pve/qemu-server/100.conf cpu: host cores: 4 affinity: 0-3 # Pin ke teras 0,1,2,3
Huge Pages meningkatkan prestasi RAM untuk VM besar. Secara default, OS urus memori dalam “page” bersaiz 4KB. Huge Pages guna page bersaiz 2MB atau 1GB — kurang overhead untuk VM yang guna banyak RAM.
# Konfigurasi huge pages pada host echo 4096 > /proc/sys/vm/nr_hugepages # Atau secara kekal di /etc/sysctl.conf vm.nr_hugepages = 4096 # Aktifkan dalam VM Proxmox # Hardware → Memory → Enable Hugepages
Pemacu I/O terbaik untuk VM: Cakera: VirtIO Block atau VirtIO SCSI Rangkaian: VirtIO (paravirtualized) Display: VirtIO GPU (untuk VM Linux) Tetapan tambahan: Cache: writeback (prestasi) atau none (keselamatan) IO Thread: Aktifkan untuk I/O selari Discard: Aktifkan untuk SSD (TRIM support)
Ballooning membolehkan Proxmox menuntut semula RAM yang tidak digunakan oleh VM. Anggaplah macam “pinjam balik” RAM yang VM tak guna dan bagi kepada VM lain yang perlu.
Kelebihan: - Over-commit RAM dengan selamat - VM menggunakan hanya apa yang diperlukan - Lebih banyak VM pada RAM yang sama Kekurangan: - Sedikit overhead prestasi - Kadangkala VM lambat apabila RAM dituntut Cadangan: - Aktifkan untuk VM pembangunan/ujian - Nyahaktifkan untuk VM pengeluaran kritikal
Kalau anda nak tahu sama ada homelab anda berjalan dengan baik, pantau metrik ini:
CPU: - Penggunaan host vs VM - CPU steal time (menunjukkan over-commit) - Suhu CPU RAM: - Penggunaan host (termasuk ZFS ARC) - Penggunaan setiap VM - Swap usage (sepatutnya 0) Storan: - IOPS (operasi I/O per saat) - Latency (kependaman baca/tulis) - Throughput (MB/s) Rangkaian: - Throughput per VM - Paket per saat - Ralat dan drop
Nota Beginner: Kalau swap usage bukan 0, itu tanda RAM anda tak cukup. Ini antara tanda pertama yang perlu anda perhatikan. Tambah RAM fizikal atau kurangkan VM yang berjalan.
# CLI tools pada host Proxmox # Penggunaan sumber keseluruhan pvestatistics # Maklumat VM tertentu qm status 100 --verbose # Penggunaan storan pvesm status # Log sistem journalctl -u pve-cluster -f
Dalam bab lanjutan virtualisasi ini, kita telah belajar tentang:
Kemahiran ini membawa homelab anda ke tahap yang lebih profesional dan memberi anda pengalaman berharga yang digunakan dalam persekitaran enterprise.
Tapi ingat — anda tak perlu kuasai semua ni sekaligus. Pilih satu topik yang benar-benar anda perlukan, kuasai ia, dan barulah move on ke topik seterusnya. Satu langkah pada satu masa!
Seterusnya, kita akan masuk ke dunia Docker — satu teknologi yang akan mengubah cara anda deploy dan urus service dalam homelab.