
Wie Sie wissen, wird es passieren, wenn Probleme auftreten können. Wahrscheinlich hatten alle Fälle, in denen versehentlich eine neue wichtige Datei gelöscht oder der Text in einem Texteditor versehentlich ausgewählt und gelöscht wurde.
Wenn Sie der Hoster oder der Eigentümer der Website sind, wurden wahrscheinlich Benutzerkonten oder Ihre Website gehackt. In solchen Fällen ist es wichtig, die Chronologie wiederherzustellen, einen Durchdringungsweg und die vom Angreifer verwendete Schwachstelle zu finden.
Um solche Probleme zu lösen, ist das NILFS2-Dateisystem perfekt.
Es ist seit Version 2.6.30 im Linux-Kernel vorhanden.
Ein Merkmal dieses Dateisystems ist, dass es einem Versionskontrollsystem ähnelt: Sie können jederzeit den Status des Systems zurücksetzen und nachsehen, wie er vor einiger Zeit war.
Um diese Funktionalität bereitzustellen, müssen Sie keine Cron-Skripte konfigurieren, Snapshots erstellen usw. Das NILFS2-Dateisystem erledigt dies ganz alleine. Sie überschreibt niemals alte Daten und schreibt immer in neue Bereiche der Festplatte, wenn genügend freier Speicherplatz vorhanden ist. In voller Übereinstimmung mit dem Prinzip des Copy-on-Write.
Tatsächlich erfordert jede Änderung an der Datei die automatische Erstellung eines neuen Schnappschusses des Dateisystems, sodass Sie dieses Dateisystem als Zeitmaschine verwenden und den Status der Dateien zurückspulen können.
Die Geschichte

