
Όπως γνωρίζετε, αν μπορούν να συμβούν προβλήματα, σίγουρα θα συμβούν. Πιθανώς, όλοι έχουν βιώσει περιπτώσεις όπου ένα νέο σημαντικό αρχείο διαγράφηκε κατά λάθος ή κείμενο επιλέχθηκε και καταστράφηκε κατά λάθος σε ένα πρόγραμμα επεξεργασίας κειμένου.
Εάν είστε πάροχος φιλοξενίας ιστοσελίδων ή κάτοχος ιστοσελίδας, πιθανότατα έχετε αντιμετωπίσει παραβίαση λογαριασμών χρηστών ή της ιστοσελίδας σας. Σε τέτοιες περιπτώσεις, είναι σημαντικό να αποκαταστήσετε τη χρονολογία, να βρείτε τη μέθοδο διείσδυσης και την ευπάθεια που χρησιμοποίησε ο εισβολέας.
Το σύστημα αρχείων NILFS2 είναι ιδανικό για την επίλυση τέτοιων προβλημάτων.
Υπάρχει στον πυρήνα Linux, ξεκινώντας από την έκδοση 2.6.30.
Η ιδιαιτερότητα αυτού του συστήματος αρχείων είναι ότι είναι παρόμοιο με ένα σύστημα ελέγχου εκδόσεων: μπορείτε πάντα να επαναφέρετε την κατάσταση του συστήματος και να δείτε πώς ήταν πριν από λίγο καιρό.
Για να παρέχετε αυτήν τη λειτουργικότητα, δεν χρειάζεται να ρυθμίσετε τις παραμέτρους των σεναρίων Cron, να δημιουργήσετε στιγμιότυπα κ.λπ. Το σύστημα αρχείων NILFS2 τα κάνει όλα μόνο του. Δεν ξαναγράφει ποτέ παλιά δεδομένα και γράφει πάντα σε νέες περιοχές του δίσκου εάν υπάρχει αρκετός ελεύθερος χώρος. Σε πλήρη συμφωνία με την αρχή της αντιγραφής κατά την εγγραφή.
Στην πραγματικότητα, οποιαδήποτε αλλαγή σε ένα αρχείο δημιουργεί αυτόματα ένα νέο στιγμιότυπο του συστήματος αρχείων, επομένως μπορείτε να χρησιμοποιήσετε αυτό το ΛΣ ως χρονομηχανή και να επαναφέρετε την κατάσταση των αρχείων.
Ιστορία
Το NILFS2 αναπτύχθηκε στα έγκατα του , στην πραγματικότητα, το κράτος (έχει πλειοψηφικό πακέτο μετοχών) και η μεγαλύτερη εταιρεία τηλεπικοινωνιών στην Ιαπωνία. Πιο συγκεκριμένα, στο εργαστήριο CyberSpace Laboratories υπό την ηγεσία του .
Δεν είναι γνωστό για ποιο ακριβώς σκοπό αναπτύχθηκε, ωστόσο, μπορεί να υποτεθεί ότι ένα τέτοιο σύστημα διαχείρισης χρόνου, με τη λειτουργικότητα της «μηχανής του χρόνου», είναι ιδανικό για την αποθήκευση δεδομένων που ειδικές υπηρεσίες μπορεί να θέλουν να εξετάσουν προκειμένου να αναπαράγουν ολόκληρη την εικόνα SMS, email κ.λπ.
Το NILFS2 είναι επίσης ένα δυνητικά πολύτιμο εργαλείο για τις υπηρεσίες εσωτερικής ασφάλειας, καθώς σας επιτρέπει να επαναφέρετε όλα τα διαγραμμένα email στη βάση δεδομένων αλληλογραφίας, αποκαλύπτοντας τα λάθη των υπαλλήλων που ενδέχεται αργότερα να προσπαθήσουν να τα συγκαλύψουν διαγράφοντας ή τροποποιώντας τα αρχεία τους.
Πώς μπορώ να παρακολουθήσω ολόκληρο το ιστορικό της αλληλογραφίαςВ Linux Σε διακομιστές (και εδώ θα πρέπει να εγκατασταθεί το NILFS2 για σκοπούς εσωτερικής ασφάλειας), χρησιμοποιείται πολύ συχνά μια μέθοδος αποθήκευσης μηνυμάτων email που βασίζεται σε αρχεία. Η λεγόμενη μορφή Αρκεί να βάλουμε και να ρυθμίσετε την αποθήκευση γραμμάτων στο Maildir. Μια άλλη μορφή είναι ένα μεγάλο αρχείο κειμένου που μπορεί εύκολα να αναλυθεί σε μεμονωμένα μηνύματα.
Εάν ο διακομιστής αλληλογραφίας χρησιμοποιεί μια βάση δεδομένων, το NILFS2 θα σας επιτρέψει να επαναφέρετε τον ακριβή χρόνο των αλλαγών στη βάση δεδομένων και τη δυνατότητα επαναφοράς της βάσης δεδομένων σε οποιαδήποτε από αυτές τις στιγμές. Και στη συνέχεια, θα πρέπει να χρησιμοποιήσετε τα εργαλεία βάσης δεδομένων για να δείτε τι υπήρχε σε αυτήν εκείνη τη χρονική στιγμή...
Ωστόσο, κάτι πήγε στραβά. Είτε η ιαπωνική κυβέρνηση άλλαξε γνώμη σχετικά με την κατασκοπεία των πάντων (κατά την αρχή του Yarovaya), είτε η απόδοση του NILFS2 σε παραδοσιακούς σκληρούς δίσκους ήταν εκτός των ορίων, οπότε το NILFS2 κυκλοφόρησε με την άδεια GPL και γρήγορα έγινε μέρος του πυρήνα. Linux, καθώς οι προγραμματιστές του πυρήνα δεν έχουν ιδιαίτερα παράπονα για τον κώδικα που γράφτηκε από Ιάπωνες με υψηλά προσόντα Linux δεν υπήρχε κανένας.
Πώς είναι το NILFS2;
Όσον αφορά τη χρήση: στο σύστημα ελέγχου εκδόσεων Κάθε σημείο ελέγχου FS είναι μια υποβολή που γίνεται αυτόματα χωρίς τη γνώση του χρήστη για οποιαδήποτε αλλαγή: είτε πρόκειται για διαγραφή, αλλαγή περιεχομένου αρχείου είτε για δικαιώματα πρόσβασης. Κάθε υποβολή έχει έναν αριθμό που αυξάνεται γραμμικά.
Από την οπτική γωνία ενός προγραμματιστή: σε ένα κυκλικό buffer. Το σύστημα αρχείων συσσωρεύει αλλαγές και τις γράφει σε ένα chunk ίσο με περίπου 8 MB (2000 * 4096, όπου 2000 είναι ο αριθμός των στοιχείων σε ένα μπλοκ και 4096 είναι το μέγεθος μιας σελίδας μνήμης). Ολόκληρος ο δίσκος χωρίζεται σε τέτοια chunk. Η εγγραφή είναι διαδοχική. Όταν εξαντληθεί ο ελεύθερος χώρος, τα παλαιότερα στιγμιότυπα διαγράφονται και τα chunk αντικαθίστανται.
Κύρια χαρακτηριστικά του NILFS2
- Δημιουργία εκδόσεων!!!
- Η διαδικασία για την επαναφορά του FS μετά από μια αποτυχία είναι στοιχειώδης: κατά τη φόρτωση, αναζητείται το τελευταίο κομμάτι με το σωστό άθροισμα ελέγχου και εγκαθίσταται ένα superblock σε αυτό. Αυτή είναι μια σχεδόν στιγμιαία λειτουργία.
- Δεδομένου ότι η καταγραφή είναι πάντα γραμμική, τότε:
- μπορεί να δείξει καλά αποτελέσματα κατά την εργασία σε SSD, με αργή τυχαία εγγραφή.
- Το NILFS2 εξοικονομεί πόρους SSD επειδή δεν υπάρχει σχεδόν καθόλου συντελεστής πολλαπλασιασμού εγγραφής.
Πιο συγκεκριμένα, δεν είναι περισσότερο από 2.Το θέμα είναι ότι κατά την κυκλική επανεγγραφή ολόκληρου του δίσκου, το NILFS2 θα μεταφέρει αμετάβλητα δεδομένα σε νέα κομμάτια (chunks).Αν έχουμε 10% αμετάβλητα δεδομένα στον δίσκο, τότε θα έχουμε αύξηση 10% στην εγγραφή με 1 πλήρη επανεγγραφή. Λοιπόν, και αύξηση 50% με 50% πλήρωση συσκευών ανά 1 πλήρη επανεγγραφή δίσκου.
Ο μέγιστος συντελεστής ενίσχυσης εγγραφής είναι 2. Αυτό είναι πολύ μικρό αν σκεφτεί κανείς ότι όλα γράφονται διαδοχικά. Γενικά, η ενίσχυση εγγραφής θα είναι μικρότερη από αυτή ενός κανονικού κατακερματισμένου FS με τομέα 4096 byte. (Η ιδέα προτείνεται από ).
- Πιθανή απλότητα υλοποίησης αναπαραγωγής σε ένα απομακρυσμένο NILFS2 FS
NILFS2 για /home
Τα λειτουργικά συστήματα τύπου Unix συνήθως έχουν έναν φάκελο /home, ο οποίος αποθηκεύει δεδομένα χρήστη. Διάφορα προγράμματα αποθηκεύουν τις ρυθμίσεις τους σε αυτόν τον φάκελο, οι οποίες είναι συγκεκριμένες για έναν συγκεκριμένο χρήστη.
Και ποιος, αν όχι οι χρήστες, κάνει τα λάθη του πιο συχνά; Επομένως, όπως λένε, ο ίδιος ο Θεός διέταξε να χρησιμοποιηθεί το NILFS2 στο /home.
Επιπλέον, με την ευρεία χρήση των SSD, δεν μπορούμε πλέον να ανησυχούμε για μια ισχυρή μείωση κατά τη χρήση συστημάτων αρχείων CoW.
Ναι, μπορούμε να δημιουργούμε στιγμιότυπα FS όσο συχνά θέλουμε τόσο στο ZFS όσο και στο BTRFS, αλλά υπάρχει πάντα ο κίνδυνος να γίνει κάποια αλλαγή σε κάποιο αρχείο μεταξύ των στιγμιότυπων. Και τα στιγμιότυπα πρέπει να διαχειρίζονται: τα παλιά πρέπει να διαγράφονται. Στο NILFS2, όλα αυτά συμβαίνουν αυτόματα, κυριολεκτικά κάθε λίγα δευτερόλεπτα.
Δημιούργησα έναν λογικό τόμο χρησιμοποιώντας το lvcreate (στην ομάδα τόμων nvme, thin pool). Συνιστώ να τον δημιουργήσετε σε έναν τόμο 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. Αν είχα συνδεθεί ως χρήστης μου, ορισμένα προγράμματα θα είχαν ανοίξει sockets και αρχεία στον φάκελο /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 είναι απαραίτητο για τη βελτίωση της απόδοσης, έτσι ώστε κάθε φορά που γίνεται πρόσβαση στα αρχεία, η ώρα atime να μην αλλάζει. Στη συνέχεια, κάνουμε επανεκκίνηση.
Τύποι στιγμιότυπων στο NILFS2.
Ένα κανονικό στιγμιότυπο χωρίς ανοσία στη διαγραφή ονομάζεται σημείο ελέγχου (ή σημείο επαναφοράς).
Μια φωτογραφία με προστασία από αυτόματη διαγραφή ονομάζεται στιγμιότυπο, στο εξής απλώς στιγμιότυπο.
Η προβολή των σημείων ελέγχου γίνεται χρησιμοποιώντας την εντολή lscp.
Προβολή στιγμιότυπων lscp -s
Μπορούμε επίσης να δημιουργήσουμε στιγμιότυπα και σημεία ελέγχου οι ίδιοι ανά πάσα στιγμή χρησιμοποιώντας:
mkcp [-s] устройствоΕπαναφέρουμε δεδομένα.
Το NILFS μας επιτρέπει να προσαρτήσουμε όσα παλιά στιγμιότυπα θέλουμε παράλληλα με την εργασία με τον κύριο κλάδο FS. Αλλά μόνο σε λειτουργία μόνο για ανάγνωση.
Όλα έχουν ρυθμιστεί ως εξής. Τα συνηθισμένα σημεία ελέγχου που δημιουργεί το NILFS2 μπορούν να διαγραφούν αυτόματα από αυτό ανά πάσα στιγμή (όταν εξαντληθεί ο χώρος στο δίσκο ή σύμφωνα με τους κανόνες του nilfs_cleanerd), επομένως πριν από την επεξεργασία πρέπει να μεταφέρουμε το σημείο ελέγχου σε ένα στιγμιότυπο ή, στα Ρωσικά, να διορθώσουμε το στιγμιότυπο.
chcp ss номер_чекпоинтаΜετά από αυτό μπορούμε να προσαρτήσουμε το στιγμιότυπο, για παράδειγμα ως εξής:
mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта Στη συνέχεια, αντιγράφουμε τα ανακτήσιμα αρχεία από το στιγμιότυπο στο /home.
Και στη συνέχεια, αφαιρούμε τη σημαία μη διαγραφής από το στιγμιότυπο, έτσι ώστε στο μέλλον ο αυτόματος συλλέκτης απορριμμάτων να μπορεί να αφαιρέσει τα παρωχημένα δεδομένα:
chcp cp номер_чекпоинтаΒοηθητικά προγράμματα για το NILFS2
Αλλά αυτό είναι ένα πρόβλημα. Ναι, φυσικά, μπορούμε να δημιουργήσουμε ένα ΛΣ, να αλλάξουμε το μέγεθός του online, να δούμε τη λίστα με τα σημεία ελέγχου, να τα δημιουργήσουμε και να τα διαγράψουμε. Το πακέτο nilfs2-utils παρέχει ένα ελάχιστο σύνολο λειτουργιών για κυρίους.
Δεδομένου ότι το NTT έχει μειώσει τη χρηματοδότηση, δεν υπάρχουν γρήγορα βοηθητικά προγράμματα χαμηλού επιπέδου που να σας επιτρέπουν να εμφανίζετε το ιστορικό των αλλαγών στα αρχεία ή να κάνετε διαφορές μεταξύ στιγμιότυπων.
Το βοηθητικό μου πρόγραμμα 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. Κάντε αναπαραγωγή, γρήγορη διαφορά χαμηλού επιπέδου μεταξύ αναθεωρήσεων, ανασύνδεση και άλλα καλούδια!
παραπομπές
.
Αποθετήρια:
.
.
Ενημερωτικά δελτία:
Αναγνωριστικό για τη συνδρομή linux-nilfs.
.
.
.
Ευχαριστώ:
- Προγραμματιστές 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 για μια υπέροχη σειρά ταινιών Η πρώτη φωτογραφία της ανάρτησης είναι από την ταινία "Επιστροφή στο Μέλλον - 3".
- Εταιρείες για υποστήριξη και την ευκαιρία να δημοσιεύσετε στο ιστολόγιό σας στο Habré.
PS Στείλτε τυχόν σφάλματα που παρατηρήσετε σε προσωπικό μήνυμα. Αυξάνω το κάρμα μου για αυτό.
Μπορείτε να πειραματιστείτε με το NILFS2 παραγγέλνοντας μια εικονική μηχανή από με το παρακάτω κουπόνι. Για όλους τους νέους πελάτες, δωρεάν δοκιμαστική περίοδος 3 ημερών.
Πηγή: www.habr.com
