Episode ini membedah efisiensi PBS: chunking content-defined yang menghasilkan dedup lintas backup dan VM, serta cara membaca metrik dedup di datastore. Kalian juga memahami alur prune (retention) lalu garbage collection untuk menghapus chunk yang tak terpakai, dan menjadwalkan GC agar storage tidak membengkak.

Restore sudah teruji di episode 5 — sekarang kita bicara biaya. Backup yang tidak di-manage akan terus membesar sampai disk penuh. PBS menyelesaikan dua masalah sekaligus: deduplication membuat data tidak disimpan berulang, dan garbage collection membersihkan sisa chunk yang tidak lagi dibutuhkan. Episode 6 adalah jantung efisiensi PBS.
Bayangkan dedup seperti hotel dengan dapur pusat: semua tamu (VM) memesan telur yang sama, tapi hotel hanya menyimpan satu porsi telur di dapur (chunk unik), lalu mencatat siapa saja yang memakainya. Saat seorang tamu pulang, telur yang hanya dipakai tamu itu tetap di dapur sampai petugas (GC) memastikan tidak ada yang butuh lagi.
Seperti dibahas di episode 2, PBS memecah data menjadi chunk berbasis content-defined chunking (CDC). Konsekuensi langsungnya: satu chunk unik hanya disimpan sekali, di seluruh datastore. Artinya:
Dedup terjadi otomatis, transparan, dan dihitung real-time oleh PBS. Tidak ada konfigurasi khusus — kalian cukup menikmati efisiensinya.
Web UI PBS menampilkan statistik penting per datastore: Size (kapasitas fisik yang terpakai), Original (ukuran data sebenarnya sebelum dedup/compress), Dedup (ukuran chunk unik setelah dedup, sebelum compress), dan Compressed (ukuran nyata setelah compression). Dari sini muncul dua rasio:
proxmox-backup-manager datastore list --output-format jsonTip
Dedup ratio yang tinggi (misal 5x-20x) normal untuk environment VM yang homogen — banyak sistem operasi dan paket yang sama. Dedup ratio rendah berarti data kalian unik dan beragam, bukan berarti PBS rusak. Catat angka awal kalian; episode 18 memakainya untuk capacity planning.
Ketika retention (episode 8) menghapus snapshot, PBS tidak langsung menghapus chunk-nya — karena chunk yang sama mungkin dipakai snapshot lain. Menghapus tanpa memeriksa akan merusak snapshot yang masih hidup. Garbage collection menjawab ini: ia menghitung referensi setiap chunk, lalu menghapus yang tidak lagi direferensikan oleh snapshot mana pun.
Alurnya dua tahap:
Urutan ini wajib: GC tanpa prune tidak ada gunanya (semua chunk masih direferensikan), dan prune tanpa GC membuat disk membengkak (chunk snapshot lama tetap disimpan).
proxmox-backup-manager datastore garbage-collection store1Saat berjalan, PBS memasuki fase mark (menandai semua chunk yang direferensikan — bisa berlangsung lama untuk datastore besar) lalu fase sweep (menghapus yang tidak ditandai). Log akhir menampilkan jumlah chunk yang dibebaskan:
TASK OK — GC finished.
Marked 12345 chunks, removed 678 chunks, freed 2.1 GiBJangan jalankan GC manual terus-menerus — jadwalkan. Idealnya di waktu sepi dan setelah prune job selesai. Di episode 3 kita sudah membuat GC mingguan (sun 02:00). Buat job eksplisit via CLI:
proxmox-backup-manager gc job create \
--datastore store1 --schedule "sun 02:00"proxmox-backup-manager gc job listWarning
GC adalah operasi berat yang membaca semua metadata datastore. Jangan menjalankannya bersamaan dengan backup besar atau sync — performa akan anjlok dan durasi memanjang. Letakkan di slot waktu kosong, dan pastikan prune berjalan sebelum GC dalam urutan scheduler.
Urutan yang sehat untuk production:
Hasilnya: datastore tumbuh sesuai retention, bukan tanpa batas. Check disk health berkala dengan df -h dan pantau metrik datastore di web UI.
Inti yang harus dibawa pulang:
proxmox-backup-manager gc job create) dan jangan bentrokkan dengan backup/sync.Di episode 7 selanjutnya kita akan mengamankan data: enkripsi client-side — generate key base64 di sisi client, mengatur encryption-key pada task backup, memverifikasi bahwa server tidak bisa membaca data, dan praktik manajemen key yang benar karena tanpa key, restore mustahil dilakukan!