Mencari cara mengecilkan ukuran disk LXC di Proxmox? Proxmox VE memudahkan kita untuk memperbesar disk LXC container hanya dengan satu perintah pct resize. Sayangnya, mengecilkan (shrink) disk LXC tidak semudah itu. LVM thin volume pada Proxmox tidak mendukung shrink langsung, sehingga kita perlu menggunakan pendekatan backup dan restore menggunakan Proxmox Backup Server (PBS).
Dalam artikel tutorial Proxmox ini, kita akan membahas metode paling aman dan bersih untuk shrink disk LXC container, lengkap dengan panduan troubleshooting dari kasus nyata di environment homelab.
Mengapa Tidak Bisa Langsung Shrink Disk LXC di Proxmox? #
pct resize hanya mendukung penambahan ukuran, bukan pengurangan. Ini karena LVM thin provisioning bekerja secara one-way: memperbesar logical volume mudah, tapi memperkecilnya membutuhkan operasi filesystem yang kompleks dan berisiko. Solusinya adalah backup container ke PBS (Proxmox Backup Server), modifikasi konfigurasi ukuran disk, lalu restore dengan ukuran baru.
Prasyarat Shrink Disk LXC #
- Akses root ke Proxmox host via SSH
- PBS (Proxmox Backup Server) terkonfigurasi, atau storage lokal dengan ruang cukup
- Data aktual di dalam container lebih kecil dari ukuran target
Langkah-langkah Mengecilkan Disk LXC Container #
1. Cek Penggunaan Disk Aktual #
Sebelum apapun, pastikan data di dalam container tidak melebihi ukuran target baru.
pct exec {ID} -- df -h /Contoh output untuk LXC 101 yang akan dikecilkan dari 16G ke 5G:
Filesystem Size Used Avail Use%
/dev/mapper/pve-vm--101--disk--0 16G 3.2G 12G 21%Used hanya 3.2G, aman untuk dikecilkan ke 5G.
2. Backup ke PBS #
vzdump {ID} --storage pbs --compress zstd --mode snapshotCatat path backup dari output log, formatnya seperti:
INFO: creating Proxmox Backup Server archive 'ct/101/2026-05-08T01:07:13Z'3. Edit Konfigurasi Container #
nano /etc/pve/lxc/{ID}.confCari baris rootfs, ubah parameter size= ke ukuran target:
# Sebelum
rootfs: local-lvm:vm-101-disk-0,size=16G
# Sesudah
rootfs: local-lvm:vm-101-disk-0,size=5GSimpan file (Ctrl+O, Enter, Ctrl+X).
4. Backup Kedua #
Backup lagi setelah konfigurasi diubah. Backup kedua inilah yang akan di-restore. Karena hanya config yang berubah, proses ini sangat cepat (biasanya di bawah 30 detik karena incremental).
vzdump {ID} --storage pbs --compress zstd --mode snapshotCatat timestamp backup kedua ini.
5. Stop dan Restore #
pct stop {ID}
pct restore {ID} pbs:backup/ct/{ID}/{TIMESTAMP} \
--storage local-lvm \
--rootfs local-lvm:{UKURAN_BARU} \
--force 1 \
--unprivileged 1Contoh nyata untuk LXC 101:
pct stop 101
pct restore 101 pbs:backup/ct/101/2026-05-08T01:11:11Z \
--storage local-lvm \
--rootfs local-lvm:5 \
--force 1 \
--unprivileged 1Flag --force 1 diperlukan karena container dengan ID yang sama sudah ada. Flag --unprivileged 1 harus sesuai dengan setting container aslinya (cek di grep unprivileged /etc/pve/lxc/{ID}.conf).
6. Verifikasi #
pct start {ID}
pct exec {ID} -- df -h /Troubleshooting #
Error: CT already exists on node #
CT 101 already exists on node 'pve'Tambahkan flag --force 1 ke perintah restore.
Jellyfin Tidak Mau Start Setelah Shrink #
Ini kasus nyata yang terjadi saat LXC Jellyfin dikecilkan ke 5G. Jellyfin crash dengan error:
System.InvalidOperationException: The path `/var/lib/jellyfin/data` has insufficient
free space. Available: 1.4GiB, Required: 2GiB.Penyebab: Jellyfin versi terbaru memiliki hard check minimum 2GB free space sebelum mau start. Disk 5G dengan 3.2G used hanya menyisakan 1.4G, kurang dari threshold.
Solusi A (Direkomendasikan): Expand sedikit disk container:
pct stop {ID}
pct resize {ID} rootfs +2G
pct start {ID}Solusi B: Bersihkan cache Jellyfin dulu agar free space mencukupi:
systemctl stop jellyfin
rm -rf /var/cache/jellyfin/*
rm -rf /var/lib/jellyfin/transcodes/*
apt clean
journalctl --vacuum-size=50M
df -h /
systemctl start jellyfinPelajaran: Selalu sisakan buffer minimal 2-3GB dari ukuran aktual data, jangan terlalu mepet ke batas minimum.
Crafty Controller Tidak Mau Start (session.lock Corrupt) #
Setelah restore, Crafty Controller gagal start dengan error:
Failed to locate existing session.lock with error: Expecting value: line 1 column 1 (char 0)File session.lock menjadi kosong/corrupt karena container di-stop paksa saat proses restore.
Solusi: Hapus file session.lock, Crafty akan membuatnya ulang otomatis:
find /opt/crafty-controller -name "session.lock"
rm /opt/crafty-controller/crafty/crafty-4/app/config/session.lock
rm /opt/crafty-controller/crafty/crafty-4/servers/{UUID}/world/session.lock
systemctl start crafty-controllerCara Cek Path Backup di PBS #
Jika tidak sempat mencatat timestamp dari output log:
pvesh get /nodes/$(hostname)/storage/pbs/content | grep -E "ct/101"Atau lewat UI Proxmox: Storage > pbs > Backups, pilih container yang ingin di-restore.
Tips Tambahan #
Pantau thin pool secara berkala:
lvs pve/dataPerhatikan kolom Data%. Jika sudah mendekati 85%, segera lakukan cleanup atau expand pool sebelum kehabisan ruang.
Aktifkan auto-extend thin pool agar tidak habis mendadak. Edit /etc/lvm/lvm.conf:
thin_pool_autoextend_threshold = 80
thin_pool_autoextend_percent = 20Jangan shrink terlalu agresif. Selalu sisakan buffer 30-40% dari ukuran disk baru. Misalnya data 3.2G, jangan set disk ke 4G, set ke minimal 6-7G agar ada ruang untuk log, update, dan operasi aplikasi.
Ringkasan Perintah #
# 1. Cek penggunaan disk
pct exec {ID} -- df -h /
# 2. Backup pertama ke PBS
vzdump {ID} --storage pbs --compress zstd --mode snapshot
# 3. Edit config (ubah size=)
nano /etc/pve/lxc/{ID}.conf
# 4. Backup kedua (dengan config baru)
vzdump {ID} --storage pbs --compress zstd --mode snapshot
# 5. Restore dengan ukuran baru
pct stop {ID}
pct restore {ID} pbs:backup/ct/{ID}/{TIMESTAMP} \
--storage local-lvm \
--rootfs local-lvm:{UKURAN} \
--force 1 \
--unprivileged 1
# 6. Verifikasi
pct start {ID}
pct exec {ID} -- df -h /