NILFS2 wurde in den Därmen der
Nippon Telegraph and Telephone Corporation entwickelt , in der Tat des Staates (es hat eine Mehrheitsbeteiligung) und des größten Telekommunikationsunternehmens in Japan. Insbesondere die CyberSpace Laboratories unter der Leitung von
Ryusuke Konishi .
Warum es speziell entwickelt wurde - es ist jedoch nicht bekannt, dass ein solches FS mit seiner „Zeitmaschinen“ -Funktionalität ideal zum Speichern von Daten geeignet ist, in die Sie möglicherweise tiefer in spezielle Dienste eintauchen möchten, um das gesamte Bild von SMS, E-Mails usw. abzuspielen.
NILFS2 ist möglicherweise auch ein sehr wertvolles Tool für interne Sicherheitsdienste, da Sie alle gelöschten Briefe in der Mail-Datenbank wiederherstellen und die Pfosten von Mitarbeitern öffnen können, die anschließend versuchen können, sie durch Löschen oder Ändern ihrer Dateien zu verschleiern.
Wie kann ich die gesamte Korrespondenzgeschichte nachvollziehen?Unter Linux wird auf Servern (und aus Sicherheitsgründen sollte NILFS2 dort abgelegt werden) häufig eine Dateimethode zum Speichern von E-Mails zum Speichern von E-Mail-Nachrichten verwendet. Das sogenannte
Maildir- Format. Es reicht aus,
Courier Mail Server zu installieren und die Speicherung von Briefen in Maildir zu konfigurieren. Ein weiteres
Mbox- Format ist eine große Textdatei, die leicht in einzelne Nachrichten zerlegt werden kann.
Wenn der Mailserver die Datenbank verwendet, ermöglicht NILFS2 die Wiederherstellung des genauen Zeitpunkts der Datenbankänderungen und die Wiederherstellung der Datenbank an einem dieser Punkte. Und dann müssen Sie die Datenbanktools verwenden, um zu sehen, was sich zu diesem Zeitpunkt darin befand ...
Es ist jedoch ein Fehler aufgetreten. Entweder hat die japanische Regierung beschlossen, nicht allen zu folgen (nach dem A-la-Spring-Prinzip), oder die Leistung von NILFS2 auf herkömmlichen Festplatten fiel geringer aus als die des Baseboards, und NILFS2 wurde unter der GPL-Lizenz veröffentlicht und trat sehr schnell in den Linux-Kernel ein, da es spezielle Beschwerden über den geschriebenen Code gab Hochqualifiziertes Japanisch hatten die Linux-Kernel-Entwickler nicht.
Wie sieht NILFS2 aus?
Aus Sicht der Nutzung: Auf dem Versionskontrollsystem
SVN . Jeder FS-Prüfpunkt ist ein Festschreiben, das automatisch ohne Wissen des Benutzers bei jeder Änderung durchgeführt wird: ob es sich um Löschen, Ändern des Inhalts einer Datei oder Zugriffsrechte handelt. Jedes Commit hat eine Zahl, die linear ansteigt.
Aus Sicht des Programmierers: auf einem Ringpuffer. Das Dateisystem speichert die Änderungen und schreibt sie auf eine Größe von etwa 8 MB (2048 * 4096, wobei 2048 die Anzahl der Elemente im Block und 4096 die Größe der Speicherseite ist). Die gesamte Scheibe ist in solche Stücke unterteilt. Die Aufnahme erfolgt nacheinander. Wenn der freie Speicherplatz erschöpft ist, werden die ältesten Bilder gelöscht und Blöcke überschrieben.
Grundlegende NILFS2-Brötchen
- Versionierung !!!
- Das Verfahren zum Wiederherstellen eines Dateisystems nach einem Fehler ist elementar: Beim Laden wird nach dem letzten Block gesucht, der die richtige Prüfsumme aufweist, und ein Superblock wird darauf installiert. Dies ist fast eine Sofortoperation.
- Aufgrund der Tatsache, dass die Aufzeichnung immer linear verläuft, gilt:
- kann bei der Arbeit an SSDs mit langsamer Zufallsaufnahme gute Ergebnisse erzielen.
- NILFS2 spart SSD-Ressourcen, da es fast keinen Datensatzmultiplikator gibt.
Genauer ist es nicht mehr als 2.Tatsache ist, dass NILFS2 während des zyklischen Überschreibens der gesamten Festplatte unveränderliche Daten auf neue Teile (Chunks) überträgt.
Wenn 10% der unveränderten Daten auf der Festplatte gespeichert sind, wird die Aufzeichnung mit 1 vollständigen Überschreibvorgang um 10% erhöht. Nun, eine 50% ige Steigerung bei einem zu 50% vollen Gerät für ein vollständiges Neuschreiben der Festplatte.
Der maximale Aufnahmegewinn beträgt 2. Dies ist sehr gering, wenn man bedenkt, dass alles sequentiell geschrieben wird. Im Allgemeinen ist die Animation des Datensatzes geringer als die eines regulären fragmentierten Dateisystems mit einem Sektor von 4096 Bytes. (Kommentierte Gedanken).
- Mögliche einfache Replikation auf einen Remote-NILFS2-FS
NILFS2 für / home
In Unix-ähnlichen Betriebssystemen gibt es in der Regel einen Ordner / home, in dem Benutzerdaten gespeichert sind. Verschiedene Programme speichern ihre benutzerbezogenen Einstellungen in diesem Ordner.
Und wer, wenn nicht Benutzer, mäht am häufigsten? Wie sie sagen, hat Gott daher selbst befohlen, NILFS2 on / home zu verwenden.
Darüber hinaus können wir uns angesichts der weit verbreiteten Verbreitung von SSDs keine Sorgen über den starken Rückgang bei der Verwendung von CoW-Dateisystemen machen.
Ja, wir können in ZFS und BTRFS so oft FS-Snapshots erstellen, wie wir möchten. Es besteht jedoch immer die Gefahr, dass zwischen den Snapshots eine Dateiänderung verloren geht. Und die Bilder müssen noch verwaltet werden: Löschen Sie die alten. In NILFS2 geschieht dies alle paar Sekunden automatisch.
Ich habe mit lvcreate ein logisches Volume erstellt (in der Volume-Gruppe nvme Thin Thin Pool). Ich empfehle, es auf dem Lvm-Volume zu erstellen, da es später problemlos erweitert werden kann. Ich empfehle, mit NILFS2 50% freien Speicherplatz für eine angemessene Versionstiefe zu haben.
lvcreate -V10G -T nvme/thin -n home
und formatiert es in 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 !!
Danach müssen Sie alle Daten aus dem aktuellen / home kopieren.
Ich habe dies unmittelbar nach dem Booten des Computers und vor dem Eingeben meines Kontos vom Root-Benutzer aus getan. Wenn ich mich als Benutzer anmelden würde, würden einige Programme Sockets und Dateien im Ordner / home / user meines Benutzers öffnen, was das Kopieren erschweren würde. Wie Sie wissen, befindet sich der Basisordner für den Root-Benutzer normalerweise im Pfad / root, sodass im Abschnitt / home keine Dateien geöffnet werden.
mkdir /mnt/newhome mount -t nilfs2 /dev/nvme/home /mnt/newhome cp -a /home/. /mnt/newhome
Die letzte Zeile finden Sie im Artikel .
Bearbeiten Sie als Nächstes / etc / fstab, in das das Dateisystem für / home eingehängt wird
/dev/disk/by-label/nvme_home /home nilfs2 noatime 0 0
Die Option
noatime
benötigt, um die Leistung zu verbessern, damit sich atime nicht bei jedem Dateizugriff ändert. Als nächstes starten wir neu.
Arten von Bildern in NILFS2.
Ein normaler Schnappschuss ohne Löschimmunität wird als Prüfpunkt (Prüfpunkt oder Wiederherstellungspunkt) bezeichnet.
Ein Schnappschuss mit automatischem Löschschutz wird als Schnappschuss und dann nur als Schnappschuss bezeichnet.
Das Anzeigen von Kontrollpunkten erfolgt mit dem Befehl lscp
Schnappschüsse anzeigen lscp -s
Wir können jederzeit selbst Snapshots und Checkpoints erstellen, indem wir Folgendes verwenden:
mkcp [-s]
Daten wiederherstellen.
Mit NILFS können wir parallel zur Arbeit mit dem FS-Hauptzweig so viele alte Bilder mounten, wie wir benötigen. Aber nur im Lesemodus.
Alles ist so angeordnet. Die von NILFS2 üblichen Checkpoints können jederzeit automatisch gelöscht werden (wenn der Speicherplatz erschöpft ist oder nach den Regeln von nilfs_cleanerd). Daher müssen wir den Checkpoint vor dem Mounten in einen Snapshot umwandeln oder das Bild auf Russisch korrigieren.
chcp ss _
Danach können wir den Schnappschuss zum Beispiel wie folgt mounten:
mount -t nilfs2 -r -o cp=_ /dev/nvme/home /mnt/nilfs/_
Dann kopieren wir die wiederhergestellten Dateien vom Snapshot nach / home.
Und dann entfernen wir die Markierung der Ununterscheidbarkeit aus dem Bild, damit der automatische Garbage Collector in Zukunft veraltete Daten löschen kann:
chcp cp _
Dienstprogramme für NILFS2
Aber das ist das Problem. Ja, natürlich können wir ein Dateisystem erstellen, seine Größe online ändern, eine Liste der Kettenpunkte anzeigen, erstellen und löschen. Das Paket nilfs2-utils bietet ein minimales Gentleman-Set.
Seit NTT die Finanzierung gekürzt hat, gibt es keine schnellen, einfachen Dienstprogramme, die den Verlauf von Dateiänderungen anzeigen und Unterschiede zwischen Snapshots herstellen können.
Mein n2u Dienstprogramm
Um diese
Lücke zu schließen , habe ich
mein n2u-Dienstprogramm geschrieben , das den Änderungsverlauf einer bestimmten Datei / eines bestimmten Verzeichnisses anzeigen kann:
n2u log filename
Die Ausgabe sieht ungefähr so aus:
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
Für die gewählte Implementierungsmethode funktioniert es recht schnell: Mithilfe der Bisektionsmethode werden Unterschiede zwischen Dateien gesucht, und die Datei / das Verzeichnis wird schnell in verschiedenen Images geladen und verglichen.
Sie können den Bereich der Checkpoints mit dem
-cp CP1:CP2
Schlüssel
-cp CP1:CP2
oder
-cp {YEAR-MM-DD}:{YEAR-MM-DD}
.
Sie können auch den Unterschied zwischen den Prüfpunkten für eine bestimmte Datei oder ein bestimmtes Verzeichnis sehen:
n2u diff -r cp1:cp2 filename
Sie können die gesamte Chronologie der Änderungen anzeigen: alle Unterschiede zwischen den Prüfpunkten einer bestimmten Datei / eines bestimmten Verzeichnisses:
n2u blame [-r cp1:cp2] filename
Der Datumsbereich in diesem Befehl wird ebenfalls unterstützt.
Schreie zu den Entwicklern
Es gibt viele Spezialisten auf Habré. Bitte beenden Sie NILFS2. Machen Sie Replikation, Low-Level-Fast-Diff zwischen Revisionen, Reflink und anderen Extras!
Referenzen
Offizielle NILFS-Website .
Repositories:
NILFS2 .
NILFS2 Dienstprogramme und Module .
Newsletter:
NILFS2-Entwickler-E-Mail . Die Kennung für das Linux-Nilfs-Abonnement.
Newsletter-Archiv .
Nilfs_cleanerd Konfigurationsanleitung .
Vergleichende Leistungstests von EXT4, Btrfs, XFS und NILFS2 .
Danksagung:
- NILFS2-Entwickler: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi und Satoshi Moriai. Andere wichtige Mitwirkende sind: 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 und Universal Pictures für ihre wundervolle Filmreihe "Back to the Future". Das erste Bild des Beitrags stammt aus dem Film "Back to the Future - 3".
- RUVDS-Unternehmen für ihre Unterstützung und die Möglichkeit, auf ihrem Blog auf Habré zu veröffentlichen.
PS Direkte Fehler, die Sie in PM bemerken. Ich erhöhe das Karma dafür.
Sie können mit NILFS2 experimentieren, indem Sie bei RUVDS eine virtuelle Maschine für den unten stehenden Gutschein bestellen. Für alle Neukunden eine kostenlose Probezeit von 3 Tagen.
