Στιγμιότυπα ZFS: Πώς να τα δημιουργήσετε, να τα επαναφέρετε και να τα αυτοματοποιήσετε

10 λεπτά ανάγνωσης - 5 Μαΐου 2026

hero section cover
Πίνακας περιεχομένων
  • Στιγμιότυπα ZFS: Πώς να τα δημιουργήσετε, να τα επαναφέρετε και να τα αυτοματοποιήσετε
  • Πώς λειτουργούν τα στιγμιότυπα ZFS
  • Δημιουργία στιγμιότυπων
  • Επαναφορά από στιγμιότυπα
  • Διαχείριση και κλάδεμα στιγμιότυπων
  • Αυτοματοποίηση της διατήρησης με το Sanoid
  • Αντίγραφα εκτός τόπου εγκατάστασης με zfs send
  • Μια σημείωση σχετικά με την προστασία από ransomware
  • Σύσταση βίντεο
  • Τελικές σκέψεις
Κοινοποίηση

Μάθετε πώς να δημιουργείτε, να επαναφέρετε και να αυτοματοποιείτε στιγμιότυπα ZFS στο Linux. Καλύπτει εντολές, επαναφορά, πολιτικές διατήρησης και αντιγραφή εκτός τόπου με το Sanoid

Στιγμιότυπα ZFS: Πώς να τα δημιουργήσετε, να τα επαναφέρετε και να τα αυτοματοποιήσετε

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

Αυτή η δημοσίευση καλύπτει τον τρόπο λειτουργίας των στιγμιότυπων ZFS, τον τρόπο χρήσης τους και τον τρόπο αυτοματοποίησης της διατήρησης ώστε να μην συσσωρεύονται.

Πώς λειτουργούν τα στιγμιότυπα ZFS

Το ZFS χρησιμοποιεί ένα μοντέλο copy-on-write (CoW). Όταν παίρνετε ένα στιγμιότυπο, το ZFS δεν αντιγράφει δεδομένα. Απλώς καταγράφει την τρέχουσα κατάσταση του δέντρου δεικτών μπλοκ. Οι νέες εγγραφές γίνονται σε ελεύθερα μπλοκ, ενώ το στιγμιότυπο συνεχίζει να αναφέρεται στα πρωτότυπα.

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

Αυτό είναι θεμελιωδώς διαφορετικό από τα εργαλεία δημιουργίας αντιγράφων ασφαλείας σε επίπεδο αρχείων, όπως το rsync ή το tar, τα οποία σαρώνουν και αντιγράφουν ολόκληρα αρχεία. Εάν αλλάξετε 4KB ενός αρχείου 10GB, το rsync αντιγράφει ολόκληρο το αρχείο. Το ZFS αποθηκεύει μόνο το μπλοκ των 4KB.

Τα στιγμιότυπα είναι επίσης αμετάβλητα. Επιβάλλονται ως μόνο για ανάγνωση σε επίπεδο πυρήνα, οπότε οι διεργασίες του χώρου χρήστη (συμπεριλαμβανομένου του ransomware) δεν μπορούν να τα τροποποιήσουν. Σε συνδυασμό με το ενσωματωμένο checksumming του ZFS, αυτό σημαίνει ότι μπορείτε να επαληθεύσετε την ακεραιότητα των δεδομένων κατά την επαναφορά.

Δημιουργία στιγμιότυπων

Προαπαιτούμενα

Θα πρέπει να έχετε εγκαταστήσει το ZFS και να έχετε δημιουργήσει ένα pool. Στο Ubuntu 20.04+:

sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfs

Δημιουργήστε μια δεξαμενή. Για ένα μόνο δίσκο (τυπικά σε ένα VPS): Για ένα μόνο δίσκο (τυπικά σε ένα VPS):

sudo zpool create tank /dev/sdb

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

sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2

Ενεργοποιήστε τη συμπίεση (το LZ4 είναι γρήγορο και αποτελεσματικό):

sudo zfs set compression=lz4 tank

Στη συνέχεια, δημιουργήστε σύνολα δεδομένων για τους φόρτους εργασίας σας:

sudo zfs create tank/web
sudo zfs create tank/databases

Λήψη στιγμιότυπου

Η βασική εντολή:

sudo zfs snapshot tank/web@before-update

Για ονόματα με χρονοσφραγίδα (χρήσιμο με cron): Για ονόματα με χρονοσφραγίδα (χρήσιμο με cron):

sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)

Για τη σύλληψη όλων των συνόλων δεδομένων-παιδιών ταυτόχρονα, χρησιμοποιήστε την αναδρομική σημαία:

sudo zfs snapshot -r tank@daily_backup

Επαλήθευση με:

