Posts

Panduan Lengkap Snapper di openSUSE Tumbleweed (Bagian 3)

7. Snapshot “Important”

Apa itu Snapshot Important?

Snapshot “important” adalah snapshot yang ditandai dengan metadata khusus important=yes. Snapshot ini mendapat prioritas khusus dalam sistem pembersihan otomatis Snapper.

Perbedaan Important vs Biasa

AspekSnapshot BiasaSnapshot Important
Prioritas CleanupDihapus lebih duluDipertahankan lebih lama
Limit JumlahNUMBER_LIMITNUMBER_LIMIT_IMPORTANT
Use CaseUpdate rutin, snapshot harianMilestone sistem, kondisi stabil
Ditandai di listimportant=no atau kosongimportant=yes

Kapan Menggunakan Important?

Gunakan important untuk:

  1. ✅ Setelah fresh install dan sistem sudah dikonfigurasi sempurna
  2. ✅ Sebelum upgrade besar (misal: upgrade kernel, DE, atau perubahan major)
  3. ✅ Sistem dalam kondisi sangat stabil setelah troubleshooting
  4. ✅ Sebelum eksperimen besar yang berisiko
  5. ✅ “Golden snapshot” yang ingin dipertahankan sebagai fallback

Jangan gunakan important untuk:

  1. ❌ Snapshot rutin/harian
  2. ❌ Update kecil yang tidak kritis
  3. ❌ Snapshot temporary untuk testing cepat

Cara Membuat Snapshot Important

Metode 1: Single Snapshot Important

sudo snapper create --description "Sistem stabil - Golden Image" --userdata "important=yes"

Metode 2: Pre-Post Important Pair

# Pre snapshot
sudo snapper create --type pre --print-number --description "Sebelum upgrade kernel 6.7" --userdata "important=yes"
# Output: 50

# Lakukan upgrade kernel...
sudo zypper dup

# Post snapshot
sudo snapper create --type post --pre-number 50 --description "Setelah upgrade kernel 6.7" --userdata "important=yes"

Metode 3: Mengubah Snapshot Existing Jadi Important

# Cek snapshot yang ada
sudo snapper list

# Ubah snapshot #42 menjadi important
sudo snapper modify --userdata "important=yes" 42

Melihat Snapshot Important

# List semua dengan detail userdata
sudo snapper list

# Filter hanya important (menggunakan grep)
sudo snapper list | grep "important=yes"

Output contoh:

# | Type   | Pre # | Date                     | User | Cleanup | Description              | Userdata
---+--------+-------+--------------------------+------+---------+--------------------------+-------------
42 | single |       | Mon 16 Dec 2024 09:00:00 | root | number  | Golden Image v1          | important=yes
50 | pre    |       | Mon 16 Dec 2024 14:30:00 | root | number  | Sebelum upgrade kernel   | important=yes
51 | post   |    50 | Mon 16 Dec 2024 14:45:00 | root | number  | Setelah upgrade kernel   | important=yes

Mengatur Limit Important

# Cek setting saat ini
sudo snapper -c root get-config | grep LIMIT

# Ubah limit snapshot important (misal: simpan max 5 important)
sudo snapper -c root set-config "NUMBER_LIMIT_IMPORTANT=5"

# Ubah limit snapshot biasa (misal: max 10)
sudo snapper -c root set-config "NUMBER_LIMIT=10"

Rekomendasi setting:

  • NUMBER_LIMIT_IMPORTANT=5 (untuk 5 milestone penting)
  • NUMBER_LIMIT=10-15 (untuk snapshot rutin)

Cleanup Behavior

Ketika snapper cleanup berjalan dan jumlah snapshot melebihi limit:

  1. Snapshot biasa (important=no) dihapus terlebih dahulu
  2. Snapshot important (important=yes) dipertahankan hingga mencapai NUMBER_LIMIT_IMPORTANT
  3. Jika snapshot important juga melebihi limit, yang paling lama akan dihapus

Contoh skenario:

NUMBER_LIMIT=10
NUMBER_LIMIT_IMPORTANT=3
Total snapshot: 15 (5 important, 10 biasa)

Cleanup akan hapus:
1. Snapshot biasa yang paling lama (sampai total biasa = 7)
2. Jika masih kurang, baru hapus important yang paling lama

Best Practice Important Snapshots

Strategi “Golden Snapshots”

Buat beberapa level important:

# Level 1: Base system (Fresh install)
sudo snapper create --description "🥇 Golden-1: Fresh Install Configured" --userdata "important=yes"

# Level 2: After major milestone
sudo snapper create --description "🥈 Golden-2: All apps installed" --userdata "important=yes"

# Level 3: Stable production
sudo snapper create --description "🥉 Golden-3: Stable production system" --userdata "important=yes"

Gunakan Description yang Jelas

# ❌ Buruk
sudo snapper create --description "backup" --userdata "important=yes"

# ✅ Baik
sudo snapper create --description "Stabil - Pre KDE Plasma 6 upgrade - 16 Dec 2024" --userdata "important=yes"

Review dan Update Periodik

# Setiap bulan, review important snapshots
sudo snapper list | grep "important=yes"

# Hapus important yang sudah tidak relevan
sudo snapper delete 42

# Tandai snapshot baru sebagai important
sudo snapper modify --userdata "important=yes" 65

Dokumentasi Important Snapshots

Buat catatan manual di file (opsional):

# Buat file log
sudo nano /root/important-snapshots.txt

# Isi contoh:
# Snapshot #42: Golden Image - Fresh Tumbleweed install, semua konfigurasi dasar
# Snapshot #50-51: Pre/Post kernel 6.7 upgrade - Berjalan stabil
# Snapshot #65: Sebelum eksperimen dengan NVIDIA drivers

Mengubah Status Important

Mengubah dari Biasa ke Important

sudo snapper modify --userdata "important=yes" 42

Mengubah dari Important ke Biasa

sudo snapper modify --userdata "important=no" 42

atau hapus metadata important:

sudo snapper modify --userdata "" 42

Contoh Workflow Complete

Skenario: Upgrade Kernel Major

# 1. Cek kondisi sistem saat ini
sudo snapper list

# 2. Buat pre-snapshot important
sudo snapper create --type pre --print-number \
  --description "Pre-Kernel 6.8 Upgrade - Sistem sangat stabil" \
  --userdata "important=yes" \
  --cleanup-algorithm "number"
# Output: 100

# 3. Lakukan upgrade
sudo zypper dup --allow-vendor-change

# 4. Buat post-snapshot important
sudo snapper create --type post --pre-number 100 \
  --description "Post-Kernel 6.8 Upgrade" \
  --userdata "important=yes" \
  --cleanup-algorithm "number"

# 5. Test sistem selama beberapa hari
# (reboot, test hardware, test aplikasi)

# 6. Jika stabil, pertahankan. Jika tidak, rollback:
sudo snapper rollback 100
sudo reboot

8. Snapshot untuk Home Directory (Opsional)

Jika Anda ingin snapshot untuk /home:

Buat Konfigurasi Baru

sudo snapper -c home create-config /home

Verifikasi

sudo snapper list-configs

Buat Snapshot Home

sudo snapper -c home create --description "Backup home directory"

List Snapshot Home

sudo snapper -c home list

9. Troubleshooting

Disk Penuh karena Snapshot

Cek space usage:

df -h
sudo btrfs filesystem usage /

Hapus snapshot lama:

sudo snapper list
sudo snapper delete <range>

Force cleanup:

sudo snapper cleanup number
sudo snapper cleanup timeline

Rollback Tidak Berhasil

Cek status rollback:

sudo snapper list
sudo snapper status 0..1

Coba rollback manual dari Grub

Snapper Lambat

Disable inotify untuk snapshot: Edit /etc/snapper/configs/root:

sudo nano /etc/snapper/configs/root

Ubah:

SYNC_ACL="no"

10. Perintah Ringkas Reference

# List
sudo snapper list
sudo snapper list -t pre-post

# Create
sudo snapper create --description "desc"
sudo snapper create --type pre --print-number --description "desc"
sudo snapper create --type post --pre-number N --description "desc"

