Το NILFS2 είναι ένα αλεξίσφαιρο σύστημα αρχείων για το /home

Το NILFS2 είναι ένα αλεξίσφαιρο σύστημα αρχείων για το /home

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

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

Το σύστημα αρχείων NILFS2 είναι τέλειο για την επίλυση τέτοιων προβλημάτων.

Υπάρχει στον πυρήνα του Linux από την έκδοση 2.6.30.

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

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

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

Ιστορία

Το NILFS2 είναι ένα αλεξίσφαιρο σύστημα αρχείων για το /homeΤο NILFS2 αναπτύχθηκε στα βάθη του Nippon Telegraph and Telephone Corporation, μάλιστα, η κρατική (έχει το μερίδιο ελέγχου) και η μεγαλύτερη εταιρεία τηλεπικοινωνιών στην Ιαπωνία. Πιο συγκεκριμένα στα Εργαστήρια Κυβερνοχώρου υπό την ηγεσία Ryusuke Konishi.

Για ποιο σκοπό ακριβώς αναπτύχθηκε είναι άγνωστο, ωστόσο, μπορεί να υποτεθεί ότι ένα τέτοιο FS, με τη λειτουργικότητα της «χρονομηχανής» του, είναι ιδανικό για την αποθήκευση δεδομένων στα οποία οι υπηρεσίες πληροφοριών μπορεί να θέλουν να σκάψουν για να επαναλάβουν ολόκληρη την εικόνα του SMS, email κ.λπ....

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

Πώς μπορείτε να παρακολουθείτε ολόκληρο το ιστορικό αλληλογραφίας σας;Σε διακομιστές Linux (και εδώ θα πρέπει να εγκατασταθεί το NILFS2 για λόγους εσωτερικής ασφάλειας), η μέθοδος αρχείων αποθήκευσης email χρησιμοποιείται πολύ συχνά για την αποθήκευση μηνυμάτων email. Η λεγόμενη μορφή Maildir. Αρκετά να βάλουμε Διακομιστής αλληλογραφίας Courier και ρυθμίστε την αποθήκευση αλληλογραφίας στο Maildir. Άλλη μορφή mbox είναι ένα μεγάλο αρχείο κειμένου που μπορεί εύκολα να αναλυθεί σε μεμονωμένα μηνύματα.

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

Ωστόσο, κάτι πήγε στραβά. Είτε η ιαπωνική κυβέρνηση άλλαξε γνώμη σχετικά με την παρακολούθηση όλων (α λα η αρχή Yarovaya), είτε η απόδοση του NILFS2 σε παραδοσιακούς σκληρούς δίσκους αποδείχθηκε κατώτερη και το NILFS2 κυκλοφόρησε με την άδεια GPL και πολύ γρήγορα μπήκε στον πυρήνα του Linux, αφού Δεν υπήρχαν ιδιαίτερα παράπονα σχετικά με τον κώδικα που γράφτηκε με υψηλά προσόντα Ιαπωνικά, οι προγραμματιστές του πυρήνα Linux δεν τον είχαν.

Πώς είναι το NILFS2;

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

Από τη σκοπιά ενός προγραμματιστή: ένα κυκλικό buffer. Το σύστημα αρχείων συγκεντρώνει αλλαγές και τις εγγράφει σε ένα κομμάτι ίσο με περίπου 8 MB (2000 * 4096, όπου 2000 είναι ο αριθμός των στοιχείων στο μπλοκ και 4096 είναι το μέγεθος της σελίδας μνήμης). Ολόκληρος ο δίσκος χωρίζεται σε τέτοια κομμάτια. Η ηχογράφηση προχωρά διαδοχικά. Όταν εξαντληθεί ο ελεύθερος χώρος, τα παλαιότερα στιγμιότυπα διαγράφονται και τα κομμάτια αντικαθίστανται.

Βασικά καλούδια NILFS2

  • Έκδοση!!!
  • Η διαδικασία για την επαναφορά ενός συστήματος αρχείων μετά από μια αποτυχία είναι απλή: κατά τη φόρτωση, αναζητείται το τελευταίο κομμάτι που έχει το σωστό άθροισμα ελέγχου και εγκαθίσταται ένα superblock σε αυτό. Αυτή είναι μια σχεδόν στιγμιαία λειτουργία.
  • Λόγω του γεγονότος ότι η εγγραφή προχωρά πάντα γραμμικά, τότε:
    • μπορεί να δείξει καλά αποτελέσματα όταν εκτελείται σε SSD με αργές τυχαίες εγγραφές.
    • Το NILFS2 εξοικονομεί πόρο SSD, καθώς δεν υπάρχει σχεδόν κανένας συντελεστής πολλαπλασιασμού εγγραφής.
      Πιο συγκεκριμένα, δεν είναι περισσότερο από 2.Το γεγονός είναι ότι κατά την κυκλική επανεγγραφή ολόκληρου του δίσκου, το NILFS2 θα μεταφέρει αμετάβλητα δεδομένα σε νέα κομμάτια (κομμάτια).

      Αν έχουμε 10% αμετάβλητα δεδομένα στο δίσκο, τότε θα έχουμε 10% αύξηση εγγραφής με 1 πλήρη επανεγγραφή. Λοιπόν, αύξηση 50% στο 50% πληρότητα της συσκευής για 1 πλήρη επανεγγραφή του δίσκου.

      Το μέγιστο κέρδος εγγραφής είναι 2. Αυτό είναι πολύ χαμηλό δεδομένου ότι όλα γράφονται διαδοχικά. Γενικά, το κινούμενο σχέδιο εγγραφής θα είναι μικρότερο από αυτό ενός συμβατικού κατακερματισμένου συστήματος αρχείων με τομέα 4096 byte. (Σκέψη εμπνευσμένη από σχόλιο).

  • Πιθανή ευκολία υλοποίησης της αναπαραγωγής σε απομακρυσμένο NILFS2 FS

NILFS2 για /home

Σε λειτουργικά συστήματα που μοιάζουν με Unix, κατά κανόνα, υπάρχει ένας φάκελος /home στον οποίο αποθηκεύονται τα δεδομένα χρήστη. Διάφορα προγράμματα αποθηκεύουν τις ρυθμίσεις του χρήστη σε αυτόν τον φάκελο.

Και ποιος, αν όχι οι χρήστες, κάνει λάθη πιο συχνά; Επομένως, όπως λένε, ο ίδιος ο Θεός διέταξε τη χρήση του NILFS2 στο /home.

Επιπλέον, με την ευρεία χρήση των SSD, δεν χρειάζεται πλέον να ανησυχούμε για σοβαρά προβλήματα κατά τη χρήση συστημάτων αρχείων CoW.

Ναι, μπορούμε να δημιουργήσουμε στιγμιότυπα FS όσο συχνά θέλουμε στο ZFS και στο BTRFS, αλλά υπάρχει πάντα ο κίνδυνος μια χαμένη αλλαγή αρχείου να καταλήξει μεταξύ των στιγμιότυπων. Και οι φωτογραφίες πρέπει ακόμα να διαχειρίζονται: οι παλιές πρέπει να διαγραφούν. Στο NILFS2, όλα αυτά συμβαίνουν αυτόματα, κυριολεκτικά κάθε λίγα δευτερόλεπτα.

Δημιούργησα έναν λογικό τόμο χρησιμοποιώντας το lvcreate (στην ομάδα τόμου nvme, thin pool thin). Συνιστώ να το δημιουργήσετε στον τόμο lvm, καθώς μπορεί να επεκταθεί εύκολα αργότερα. Συνιστώ να έχετε 50% ελεύθερο χώρο στο δίσκο με το NILFS2 για αξιοπρεπές βάθος έκδοσης.

lvcreate -V10G -T nvme/thin -n home

και το μορφοποίησαν σε NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Μετά από αυτό, πρέπει να αντιγράψετε όλα τα δεδομένα από το τρέχον /home.

Το έκανα αμέσως μετά την εκκίνηση του υπολογιστή, πριν συνδεθώ στον λογαριασμό μου, ως χρήστης root. Εάν επρόκειτο να συνδεθώ ως χρήστης μου, ορισμένα προγράμματα θα άνοιγαν υποδοχές και αρχεία στο φάκελο /home/user του χρήστη μου, κάτι που θα δυσκόλευε το καθαρό αντίγραφο. Όπως γνωρίζετε, ο αρχικός φάκελος για τον χρήστη root βρίσκεται συνήθως στη διαδρομή /root, επομένως δεν ανοίγουν αρχεία στο διαμέρισμα /home.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Για την τελευταία γραμμή, βλ ένα άρθρο.

Στη συνέχεια επεξεργαζόμαστε το /etc/fstab, στο οποίο είναι προσαρτημένο το σύστημα αρχείων για το /home

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

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

Τύποι εικόνων στο NILFS2.

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

Η προβολή των σημείων ελέγχου γίνεται χρησιμοποιώντας την εντολή lscp

Προβολή στιγμιότυπων lscp -s

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

mkcp [-s] устройство

Επαναφέρουμε δεδομένα.

Το NILFS μας επιτρέπει να προσαρτήσουμε όσα παλιά στιγμιότυπα θέλουμε παράλληλα με την εργασία με τον κύριο κλάδο FS. Αλλά μόνο σε λειτουργία ανάγνωσης.

Όλα τακτοποιούνται έτσι. Τα κανονικά σημεία ελέγχου που δημιουργεί το NILFS2 μπορούν να διαγραφούν αυτόματα ανά πάσα στιγμή (όταν εξαντληθεί ο χώρος στο δίσκο ή σύμφωνα με τους κανόνες nilfs_cleanrd), επομένως πριν από την εγκατάσταση πρέπει να μετατρέψουμε το σημείο ελέγχου σε στιγμιότυπο ή, στα ρωσικά, να τραβήξουμε το στιγμιότυπο.

chcp ss номер_чекпоинта

Μετά από αυτό, μπορούμε να προσαρτήσουμε το στιγμιότυπο, για παράδειγμα, ως εξής:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

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

chcp cp номер_чекпоинта

Βοηθητικά προγράμματα για το NILFS2

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

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

Το βοηθητικό πρόγραμμα n2u μου

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

n2u log filename

Η έξοδος είναι κάπως έτσι:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

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

Μπορείτε να ορίσετε μια σειρά από σημεία ελέγχου χρησιμοποιώντας το κλειδί -cp CP1:CP2 ή -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

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

n2u diff -r cp1:cp2 filename

Μπορείτε να εμφανίσετε ολόκληρο το χρονικό των αλλαγών: όλες τις διαφορές μεταξύ των σημείων ελέγχου ενός συγκεκριμένου αρχείου/καταλόγου:

n2u blame [-r cp1:cp2] filename

Το διάστημα ημερομηνιών σε αυτήν την εντολή υποστηρίζεται επίσης.

Μια κραυγή στους προγραμματιστές

Υπάρχουν πολλοί ειδικοί στο Habré. Τελειώστε το NILFS2. Κάντε αναπαραγωγή, γρήγορη διαφορά χαμηλού επιπέδου μεταξύ αναθεωρήσεων, επανασύνδεσης και άλλων καλούδια!

παραπομπές

Επίσημος ιστότοπος NILFS.

Αποθετήρια:
NILFS2.
Βοηθητικά προγράμματα και μονάδες NILFS2.

Ενημερωτικά δελτία:
Ενημερωτικό δελτίο ηλεκτρονικού ταχυδρομείου για προγραμματιστές NILFS2. Αναγνωριστικό για συνδρομή linux-nilfs.
Αρχείο ενημερωτικών δελτίων.

Οδηγός εγκατάστασης nilfs_cleanard.
Συγκριτική αξιολόγηση EXT4, Btrfs, XFS & NILFS2 δοκιμές απόδοσης.

Ευχαριστώ:

  • Προγραμματιστές NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi και Satoshi Moriai. Άλλοι σημαντικοί συντελεστές είναι οι: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Στην Amblin Entertainment και την Universal Pictures για μια υπέροχη σειρά ταινιών. "Επιστροφή στο μέλλον". Η πρώτη φωτογραφία της ανάρτησης είναι τραβηγμένη από την ταινία "Back to the Future 3".
  • Εταιρείες RUVDS για υποστήριξη και την ευκαιρία να δημοσιεύσετε στο ιστολόγιό σας στο Habré.

PS Στείλτε τυχόν σφάλματα που παρατηρήσετε σε προσωπικό μήνυμα. Αυξάνω το κάρμα μου για αυτό.

Μπορείτε να πειραματιστείτε με το NILFS2 παραγγέλνοντας μια εικονική μηχανή από RUVDS με το κουπόνι παρακάτω. Για όλους τους νέους πελάτες υπάρχει δωρεάν δοκιμαστική περίοδος 3 ημερών.

Το NILFS2 είναι ένα αλεξίσφαιρο σύστημα αρχείων για το /home

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο