Belajar LXC - Storage: Rootfs, Images & Snapshots
Episode 8 of 23

Belajar LXC - Storage: Rootfs, Images & Snapshots

Episode ini membedah penyimpanan LXC: backend dir, btrfs, ZFS, LVM, dan loop beserta lxc-create --bdev/--fstype; lalu pengelolaan image via template download, kloning dengan lxc-copy, dan snapshot dengan lxc-snapshot.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Di episode 7 container kalian sudah dibatasi resource-nya. Sekarang pertanyaan berikutnya: di mana container tinggal? Di episode 8 kita membedah storage LXC — dari backend yang menentukan bagaimana rootfs disimpan, hingga image yang menjadi sumber container baru. Keputusan backend di sini menentukan kecepatan, penggunaan disk, dan seberapa efisien snapshot kalian nanti (episode 9).

Backend Storage

LXC mendukung beberapa backend untuk menyimpan rootfs container. Masing-masing punya filosofi berbeda:

dir (Directory)

Backend paling sederhana dan default: rootfs hanyalah direktori biasa di /var/lib/lxc/<nama>/rootfs. Mudah dibackup (tinggal cp -a), tapi tidak mendukung snapshot native — setiap snapshot adalah salinan penuh.

Cek backend container c1
grep lxc.rootfs.path /var/lib/lxc/c1/config

Output dir:/var/lib/lxc/c1/rootfs menandakan backend dir.

btrfs dan ZFS (Filesystem dengan Snapshot Native)

Kedua filesystem ini punya snapshot bawaan yang hampir instan dan hemat disk (copy-on-write). Jika rootfs LXC berada di volume btrfs/zfs, lxc-snapshot memakai mekanisme native-nya — snapshot jadi murah, cepat, dan bisa nested. Ini pilihan terbaik untuk homelab dan production dengan snapshot intensif.

LVM (Logical Volume Manager)

Dengan LVM, setiap container adalah logical volume tersendiri. Snapshot LVM juga native, tapi biasanya single (tidak nested) dan memerlukan manajemen volume yang hati-hati. Cocok untuk lingkungan yang sudah memakai LVM sebagai standar storage.

Loop

Backend loop memakai file image disk yang di-loop-mount sebagai filesystem. Fleksibel untuk eksperimen dan portabilitas, tapi performanya lebih rendah dan snapshot bergantung pada filesystem di dalamnya.

Memilih Backend saat Create

Backend dipilih lewat --bdev dan filesystem lewat --fstype:

Buat container dengan backend dir + btrfs
lxc-create -n c2 -B dir -t download -- -d debian -r bookworm -a amd64
Buat container di btrfs volume (snapshot native)
lxc-create -n c3 -B btrfs -t download -- -d ubuntu -r 24.04 -a amd64
  • -B bdev / --bdev <type> — pilih backend (dir, btrfs, zfs, lvm, loop).
  • --fstype <fs> — filesystem di dalamnya (misal ext4 untuk loop/LVM, btrfs untuk backend btrfs).

Tip

Backend tidak bisa diubah seenaknya setelah container dibuat. Sebelum memutuskan, jawab dulu: seberapa sering kalian akan snapshot (btrfs/zfs), apakah storage sudah distandarkan LVM, atau cukup simpel dan portabel (dir). Keputusan ini murah sekarang, mahal jika diubah nanti.

Images: Sumber Container Baru

Template download

Template download mengambil image dari image server resmi linuxcontainers.org. Image ini bisa dilihat seperti "base image" — rootfs minimal yang siap di-custom. Cara paling fleksibel untuk memilih:

Daftar image yang tersedia
lxc-create -n placeholder -t download -- --list

Image yang dipilih bisa di-release tertentu (misal Ubuntu 24.04, Debian bookworm) dan arsitektur (amd64, arm64).

lxc-copy: Kloning Container

lxc-copy membuat container baru dari container yang sudah ada — mirip menyalin template. Ini lebih cepat daripada mengunduh ulang image. Contoh dasar:

Kloning c1 menjadi c4
lxc-copy -n c1 -N c4

Perbedaan antara full copy dan snapshot clone akan kita bedah di episode 9.

lxc-snapshot: Membekukan Keadaan

lxc-snapshot menyimpan keadaan container pada satu titik waktu, sehingga kalian bisa kembali (rollback) jika ada yang rusak:

Ambil snapshot c1
lxc-snapshot -n c1

Dengan backend dir, snapshot ini berupa salinan penuh; dengan btrfs/zfs, ia memakai snapshot native yang hampir instan.

Note

Konsep penting: image adalah sumber untuk membuat container baru, sedangkan snapshot adalah rekaman keadaan container yang sudah ada. Image dipakai ke depan (scale out), snapshot dipakai ke belakang (rollback). Episode 9 akan mengupas snapshot dan clone secara khusus.

Melihat Penggunaan Disk

Pantau berapa besar storage yang dipakai tiap container:

Ukuran rootfs tiap container
du -sh /var/lib/lxc/*/rootfs

Jika memakai ZFS, gunakan zfs list -t all untuk melihat volume dan snapshot-nya:

Lihat dataset dan snapshot ZFS
zfs list -t all | grep -E "lxc|containers"

Penutup

Inti yang harus dibawa pulang:

  • Backend storage: dir (sederhana), btrfs/zfs (snapshot native), LVM (volume-based), dan loop (file image).
  • lxc-create -B <bdev> --fstype <fs> menentukan bagaimana rootfs disimpan.
  • Template download mengambil image dari image server resmi.
  • lxc-copy membuat container baru dari yang ada; lxc-snapshot merekam keadaan untuk rollback.
  • Backend menentukan efisiensi snapshot — pilih sejak awal sesuai kebutuhan.

Di episode 9 selanjutnya kita akan fokus pada snapshot & clonelxc-snapshot -n c1 -L untuk daftar snapshot, lxc-copy -n c1 -N c2 untuk full copy, dan -s untuk snapshot clone yang hemat disk. Ini keterampilan paling berharga untuk operasional homelab dan production.