sudo zfs list -t snapshot

Επαναφορά από στιγμιότυπα

Επαναφορά μεμονωμένων αρχείων

Κάθε σύνολο δεδομένων ZFS έχει έναν κρυφό κατάλογο .zfs/snapshot στο σημείο προσάρτησης. Δεν θα εμφανίζεται στο ls, αλλά μπορείτε να πλοηγηθείτε απευθείας σε αυτόν:

ls /tank/web/.zfs/snapshot/before-update/

Για να επαναφέρετε ένα μεμονωμένο αρχείο:

cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/

Η σημαία -p διατηρεί τα δικαιώματα και τις χρονοσφραγίδες.

Επαναφορά ολόκληρου συνόλου δεδομένων

Εάν πρέπει να επαναφέρετε τα πάντα, για παράδειγμα μετά από μια αποτυχημένη αναβάθμιση:

sudo zfs rollback tank/web@before-update

Αυτό είναι σχεδόν στιγμιαίο επειδή το ZFS ενημερώνει τους δείκτες μπλοκ αντί να αντιγράφει δεδομένα. Αλλά είναι καταστροφικό: όλες οι αλλαγές που έγιναν μετά το στιγμιότυπο χάνονται μόνιμα.

Εάν υπάρχουν νεότερα στιγμιότυπα μεταξύ του στόχου και της τρέχουσας κατάστασης, το ZFS θα μπλοκάρει την επαναφορά. Χρησιμοποιήστε την επιλογή -r για να την εξαναγκάσετε και να αφαιρέσετε αυτά τα ενδιάμεσα στιγμιότυπα:

sudo zfs rollback -r tank/db@20260426_090000

Μια καλή συνήθεια: δημιουργήστε στιγμιότυπο της τρέχουσας (χαλασμένης) κατάστασης πριν από την επαναφορά, ώστε να έχετε μια εφεδρική λύση αν χρειαστεί.

Μέθοδος ανάκτησηςΤαχύτηταΚίνδυνος απώλειας δεδομένωνΚαλύτερα για
Επαναφορά αρχείων μέσω .zfsΕξαρτάται από το μέγεθος του αρχείουΚανέναΤυχαίες διαγραφές, ανάκτηση μεμονωμένων αρχείων
Πλήρης επαναφοράΆμεσηΥψηλή (χάνει όλες τις αλλαγές μετά το στιγμιότυπο)Αποτυχημένες αναβαθμίσεις, προβλήματα σε όλο το σύστημα
Κλωνοποίηση για δοκιμέςΆμεσηΚαμία (δημιουργεί ένα παράλληλο σύνολο δεδομένων)Επαλήθευση πριν από τη δέσμευση επαναφοράς

Διαχείριση και κλάδεμα στιγμιότυπων

Τα στιγμιότυπα ξεκινούν με μηδενικό μέγεθος αλλά αυξάνονται καθώς τα ζωντανά δεδομένα αλλάζουν κάτω από αυτά. Για να ελέγξετε τη χρήση του χώρου:

zfs list -t snapshot -o name,used,refer,creation

Η στήλη USED δείχνει πόσος χώρος είναι μοναδικός για το συγκεκριμένο στιγμιότυπο. Η στήλη REFER δείχνει το συνολικό μέγεθος του συνόλου δεδομένων κατά τη λήψη του στιγμιότυπου.

Για να διαγράψετε ένα στιγμιότυπο:

sudo zfs destroy tank/web@before-update

Μπορείτε επίσης να διαγράψετε με βάση το μοτίβο:

sudo zfs destroy tank/web@daily-2026-04-%

Πάντα να εκτελείτε πρώτα μια δοκιμαστική εκτέλεση:

sudo zfs destroy -nv tank/web@daily-%

Το ZFS μπορεί τεχνικά να χειριστεί εκατομμύρια στιγμιότυπα, αλλά η απόδοση υποβαθμίζεται μετά από μερικές χιλιάδες ανά σύνολο δεδομένων. Εντολές όπως zfs list και zfs destroy επιβραδύνουν αισθητά. Διατηρήστε τη διατήρηση σφιχτά.

Αυτοματοποίηση της διατήρησης με το Sanoid

Το Sanoid είναι το τυπικό εργαλείο για την αυτοματοποίηση της δημιουργίας και του κλαδέματος στιγμιότυπων ZFS. Ορίζετε πολιτικές διατήρησης στο sanoid.conf και αυτό αναλαμβάνει τα υπόλοιπα.

Μια τυπική διαμόρφωση παραγωγής μπορεί να μοιάζει ως εξής:

