Snapshot adalah fotografi cepat dari state filesystem, dan replication menyebarkannya ke tempat lain. Episode ini membahas snapshot untuk ext4/XFS via LVM dan fs-freeze, snapshot instan btrfs dan ZFS, lalu pola incremental btrfs send/receive dan zfs send/receive untuk offsite.

Korupsi dan penghapusan data adalah hal yang bisa terjadi kapan saja — akibat bug, human error, atau serangan ransomware. Perisai utamanya bukan filesystem, melainkan snapshot dan backup. Snapshot memberi kalian garis waktu pemulihan; backup memastikan garis waktu itu bertahan dari kehilangan fisik disk.
Episode 9 ini membahas snapshot pada keempat filesystem. Untuk ext4 dan XFS yang menulis in-place, snapshot membutuhkan bantuan LVM atau fs-freeze. Untuk btrfs dan ZFS yang Copy-on-Write, snapshot hampir instan dan murah. Lalu kita bahas replikasi dengan btrfs send/receive dan zfs send/receive menuju lokasi offsite.
Aturan emas yang harus diingat sepanjang episode: snapshot bukan backup. Snapshot berbagi blok fisik dengan data asli — kalau disknya rusak, keduanya hilang bersama.
LVM (Logical Volume Manager) menyediakan snapshot pada level block: saat snapshot dibuat, LVM menyalin blok lama sebelum ditimpa. Ini cara standar memotret ext4 atau XFS:
sudo lvcreate -L 1G -s -n snap-data /dev/vg0/lv-data
sudo mount /dev/vg0/snap-data /mnt/snapSnapshot LVM butuh ruang ekstra untuk menampung perubahan sejak dibuat — jika penuh, snapshot menjadi invalid. Beri ukuran yang cukup dan pantau dengan lvs.
Agar snapshot konsisten, filesystem harus dalam keadaan tenang. fsfreeze membekukan tulis sementara:
sudo fsfreeze --freeze /mnt/data
sudo lvcreate -L 1G -s -n snap-frozen /dev/vg0/lv-data
sudo fsfreeze --unfreeze /mnt/dataPerintah fsfreeze --freeze memaksa journal dan buffer dituntaskan sebelum snapshot diambil — wajib untuk database yang sensitive terhadap konsistensi. Tanpa freeze, snapshot bisa mengandung file setengah tertulis.
Pada btrfs, snapshot tidak menyalin apa pun — ia hanya menunjuk blok yang sama:
sudo btrfs subvolume snapshot -r /mnt/lab/data /mnt/lab/@backups/data-$(date +%F)
sudo btrfs subvolume list /mnt/labOption -r membuat snapshot read-only yang aman sebagai titik restore. Karena COW, pembuatannya memakan ruang nol — ruang bertambah hanya saat blok asli berubah.
Snapshot ZFS mengikuti pola pool/dataset@label:
sudo zfs snapshot labpool/data@hari-$(date +%F)
zfs list -t snapshotSnapshot ZFS dan btrfs memberi kalian frekuensi backup yang jauh lebih rapat — setiap jam pun tidak masalah. Kekuatan inilah yang membuat COW filesystem unggul dibanding ext4/XFS untuk perlindungan data.
btrfs send menghasilkan stream perubahan. Untuk incremental, beri snapshot baseline dengan -p:
sudo btrfs send -p /mnt/lab/@backups/data-minggu1 \
/mnt/lab/@backups/data-minggu2 | ssh remote \
"sudo btrfs receive /mnt/backup"-p berarti parent snapshot — hanya perbedaan sejak parent yang dikirim. Setelah receive, verifikasi di sisi remote dengan btrfs subvolume list.
ZFS memakai zfs send -i untuk incremental dan zfs receive di sisi penerima:
sudo zfs snapshot -r labpool@penuh
sudo zfs send -R labpool@penuh | ssh remote "sudo zfs receive backup"
sudo zfs snapshot labpool@inkremental
sudo zfs send -R -i labpool@penuh labpool@inkremental | ssh remote "sudo zfs receive backup"-R mengirim seluruh dataset turunan, -i menyatakan selisih dari snapshot sebelumnya. Kombinasi -R -i ini adalah pola replikasi penuh yang benar-benar produksi.
Untuk jaringan yang dapat dipercaya dan throughput maksimal, stream bisa dikirim langsung via nc tanpa enkripsi:
sudo zfs send labpool/data@snap | nc -q 0 backup-host 9000Catatan penting: stream netcat tidak terenkripsi — hanya gunakan di jaringan pribadi atau lewat VPN. Untuk jalur publik, tetap pakai SSH.
Backup yang sehat menggabungkan snapshot lokal, replika remote, dan media lepas:
Snapshot lokal menangani kesalahan kecil (file terhapus, update gagal). Replika remote menangani skenario besar (disk mati, kebakaran). Keduanya punya peran berbeda dan tidak bisa saling menggantikan.
Replikasi yang manual pasti terlupakan. Jadwalkan di cron atau systemd timer, dan verifikasi berkala dengan restore uji:
0 2 * * * sudo zfs snapshot labpool/data@auto-$(date +\%F)
15 2 * * * sudo zfs send -R -i labpool/data@auto-$(date +\%F --date=yesterday) \
labpool/data@auto-$(date +\%F) | ssh remote "sudo zfs receive backup"Backup yang tidak pernah diuji bukan backup — uji restore setidaknya sebulan sekali.
Snapshot dan replikasi adalah dua sisi dari perlindungan data yang sama. Snapshot memberi kecepatan pemulihan; replikasi memberi ketahanan geografis. Untuk ext4/XFS, keduanya membutuhkan LVM dan disiplin; untuk btrfs dan ZFS, keduanya hampir gratis berkat COW.
Inti yang harus dibawa pulang:
fsfreeze untuk konsistensi.btrfs send -p dan zfs send -R -i adalah pola incremental resmi.Di episode 10 selanjutnya kita membahas filesystem untuk workload khusus — bagaimana memilih filesystem untuk database, container dan VM image, file server media, dan root filesystem. Kalian akan melihat mengapa tidak ada satu filesystem yang sempurna untuk semua beban kerja.