Lewati ke konten utama
  1. Posts/

Cara Mengecilkan (Shrink) Disk LXC di Proxmox

Noor Khafidzin
Penulis
Noor Khafidzin
Seorang homelab enthusiast yang terobsesi pada efisiensi sistem dan seni pemecahan masalah (troubleshooting).
Daftar isi

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 snapshot

Catat 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}.conf

Cari 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=5G

Simpan 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 snapshot

Catat 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 1

Contoh 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 1

Flag --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 jellyfin

Pelajaran: 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-controller

Cara 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/data

Perhatikan 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 = 20

Jangan 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 /

Terkait


Muat Komentar