Τύπος φόρτου εργασίαςΩριαίαΚαθημερινάΕβδομαδιαίαΜηνιαίος
Τυπική παραγωγή24-4830812
Βάση δεδομένων (υψηλή εναλλαγή)72301224
Καταγραφές / χαμηλής προτεραιότητας12-24703
Στατικά μέσα0703

Το Sanoid υποστηρίζει επίσης υποωριακά στιγμιότυπα μέσω της παραμέτρου frequently. Η ρύθμιση frequently = 96 και frequent_period = 15 σας δίνει ένα στιγμιότυπο κάθε 15 λεπτά.

Προγραμματίστε το Sanoid μέσω cron να εκτελείται κάθε λεπτό ή κάθε 15 λεπτά και θα δημιουργεί και θα κλαδεύει αυτόματα στιγμιότυπα.

Αντίγραφα εκτός τόπου εγκατάστασης με zfs send

Τα στιγμιότυπα σε έναν μόνο διακομιστή προστατεύουν από τυχαίες αλλαγές και αποτυχίες λογισμικού, αλλά όχι από απώλεια υλικού. Για το σκοπό αυτό, κάντε αντιγραφή εκτός τοποθεσίας χρησιμοποιώντας zfs send και zfs receive μέσω SSH:

zfs send tank/web@backup | ssh user@remote zfs receive backup/web

Για αυξητικές μεταφορές (αποστολή μόνο όσων έχουν αλλάξει από το τελευταίο στιγμιότυπο):

zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/web

Το συνοδευτικό εργαλείο του Sanoid, syncoid, αυτοματοποιεί αυτή τη διαδικασία και χειρίζεται τις αυξητικές αποστολές, την αποκατάσταση σφαλμάτων και την καταγραφή.

Μια σημείωση σχετικά με την προστασία από ransomware

Τα στιγμιότυπα ZFS είναι μόνο για ανάγνωση σε επίπεδο πυρήνα, πράγμα που σημαίνει ότι το τυπικό κακόβουλο λογισμικό δεν μπορεί να τα τροποποιήσει ή να τα κρυπτογραφήσει. Αυτό είναι ένα ισχυρό επίπεδο άμυνας. Αλλά δεν είναι αλεξίσφαιρο: αν ένας εισβολέας αποκτήσει πρόσβαση root, μπορεί να διαγράψει στιγμιότυπα πριν κρυπτογραφήσει τα δεδομένα σας.

Τα στιγμιότυπα πρέπει να αποτελούν ένα επίπεδο μιας ευρύτερης στρατηγικής. Συνδυάστε τα με την εκτός τόπου αντιγραφή, την περιορισμένη πρόσβαση root και την ασφάλεια σε επίπεδο δικτύου. Μην βασίζεστε μόνο στα στιγμιότυπα.

Σύσταση βίντεο

Τελικές σκέψεις

Τα στιγμιότυπα ZFS είναι γρήγορα, αποδοτικά ως προς τον χώρο και απλά στη χρήση όταν κατανοήσετε τα βασικά. Δεν αντικαθιστούν τα off-site αντίγραφα ασφαλείας, αλλά καλύπτουν ένα κενό που δεν μπορούν να καλύψουν τα παραδοσιακά εργαλεία δημιουργίας αντιγράφων ασφαλείας: στιγμιαία, μηδενικά σημεία ανάκτησης που μπορείτε να λαμβάνετε όσο συχνά χρειάζεστε.

Αν εκτελείτε ZFS σε έναν VPS ή αποκλειστικό διακομιστή, ρυθμίστε το Sanoid, ορίστε μια πολιτική διατήρησης και αυτοματοποιήστε την αντιγραφή. Χρειάζονται 30 λεπτά για τη διαμόρφωση και εξοικονομείτε ώρες όταν κάτι πάει στραβά. Δοκιμάστε το σε έναν FDC VPS ή dedicated server.

Blog

Προτεινόμενα αυτή την εβδομάδα

Περισσότερα άρθρα
Στιγμιότυπα ZFS: Πώς να τα δημιουργήσετε, να τα επαναφέρετε και να τα αυτοματοποιήσετε

Στιγμιότυπα ZFS: Πώς να τα δημιουργήσετε, να τα επαναφέρετε και να τα αυτοματοποιήσετε

Μάθετε πώς να δημιουργείτε, να επαναφέρετε και να αυτοματοποιείτε στιγμιότυπα ZFS στο Linux. Καλύπτει εντολές, επαναφορά, πολιτικές διατήρησης και αντιγραφή εκτός τόπου με το Sanoid

10 λεπτά ανάγνωσης - 5 Μαΐου 2026

Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Redis σε ένα VPS

9 λεπτά ανάγνωσης - 7 Ιανουαρίου 2026

Περισσότερα άρθρα
background image

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη