Belajar Linux Filesystem - btrfs: Subvolume, Snapshot & COW
Episode 5 of 23

Belajar Linux Filesystem - btrfs: Subvolume, Snapshot & COW

btrfs membawa Copy-on-Write, checksum, subvolume, dan snapshot ke kernel Linux. Episode ini membahas konsep COW dan checksum btrfs, lalu praktik dengan btrfs subvolume, snapshot, send/receive, balance, device management, check, dan scrub.

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

Pendahuluan

Sekarang kita masuk generasi modern: btrfs — filesystem Copy-on-Write (COW) bawaan kernel Linux. Berbeda dari ext4 dan XFS yang menulis in-place dengan journal, btrfs menulis data baru di blok baru dan mengubah pointer secara atomik. Konsekuensinya besar: snapshot instan, rollback cepat, checksum seluruh data, dan kompresi transparan.

Keunggulan btrfs bukan satu fitur, melainkan kombinasi: subvolume untuk mengorganisasi data, snapshot untuk perlindungan, send/receive untuk replikasi, dan balance untuk mengelola alokasi blok. Di episode ini kita bahas konsepnya lalu praktik semuanya di lab.

Sebelum lanjut, pastikan toolchain btrfs-progs terinstall dan disk loopback tersedia. Perintah btrfs adalah gerbang utama ke semua operasi btrfs.

Konsep Dasar btrfs

Copy-on-Write dan Checksum

Saat file dimodifikasi, btrfs tidak menimpa blok lama. Data baru ditulis ke blok baru, lalu metadata diperbarui menunjuk ke blok baru. Blok lama tetap ada sampai tidak dirujuk siapa pun — inilah dasar snapshot. Setiap blok data juga menyimpan checksum (CRC32C default, atau xxhash). Saat dibaca, checksum diverifikasi; jika gagal, btrfs mencoba memulihkan dari salinan lain (jika ada) atau melaporkan error.

Subvolume dan Snapshot

Subvolume adalah bagian filesystem yang punya namespace sendiri, seperti direktori tingkat tinggi yang bisa di-mount mandiri. Snapshot adalah copy-on-write dari subvolume — pembuatannya hampir instan karena tidak menyalin data, hanya menunjuk ke blok yang sama.

Perbedaan penting: snapshot btrfs bisa bersifat read-write maupun read-only. Snapshot read-only digunakan sebagai titik restore dan target send/receive. Snapshot bukan backup — jika blok asli rusak (misalnya bad sector), snapshot ikut rusak karena berbagi blok.

Membuat Filesystem btrfs

mkfs.btrfs

Format disk loopback:

Format disk loopback sebagai btrfs
sudo losetup -f /tmp/lab.img
sudo mkfs.btrfs -L lab-btrfs /dev/loop0

Untuk mode multi-device, berikan beberapa perangkat sekaligus:

btrfs RAID1 dua perangkat
sudo mkfs.btrfs -m raid1 -d raid1 /dev/loop0 /dev/loop1

-m raid1 mengatur mode alokasi metadata, -d raid1 mengatur data. Setiap perangkat bisa memiliki ukuran berbeda — btrfs memakai ukuran perangkat terkecil sebagai acuan kapasitas untuk RAID1. Mode RAID yang didukung: single, dup, raid0, raid1, raid10, raid1c3, dan raid1c4.

Struktur subvolume default

Mount filesystem:

Mount btrfs dan lihat struktur
sudo mkdir -p /mnt/lab
sudo mount /dev/loop0 /mnt/lab
sudo btrfs subvolume list /mnt/lab

btrfs membuat subvolume ID 5 (<FS_TREE>) sebagai root, lalu subvolume ID 257. Cek informasi lengkap dengan:

Info filesystem btrfs
sudo btrfs filesystem show /dev/loop0
sudo btrfs filesystem usage /mnt/lab

btrfs filesystem usage menampilkan alokasi metadata vs data secara rinci.

Operasi Subvolume dan Snapshot

Membuat dan menghapus subvolume

Kelola subvolume btrfs
sudo btrfs subvolume create /mnt/lab/data
sudo btrfs subvolume list /mnt/lab
sudo btrfs subvolume delete /mnt/lab/data

Subvolume yang dihapus hanya melepas pointer; ruangnya dibebaskan kemudian oleh proses background (dan dijamin setelah semua referensi COW dilepas).

Snapshot dan rollback

Snapshot read-only lalu rollback
sudo btrfs subvolume snapshot /mnt/lab/data /mnt/lab/@snap-data
sudo btrfs subvolume snapshot -r /mnt/lab/data /mnt/lab/@ro-snap
sudo btrfs subvolume delete /mnt/lab/data
sudo btrfs subvolume snapshot /mnt/lab/@ro-snap /mnt/lab/data

-r membuat snapshot read-only yang aman sebagai titik restore. Pola rollback di atas adalah teknik standar untuk mengembalikan sistem ke kondisi sebelumnya.

Balance, Device, Check, dan Scrub

btrfs balance

Balance mendistribusikan ulang data dan metadata melintasi perangkat, misalnya setelah menambah disk:

Balance dan tambah device
sudo btrfs device add /dev/loop2 /mnt/lab
sudo btrfs balance start -dusage=60 /mnt/lab

-dusage=60 memindahkan blok data yang terpakai di bawah 60 persen, sehingga ruang kosong terkumpul di perangkat baru. Balance bisa dibatasi dengan -dlimit=, -musage=, dan filter profil.

btrfs device

Kelola anggota filesystem multi-device:

Status dan remove device
sudo btrfs device stats /mnt/lab
sudo btrfs device usage /mnt/lab

btrfs check dan scrub

Periksa dan scrub btrfs
sudo btrfs scrub start /mnt/lab
sudo btrfs scrub status /mnt/lab

scrub membaca semua data dan metadata, memverifikasi checksum, dan memperbaiki blok dari salinan lain jika memungkinkan. btrfs check --repair adalah alat perbaikan terakhir dan hanya boleh dijalankan pada filesystem unmounted — kita bahas lebih dalam di episode 11.

Warning

btrfs check --repair dianggap berbahaya pada kernel baru karena bisa menimbulkan korupsi tambahan. Selalu backup dulu dan utamakan restore dari snapshot bila memungkinkan.

Send dan Receive

Replikasi dengan send/receive

btrfs send menghasilkan stream perubahan yang bisa dikirim ke filesystem lain (lokal atau remote melalui ssh) dan diaplikasikan dengan btrfs receive:

Send/receive snapshot ke remote
sudo btrfs send /mnt/lab/@ro-snap | ssh remote "btrfs receive /mnt/backup"

Stream hanya boleh berasal dari snapshot read-only. Setelah berjalan, verifikasi hasil di sisi remote. Kombinasi send/receive ini adalah dasar replikasi dan backup offsite btrfs — kita akan bahas pola incremental di episode 9.

Penutup

btrfs mengubah cara kalian berpikir tentang filesystem: alih-alih menimpa data, semuanya adalah pointer yang bisa ditunjuk ulang. Subvolume mengorganisasi data, snapshot memberi perlindungan instan, send/receive menangani replikasi, dan scrub menjaga integritas. Fitur ini datang dengan biaya: operasi COW lebih kompleks dan butuh disiplin pengelolaan.

Inti yang harus dibawa pulang:

  • COW menulis blok baru lalu mengubah pointer; snapshot menjadi hampir instan.
  • Setiap blok btrfs punya checksum; scrub memverifikasi dan memulihkan.
  • Snapshot read-only diperlukan untuk send/receive dan titik restore.
  • btrfs balance mendistribusikan ulang alokasi antar perangkat.
  • Mode RAID btrfs mendukung single, dup, raid0, raid1, raid10, raid1c3/4.
  • Snapshot bukan backup — blok fisik masih dibagikan.

Di episode 6 selanjutnya kita membahas ZFS: pool, dataset, dan snapshot — filesystem sekaligus volume manager yang menggabungkan RAID, checksum, dan snapshot dalam satu entitas. Kalian akan membuat pool, dataset, snapshot, dan melakukan send/receive dengan OpenZFS.

Belajar Linux Filesystem - btrfs: Subvolume, Snapshot & COW | Belajar Linux Filesystem