# Compare
sudo snapper status N..M
sudo snapper diff N..M /path/to/file

# Rollback
sudo snapper rollback N
sudo snapper undochange N..M /path/to/file

# Delete
sudo snapper delete N
sudo snapper delete N-M

# Config
sudo snapper list-configs
sudo snapper -c root get-config
sudo snapper -c root set-config "KEY=VALUE"

# Cleanup
sudo snapper cleanup number
sudo snapper cleanup timeline

Kesimpulan

Snapper adalah tool yang sangat powerful untuk melindungi sistem openSUSE Anda. Dengan memahami konsep snapshot dan cara penggunaannya, Anda bisa:

  1. ✅ Recovery cepat dari update yang bermasalah
  2. ✅ Eksperimen dengan sistem tanpa khawatir
  3. ✅ Tracking perubahan sistem dengan detail
  4. ✅ Rollback ke kondisi sistem sebelumnya dengan mudah

Ingat: Snapshot bukan backup! Snapshot tetap ada di disk yang sama. Untuk backup lengkap, gunakan solusi backup eksternal.

Panduan Lengkap Snapper di openSUSE Tumbleweed (Bagian 2)

4. Rollback Sistem

Metode 1: Rollback dari Grub (Paling Aman)

Langkah-langkah:

  1. Reboot komputer Anda
  2. Di menu Grub, pilih “Start bootloader from a read-only snapshot”
  3. Pilih snapshot yang ingin di-boot
  4. Login dan test apakah sistem berjalan dengan baik
  5. Jika puas, buat rollback permanen:
sudo snapper rollback
  1. Reboot untuk menerapkan rollback

Metode 2: Rollback dari Terminal (Sistem Running)

PERINGATAN: Metode ini lebih berisiko, gunakan hanya jika Anda paham konsekuensinya.

sudo snapper rollback 42

Setelah itu reboot:

sudo reboot

Metode 3: Rollback Selektif (File Tertentu)

Restore file tertentu dari snapshot:

sudo snapper -v undochange 2..3 /etc/zypp/zypp.conf

Restore multiple files:

sudo snapper -v undochange 2..3 /etc/zypp/zypp.conf /etc/hosts

5. Menghapus Snapshot

Menghapus Single Snapshot

sudo snapper delete 42

Menghapus Range Snapshot

sudo snapper delete 10-20

Menghapus Multiple Snapshot Spesifik

sudo snapper delete 5 7 9 11

PENTING: Jangan hapus snapshot #0 (current) dan #1 (baseline)!


6. Konfigurasi Snapper

Melihat Konfigurasi

sudo snapper list-configs

Output:

Config | Subvolume
-------+----------
root   | /

Melihat Detail Konfigurasi

sudo snapper -c root get-config

Mengubah Konfigurasi

Mengubah jumlah maksimum snapshot:

sudo snapper -c root set-config "NUMBER_LIMIT=10"
sudo snapper -c root set-config "NUMBER_LIMIT_IMPORTANT=10"

Menonaktifkan timeline snapshots:

sudo snapper -c root set-config "TIMELINE_CREATE=no"

Mengaktifkan kembali:

sudo snapper -c root set-config "TIMELINE_CREATE=yes"

Mengubah frekuensi timeline:

sudo snapper -c root set-config "TIMELINE_MIN_AGE=1800"
sudo snapper -c root set-config "TIMELINE_LIMIT_HOURLY=5"
sudo snapper -c root set-config "TIMELINE_LIMIT_DAILY=7"
sudo snapper -c root set-config "TIMELINE_LIMIT_WEEKLY=4"
sudo snapper -c root set-config "TIMELINE_LIMIT_MONTHLY=3"
sudo snapper -c root set-config "TIMELINE_LIMIT_YEARLY=2"

Panduan Lengkap Snapper di openSUSE Tumbleweed (Bagian 1)

Pengenalan Snapper

Snapper adalah tool untuk mengelola snapshot filesystem Btrfs. Di openSUSE Tumbleweed, Snapper sudah terpasang dan terkonfigurasi secara default untuk melindungi sistem Anda. Snapshot otomatis dibuat sebelum dan sesudah update sistem.

Konsep Dasar

Apa itu Snapshot?

Snapshot adalah “foto” dari kondisi filesystem pada waktu tertentu. Dengan Btrfs dan Snapper, snapshot ini dibuat dengan sangat efisien (hanya menyimpan perubahan, bukan duplikasi penuh).

Jenis Snapshot:

  • Pre-snapshot: Dibuat sebelum perubahan sistem (misal sebelum update)
  • Post-snapshot: Dibuat setelah perubahan sistem (misal setelah update)
  • Single snapshot: Snapshot mandiri tanpa pasangan

1. Melihat Daftar Snapshot

Perintah Dasar

sudo snapper list

Output contoh:

# | Type   | Pre # | Date                     | User | Cleanup | Description           | Userdata
---+--------+-------+--------------------------+------+---------+-----------------------+---------
 0 | single |       |                          | root |         | current               |
 1 | single |       | Thu 14 Dec 2024 10:00:00 | root |         | first root filesystem |
 2 | pre    |       | Mon 16 Dec 2024 08:15:23 | root | number  | zypp(zypper)          | important=yes
 3 | post   |     2 | Mon 16 Dec 2024 08:20:45 | root | number  |                       | important=yes

Penjelasan kolom:

  • #: Nomor snapshot
  • Type: Jenis snapshot (single/pre/post)
  • Pre #: Nomor pre-snapshot (untuk post-snapshot)
  • Date: Waktu pembuatan
  • Cleanup: Algoritma pembersihan otomatis
  • Description: Deskripsi snapshot

Melihat Detail Snapshot Tertentu

sudo snapper list -t single
sudo snapper list -t pre-post

2. Membuat Snapshot Manual

Membuat Single Snapshot

sudo snapper create --description "Sebelum install aplikasi X"

Membuat Pre/Post Snapshot Pair

Langkah 1 – Buat Pre-snapshot:

sudo snapper create --type pre --print-number --description "Sebelum konfigurasi sistem"

Output: 42 (catat nomor ini)

Langkah 2 – Lakukan perubahan sistem Anda (install software, edit config, dll)

Langkah 3 – Buat Post-snapshot:

sudo snapper create --type post --pre-number 42 --description "Setelah konfigurasi sistem"

Membuat Snapshot dengan Cleanup Policy

sudo snapper create --description "Backup penting" --cleanup-algorithm "number"

Cleanup algorithms:

  • number: Batasi jumlah snapshot
  • timeline: Batasi berdasar waktu
  • empty-pre-post: Hapus jika tidak ada perubahan

Membuat Snapshot Important

sudo snapper create --description "Sistem stabil sebelum eksperimen" --userdata "important=yes"

atau saat membuat pre/post pair:

sudo snapper create --type pre --print-number --description "Sebelum upgrade kernel" --userdata "important=yes"

Penjelasan Important:

  • Snapshot dengan tag important=yes akan diperlakukan khusus oleh sistem cleanup
  • Snapshot important akan dipertahankan lebih lama dari snapshot biasa
  • Berguna untuk menandai kondisi sistem yang stabil dan ingin dipertahankan
  • Jumlah snapshot important dibatasi oleh NUMBER_LIMIT_IMPORTANT (default: 2-10)

3. Membandingkan Snapshot

Melihat File yang Berubah

sudo snapper status 2..3

Output contoh:

c..... /etc/zypp/zypp.conf
+..... /etc/apt/sources.list.d/newrepo.list
-..... /home/user/oldfile.txt

Kode status:

  • c: File dimodifikasi (content changed)
  • +: File ditambahkan
  • -: File dihapus
  • t: Type berubah
  • u: User/owner berubah
  • g: Group berubah
  • p: Permission berubah

Melihat Perbedaan Isi File

sudo snapper diff 2..3 /etc/zypp/zypp.conf

Membandingkan dengan Snapshot Saat Ini

sudo snapper status 3..0

(0 = kondisi filesystem saat ini)