Μετάβαση στο περιεχόμενο

Στιγμιότυπα Btrfs

Ας ξεκινήσουμε με τα βασικά:

Τα στιγμιότυπα Btrfs προέρχονται από τη λειτουργία των υποτόμων. Τι είναι ένας υποτόμος; Σκεφτείτε έναν υποτόμο ως ένα ξεχωριστό σύστημα αρχείων εντός του συστήματος αρχείων Btrfs, που σας επιτρέπει να χωρίσετε τα δεδομένα σας σε διαφορετικά τμήματα. Γι’ αυτό, για παράδειγμα, στο CachyOS έχουμε διαφορετικούς υποτόμους για:

  • Το ριζικό σύστημα αρχείων: (/)
  • Τον κατάλογο ρίζας (root): (/root)
  • Τον προσωπικό κατάλογο (home): (/home)
  • Τους καταλόγους var: (/var/cache, /var/tmp, /var/log)
  • Τον κατάλογο srv: (/srv)

Έχοντας διαφορετικούς υποτόμους για αυτούς τους καταλόγους, μπορούμε να τους διαχειριζόμαστε ανεξάρτητα, να εφαρμόζουμε διαφορετικές ρυθμίσεις και, το πιο σημαντικό, να δημιουργούμε στιγμιότυπά τους.

Εδώ είναι που γεννιέται ένα στιγμιότυπο. Αυτό είναι ουσιαστικά το αντίγραφο ενός υποτόμου για μια συγκεκριμένη χρονική στιγμή, το οποίο μπορεί να είναι μόνο για ανάγνωση ή για ανάγνωση και εγγραφή (προεπιλογή). Αυτό σημαίνει ότι μπορείτε να «απαθανατίσετε» την κατάσταση του συστήματος αρχείων σας, συμπεριλαμβανομένων όλων των αρχείων και των καταλόγων, εκείνη ακριβώς τη στιγμή.

Επομένως, τα στιγμιότυπα αποτελούν σημεία αναφοράς για μια συγκεκριμένη χρονική στιγμή. Αυτό σημαίνει ότι όταν το αρχείο στο σύστημα προορισμού αρχίσει να διαφέρει από τα δεδομένα του στιγμιότυπου, το στιγμιότυπο διατηρεί το αρχικό αρχείο, ενώ το σύστημα προορισμού δημιουργεί ένα νέο αρχείο με τις αλλαγές. Το στιγμιότυπο παραμένει αμετάβλητο για πάντα, γι’ αυτό και ορισμένοι χρήστες αναφέρονται σε αυτό ως «δεδομένα παγωμένα στον χρόνο».

Φανταστείτε ότι τραβάτε μια φωτογραφία του συστήματος αρχείων σας σε μια συγκεκριμένη στιγμή και μπορείτε πάντα να επιστρέψετε σε αυτήν τη φωτογραφία όποτε το χρειαστείτε.

Ένα από τα βασικά πλεονεκτήματα των στιγμιότυπων είναι ότι είναι πολύ αποδοτικά ως προς τη χρήση του χώρου, επειδή αποτελούν απλώς μια αναφορά στα αρχικά δεδομένα μέχρι να γίνουν αλλαγές.

Εδώ όμως είναι που ένα στιγμιότυπο διαφέρει από ένα παραδοσιακό αντίγραφο ασφαλείας. Ας υποθέσουμε ότι ο δίσκος σας καταρρέει: αν είχατε ένα παραδοσιακό αντίγραφο ασφαλείας, θα μπορούσατε να ανακτήσετε τα δεδομένα σας από αυτό. Ωστόσο, αν είχατε μόνο στιγμιότυπα στον δίσκο που κατέρρευσε, θα χάνατε την πρόσβαση σε αυτά, καθώς είναι αποθηκευμένα στον ίδιο ακριβώς δίσκο.

Περιπτώσεις όπου τα στιγμιότυπα (δεν) είναι χρήσιμα

Ενότητα με τίτλο «Περιπτώσεις όπου τα στιγμιότυπα (δεν) είναι χρήσιμα»

Είναι χρήσιμα για την ανάκαμψη από:

  • Ελαττωματικά ή κατεστραμμένα αρχεία μετά από ενημερώσεις συστήματος.
  • Εσφαλμένες ρυθμίσεις που εμποδίζουν την εκκίνηση του συστήματος.
  • Ακούσια διαγραφή ή τροποποίηση αρχείων.

Δεν είναι χρήσιμα για την ανάκαμψη από:

  • Προβλήματα με τον φορτωτή εκκίνησης.
  • Αστοχίες υλικού (π.χ. αστοχία σκληρών δίσκων).

Μερικά πράγματα που πρέπει να λάβετε υπόψη πριν από τη διαχείριση των στιγμιότυπων. Ισχύουν τόσο για τη μέθοδο μέσω CLI όσο και για τη μέθοδο μέσω GUI.

  • Συνιστάται να διατηρείτε το πολύ 10 στιγμιότυπα. Πέραν αυτού του αριθμού, τα στιγμιότυπα είναι πολύ παλιά και λιγότερο χρήσιμα. Στη χειρότερη περίπτωση, η επαναφορά σε ένα πολύ παλιό στιγμιότυπο μπορεί να προκαλέσει προβλήματα συμβατότητας με νεότερες εκδόσεις λογισμικού.
  • Τα στιγμιότυπα προορίζονται ιδανικά για σκοπούς αποκατάστασης. Παρόλα αυτά, μπορείτε να τα χρησιμοποιήσετε για να αναιρέσετε αλλαγές σε αρχεία χωρίς να επαναφέρετε ολόκληρο το στιγμιότυπο.
  • Προσθέστε μια περιγραφική ονομασία κατά τη δημιουργία των στιγμιότυπων. Αυτό θα σας βοηθήσει να αναγνωρίσετε τον σκοπό του κάθε στιγμιότυπου αργότερα.

Πριν προχωρήσετε, βεβαιωθείτε ότι έχετε εγκαταστήσει το btrfsmaintenance για να επωφεληθείτε από τις λειτουργίες αυτόματης διαχείρισης στιγμιότυπων.

Για τους χρήστες που προτιμούν να διαχειρίζονται το Btrfs, τα στιγμιότυπα και περισσότερες λειτουργίες μέσω γραφικού περιβάλλοντος (GUI), το Btrfs Assistant είναι ένα εξαιρετικό έργο για αρχάριους.

Ρύθμιση της αυτόματης εκκαθάρισης στιγμιότυπων

Ενότητα με τίτλο «Ρύθμιση της αυτόματης εκκαθάρισης στιγμιότυπων»

Σε αυτήν την ενότητα, θα ρυθμίσουμε την αυτόματη εκκαθάριση στιγμιότυπων με το Btrfs Assistant. Αυτό θα βοηθήσει στην αποτελεσματική διαχείριση των στιγμιότυπών σας χωρίς χειροκίνητη παρέμβαση.

Ακολουθήστε τα εξής βήματα:

  1. Εκκινήστε το Btrfs Assistant ανοίγοντας ένα τερματικό και εκτελώντας την εξής εντολή:

    Terminal window
    btrfs-assistant-launcher

    Εναλλακτικά:

    Terminal window
    sudo -E btrfs-assistant
  2. Μεταβείτε στην καρτέλα «Snapper Settings»:

    Τροποποιήστε τις ρυθμίσεις Snapshot Retention ως εξής:

    • Βεβαιωθείτε ότι η επιλογή «Select config» έχει οριστεί σε root.
    • Εισαγάγετε την τιμή 0 για τις επιλογές «Hourly», «Daily», «Weekly», «Monthly» και «Yearly».
    • Απενεργοποιήστε την επιλογή Enable timeline snapshots.
    • Εισαγάγετε την τιμή 10 για την επιλογή Number.
    • Ενεργοποιήστε την επιλογή Snapper cleanup enabled.
    • Κάντε κλικ στο κουμπί Save στην πάνω δεξιά γωνία και επιλέξτε Apply systemd changes στην κάτω δεξιά γωνία. Το snapper-cleanup.timer είναι πλέον ενεργοποιημένο και θα εκκαθαρίζει τα παλιά στιγμιότυπα με βάση τις ρυθμίσεις σας.
  1. Ανοίξτε το Btrfs Assistant:

    Terminal window
    btrfs-assistant-launcher

    Εναλλακτικά:

    Terminal window
    sudo -E btrfs-assistant
  2. Μεταβείτε στην καρτέλα «Snapper Settings»:

  3. Επιλέξτε τα στιγμιότυπα που θέλετε να διαγράψετε από τη λίστα.

  4. Κάντε κλικ στο κουμπί Delete που βρίσκεται στο πάνω μέρος του παραθύρου.

  5. Δημιουργήστε εκ νέου τις καταχωρήσεις του φορτωτή εκκίνησης για να εφαρμοστούν οι αλλαγές:

    systemd-boot
    Terminal window
    sudo sdboot-manage gen
    GRUB
    Terminal window
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    Limine
    Terminal window
    sudo limine-mkinitcpio

Δείτε το επίσημο wiki του εργαλείου για περισσότερες λεπτομέρειες σχετικά με τις δυνατότητές του.

Τώρα που καλύψαμε τι είναι τα στιγμιότυπα Btrfs και τις περιπτώσεις χρήσης τους, ας μιλήσουμε για το πώς μπορούμε να τα διαχειριζόμαστε μέσω ενός εργαλείου, του Snapper, που έχει δημιουργηθεί από τον Arvin Schnell του openSUSE.

Το CachyOS χρησιμοποιεί την εξής διαμόρφωση για το Snapper από προεπιλογή:
# subvolume to snapshot
SUBVOLUME="/"
# filesystem type
FSTYPE="btrfs"
# btrfs qgroup for space aware cleanup algorithms
QGROUP=""
# fraction or absolute size of the filesystems space the snapshots may use
SPACE_LIMIT="0.5"
# fraction or absolute size of the filesystems space that should be free
FREE_LIMIT="0.2"
# users and groups allowed to work with config
ALLOW_USERS=""
ALLOW_GROUPS=""
# sync users and groups from ALLOW_USERS and ALLOW_GROUPS to .snapshots
# directory
SYNC_ACL="no"
# start comparing pre- and post-snapshot in background after creating
# post-snapshot
BACKGROUND_COMPARISON="yes"
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="50"
NUMBER_LIMIT_IMPORTANT="15"
# create hourly snapshots
TIMELINE_CREATE="no"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="5"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"
# cleanup empty pre-post-pairs
EMPTY_PRE_POST_CLEANUP="yes"
# limits for empty pre-post-pair cleanup
EMPTY_PRE_POST_MIN_AGE="1800"

Ακολουθεί μια λίστα με τις πιο συνήθεις εντολές του Snapper.

Λήψη τρέχουσας διαμόρφωσης:
Terminal window
sudo snapper get-config
Παράδειγμα εξόδου:
Terminal window
snapper list-configs
Config Subvolume
───────┼──────────
root /
Λίστα διαθέσιμων στιγμιότυπων και λεπτομέρειες:
Terminal window
sudo snapper list
Παράδειγμα εξόδου:
Terminal window
# │ Type │ Pre # │ Date │ User │ Cleanup │ Description │ Userdata
────┼────────┼───────┼──────────────────────────┼──────┼─────────┼──────────────────────────────────────────────────────────────────────────┼─────────
0 single root current
715 pre Thu 22 Jan 2026 16:14:07 root number pacman -S -y -u --config /etc/pacman.conf --
716 post 715 Thu 22 Jan 2026 16:14:25 root number docker-buildx lilv sof-firmware zed
717 pre Sat 24 Jan 2026 11:19:48 root number pacman -S -y -u --config /etc/pacman.conf --
718 post 717 Sat 24 Jan 2026 11:20:19 root number bpf cachyos-hello cachyos-wallpapers cpupower jdk-openjdk ldb less libev
719 pre Sat 24 Jan 2026 11:20:31 root number pacman -U --config /etc/pacman.conf -- /home/mario/.cache/yay/visual-s
720 post 719 Sat 24 Jan 2026 11:20:36 root number visual-studio-code-bin
721 pre Sat 24 Jan 2026 20:46:40 root number pacman -Syu plasma-login-manager
722 post 721 Sat 24 Jan 2026 20:46:48 root number cmake fastfetch harfbuzz harfbuzz-icu jdk21-openjdk lib32-harfbuzz lib32
723 pre Sat 24 Jan 2026 20:46:53 root number pacman -R sddm-kcm cachyos-themes-sddm sddm
724 post 723 Sat 24 Jan 2026 20:46:56 root number cachyos-themes-sddm sddm sddm-kcm
725 pre Sun 25 Jan 2026 08:05:05 root number pacman -S -y -u --config /etc/pacman.conf --
726 post 725 Sun 25 Jan 2026 08:05:11 root number plasma-login-manager
727 pre Sun 25 Jan 2026 15:55:28 root number pacman -S --config /etc/pacman.conf -- cachyos-extra-znver4/caligula
728 post 727 Sun 25 Jan 2026 15:55:30 root number caligula
  • Ακολουθεί μια περίληψη των στηλών:
    • #: Ο αριθμός που αντιστοιχεί σε ένα στιγμιότυπο και χρησιμοποιείται σε άλλες εντολές.
    • Type: Υποδεικνύει εάν το στιγμιότυπο είναι απομονωμένο (single) ή μέρος ενός ζεύγους pre/post.
      • single: Αυτά τα στιγμιότυπα δεν έχουν καμία ιδιαίτερη σχέση με άλλα στιγμιότυπα.
      • pre: Αυτά τα στιγμιότυπα δημιουργούνται πριν από κάθε είδους αλλαγή του συστήματος (π.χ. επεξεργασία αρχείου ή εγκατάσταση πακέτου).
      • post: Όπως υποδηλώνει το όνομα, αυτά τα στιγμιότυπα δημιουργούνται αφού συμβεί μια αλλαγή του συστήματος. Συνδέονται με τα αντίστοιχα στιγμιότυπα τύπου pre.
    • Pre #: Για στιγμιότυπα τύπου post, αυτή η στήλη αναγράφει τον αριθμό του αντίστοιχου στιγμιότυπου τύπου pre.
    • Date: Η ημερομηνία και ώρα δημιουργίας του στιγμιότυπου.
    • User: Ο χρήστης που δημιούργησε το στιγμιότυπο.
    • Cleanup: Αναφέρει τον αλγόριθμο εκκαθάρισης που ισχύει για το στιγμιότυπο.
      • Διατίθενται διάφοροι αλγόριθμοι εκκαθάρισης στο Snapper, όπως οι number, timeline και empty-pre-post. Σε αυτό το παράδειγμα, χρησιμοποιείται ο αλγόριθμος number, πράγμα που σημαίνει ότι τα παλαιότερα στιγμιότυπα θα διαγράφονται με βάση ένα προκαθορισμένο όριο.
      • timeline: Τα στιγμιότυπα εκκαθαρίζονται ανάλογα με την ηλικία και τη συχνότητά τους.
      • empty-pre-post: Διαγράφει ζεύγη στιγμιότυπων τύπου pre/post που δεν περιέχουν διαφορές.
    • Description: Μια σύντομη περιγραφή του στιγμιότυπου που συχνά υποδεικνύει τον λόγο της δημιουργίας του.
    • Userdata: Περισσότερα δεδομένα, καθορισμένα από τον χρήστη, που σχετίζονται με το στιγμιότυπο.
Δημιουργία νέου στιγμιότυπου:
Terminal window
sudo snapper create --type single --description "Περιγραφή για το στιγμιότυπο"
Τροποποίηση στιγμιότυπου:
Terminal window
sudo snapper modify <επιλογή> <αριθμός_στιγμιότυπου>
Διαθέσιμες επιλογές:
Terminal window
Επιλογές για την εντολή 'modify':
--description, -d <description> Περιγραφή για το στιγμιότυπο.
--cleanup-algorithm, -c <algo> Αλγόριθμος εκκαθάρισης για το στιγμιότυπο.
--userdata, -u <userdata> Δεδομένα χρήστη για το στιγμιότυπο.
--read-only Ρύθμιση του στιγμιότυπου μόνο για ανάγνωση.
--read-write Ρύθμιση του στιγμιότυπου για ανάγνωση και εγγραφή.
--default Ορισμός του στιγμιότυπου ως προεπιλεγμένου.
Παράδειγμα (τροποποίηση της περιγραφής για το στιγμιότυπο 729):
Terminal window
sudo snapper modify 729 --description 'Νέα περιγραφή για το στιγμιότυπο'
Διαγραφή στιγμιότυπων:
Διαγραφή μεμονωμένου στιγμιότυπου:
Terminal window
sudo snapper delete <αριθμός_στιγμιότυπου>
Διαγραφή εύρους στιγμιότυπων:
Terminal window
sudo snapper delete 718-721

Θα διαγραφούν τα στιγμιότυπα 718, 719, 720 και 721.

Επίσημη σελίδα από το εγχειρίδιο του Snapper για τις εντολές

Οδηγός για το αρχείο διαμόρφωσης του Snapper

Οδηγός από το Arch Wiki

Προσαρμογή των ρυθμίσεων εμφάνισης για τα στιγμιότυπα στο Limine

Ενότητα με τίτλο «Προσαρμογή των ρυθμίσεων εμφάνισης για τα στιγμιότυπα στο Limine»
  • Περιορίστε τον αριθμό των στιγμιότυπων που εμφανίζονται στο μενού του φορτωτή εκκίνησης Limine, ώστε να αποφύγετε την ακαταστασία:
  1. Δημιουργήστε ένα αντίγραφο ασφαλείας για το αρχείο διαμόρφωσης του limine-snapper-sync:
    Terminal window
    sudo cp /etc/limine-snapper-sync.conf /etc/limine-snapper-sync.conf.orig
  2. Επεξεργαστείτε το αρχείο διαμόρφωσης του limine-snapper-sync:
    Terminal window
    sudo nano /etc/limine-snapper-sync.conf
    Απόσπασμα αναμενόμενης εξόδου:
    Terminal window
    ### Max Snapshot Entries
    ### Sets the limit for how many snapshot entries show up in the boot menu.
    ### This depends on the size of your FAT32 boot partition and how many different kernel and module versions you want to keep.
    ### A larger FAT32 boot partition allows more snapshot entries.
    MAX_SNAPSHOT_ENTRIES=10
    Προαιρετικά, προσαρμόστε τη μορφή ονομασίας των στιγμιότυπων:
    Terminal window
    ### Snapshot Name Format
    ### Choose a format for how snapshot entries look in the Limine bootloader:
    ### 0. ID=111 2023-12-20 10:59:59 (default)
    ### 1. 111│2023-12-20 10:59:59
    ### 2. 111 │ 2023-12-20 10:59:59
    ### 3. 2023-12-20 10:59:59│111
    ### 4. 2023-12-20 10:59:59 │ 111
    ### 5. 2023-12-20 10:59:59
    ### 6. 111
    ### 7. 111│snapshot description
    ### 8. 2023-12-20 10:59:59│snapshot description
    ### 9. │snapshot description
    SNAPSHOT_FORMAT_CHOICE=8
    Προτείνεται η επιλογή 8 επειδή εμφανίζει την ημερομηνία και την ώρα μαζί με την περιγραφή του στιγμιότυπου.
  3. Αποθηκεύστε το αρχείο και κάντε έξοδο πατώντας τα CTRL+O Enter και CTRL+X.
Limine
  1. Από το μενού του Limine, μεταβείτε στο μενού «Snapshots»:
  2. Επιλέξτε το στιγμιότυπο και τον πυρήνα που θέλετε να επαναφέρετε:
    /_astro/limine-snapshotMenu-2.CH75QBQf.jpg/_astro/limine-snapshotMenu-3.CIT-qChw.jpg
  3. Το σύστημά σας βρίσκεται τώρα σε κατάσταση μόνο για ανάγνωση. Θα εμφανιστεί μια αναδυόμενη ειδοποίηση που θα δηλώνει ότι εντοπίστηκε στιγμιότυπο και θα σας ζητά να κάνετε ανάκτηση:
  4. Κάντε κλικ στο Επαναφορά τώρα (Restore now). Θα ανοίξει ένα παράθυρο τερματικού, όπου θα σας ζητηθεί να επιβεβαιώσετε την ενέργεια:
    Παράδειγμα προτροπής επαναφοράς
    Snapshot ID : 2
    Date : 2026-01-26 11:19:14
    Description : nc-git
    Restore method : replace
    Confirm restore of snapshot 2 using the "replace" method?
    Type [y]es to restore, [l]ist to display all snapshots, or [c]ancel to abort.
    Your input: yes
    Enter a description for the "backup" of the subvolume: @
    Your input: @
  5. Πληκτρολογήστε yes και προσθέστε προαιρετικά μια περιγραφή για το εφεδρικό στιγμιότυπο.
  6. Θα ξεκινήσει η διαδικασία επαναφοράς. Μόλις ολοκληρωθεί, πληκτρολογήστε άλλη μία φορά yes για να επανεκκινήσετε το σύστημά σας:
    Terminal window
    The restore is complete. Please reboot now:
    Type [y]es to reboot, [n]o or [c]ancel to abort rebooting.
    Your input: yes
GRUB
  1. Από το μενού του GRUB, εκκινήστε το επιθυμητό στιγμιότυπο και πυρήνα που θέλετε να επαναφέρετε.

  2. Μόλις γίνει εκκίνηση, ανοίξτε το Btrfs Assistant:

    Terminal window
    btrfs-assistant-launcher

    Εναλλακτικά:

    Terminal window
    sudo -E btrfs-assistant
  3. Μεταβείτε στην καρτέλα «Snapper» → «Browse/Restore» και επιλέξτε το στιγμιότυπο από το οποίο εκτελέσατε εκκίνηση:

  4. Κάντε κλικ στο κουμπί Restore και επανεκκινήστε το σύστημά σας για να εφαρμοστούν οι αλλαγές.