NILFS2 - een kogelvrij bestandssysteem voor /home

NILFS2 - een kogelvrij bestandssysteem voor /home

Zoals u weet: als er problemen kunnen optreden, zal dit zeker gebeuren. Waarschijnlijk heeft iedereen wel eens gevallen gehad waarin een recent belangrijk bestand per ongeluk werd gewist, of tekst per ongeluk werd geselecteerd en vernietigd in een teksteditor.

Als u een host of website-eigenaar bent, heeft u waarschijnlijk te maken gehad met het hacken van gebruikersaccounts of uw website. In dergelijke gevallen is het belangrijk om de chronologie te herstellen, de toegangsmethode en de door de aanvaller gebruikte kwetsbaarheid te achterhalen.

Het NILFS2-bestandssysteem is perfect voor het oplossen van dergelijke problemen.

Het is sinds versie 2.6.30 aanwezig in de Linux-kernel.

De eigenaardigheid van dit bestandssysteem is dat het vergelijkbaar is met een versiebeheersysteem: je kunt altijd de status van het systeem terugdraaien en kijken hoe het een tijdje geleden was.

Om deze functionaliteit te bieden, hoeft u geen Cron-scripts te configureren, snapshots te maken, enz. Het NILFS2-bestandssysteem doet dit allemaal zelf. Het overschrijft nooit oude gegevens en schrijft altijd naar nieuwe delen van de schijf als er voldoende vrije schijfruimte is. Geheel volgens het Copy-on-Write principe.

In feite creëert elke wijziging aan een bestand automatisch een nieuwe momentopname van het bestandssysteem, zodat u deze FS als tijdmachine kunt gebruiken en de status van bestanden kunt terugspoelen.

Verhaal

NILFS2 - een kogelvrij bestandssysteem voor /homeNILFS2 is ontwikkeld in de diepten van Nippon Telegraaf en Telefoon CorporationIn feite is het staatsbedrijf (het heeft een controlerend belang) en het grootste telecommunicatiebedrijf in Japan. Meer specifiek in de CyberSpace Laboratories onder leiding Ryusuke Konishi.

Waar het precies voor is ontwikkeld is onbekend, maar er kan van worden uitgegaan dat zo’n FS, met zijn ‘tijdmachine’-functionaliteit, ideaal is voor het opslaan van gegevens waar de inlichtingendiensten zich misschien in willen verdiepen om het hele beeld van de situatie opnieuw te kunnen weergeven. Sms'jes, e-mails, enz....

NILFS2 is potentieel ook een zeer waardevol hulpmiddel voor interne veiligheidsdiensten, omdat u hiermee alle verwijderde brieven in de maildatabase kunt herstellen, waardoor de stijlen van werknemers zichtbaar worden die deze vervolgens kunnen proberen te verbergen door hun bestanden te verwijderen of te wijzigen.

Hoe kunt u uw volledige correspondentiegeschiedenis bijhouden?Op Linux-servers (en dit is waar NILFS2 moet worden geïnstalleerd voor interne beveiligingsdoeleinden) wordt de bestandsmethode voor het opslaan van e-mails heel vaak gebruikt om e-mailberichten op te slaan. Het zogenaamde formaat maildir. Genoeg om te plaatsen Koerier Mail Server en configureer e-mailopslag in Maildir. Ander formaat mbox is een groot tekstbestand dat gemakkelijk in afzonderlijke berichten kan worden geparseerd.

Als de mailserver een database gebruikt, maakt NILFS2 het mogelijk om de exacte timing van databasewijzigingen te herstellen en de mogelijkheid om de database op elk van deze momenten te herstellen. En dan moet je databasetools gebruiken om te zien wat er op dat moment in zat...

Er ging echter iets mis. Ofwel veranderde de Japanse overheid van gedachten over het monitoren van iedereen (a la het Yarovaya-principe), ofwel bleken de prestaties van NILFS2 op traditionele harde schijven onder de maat, en werd NILFS2 uitgebracht onder de GPL-licentie en kwam zeer snel in de Linux-kernel terecht, aangezien er waren geen specifieke klachten over de code die in hooggekwalificeerd Japans was geschreven, de ontwikkelaars van de Linux-kernel hadden deze niet.

Hoe ziet NILFS2 eruit?

Vanuit gebruiksoogpunt: op een versiebeheersysteem SVN. Elk FS-controlepunt is een commit die automatisch wordt gemaakt zonder medeweten van de gebruiker wanneer er enige wijziging plaatsvindt: of het nu gaat om verwijdering, wijziging van de inhoud van een bestand of wijziging van toegangsrechten. Elke commit heeft een getal dat lineair toeneemt.

Vanuit het oogpunt van een programmeur: een circulaire buffer. Het bestandssysteem verzamelt de wijzigingen en schrijft deze in een blok van ongeveer 8 MB (2000 * 4096, waarbij 2000 het aantal elementen in het blok is en 4096 de grootte van de geheugenpagina). De hele schijf is in dergelijke stukken verdeeld. De opname verloopt opeenvolgend. Wanneer de vrije ruimte opraakt, worden de oudste snapshots verwijderd en worden de chunks overschreven.

Basis NILFS2-goodies

  • Versiebeheer!!!
  • De procedure voor het herstellen van een bestandssysteem na een fout is eenvoudig: bij het laden wordt gezocht naar het laatste deel met de juiste controlesom en wordt er een superblok op geïnstalleerd. Dit is een vrijwel onmiddellijke operatie.
  • Omdat de opname altijd lineair verloopt, geldt het volgende:
    • kan goede resultaten laten zien bij gebruik op een SSD met langzame willekeurige schrijfbewerkingen.
    • NILFS2 bespaart SSD-bronnen, omdat er vrijwel geen schrijfvermenigvuldigingsfactor is.
      Om precies te zijn, het is niet meer dan 2.Het is een feit dat NILFS2 bij het cyclisch herschrijven van de hele schijf onveranderlijke gegevens naar nieuwe stukken (chunks) zal overbrengen.

      Als we 10% onveranderlijke gegevens op de schijf hebben, krijgen we een schrijftoename van 10% bij 1 volledige herschrijving. Welnu, een toename van 50% bij 50% volheid van het apparaat voor 1 volledige herschrijving van de schijf.

      De maximale schrijfversterking is 2. Dit is erg laag gezien het feit dat alles opeenvolgend wordt geschreven. Over het algemeen zal de schrijfanimatie minder zijn dan die van een conventioneel gefragmenteerd bestandssysteem met een sector van 4096 bytes. (Gedachte geïnspireerd door opmerking).

  • Potentieel implementatiegemak van replicatie naar een externe NILFS2 FS

NILFS2 voor /home

In Unix-achtige besturingssystemen is er in de regel een map /home waarin gebruikersgegevens worden opgeslagen. Diverse programma's slaan in deze map hun gebruikersspecifieke instellingen op.

En wie, zo niet gebruikers, maakt het vaakst fouten? Daarom, zoals ze zeggen, heeft God zelf het gebruik van NILFS2 op /home bevolen.

Bovendien hoeven we ons, dankzij het wijdverbreide gebruik van SSD's, niet langer zorgen te maken over ernstige problemen bij het gebruik van CoW-bestandssystemen.

Ja, we kunnen FS-snapshots zo vaak maken als we willen in ZFS en BTRFS, maar er is altijd een risico dat een verloren bestandswijziging tussen de snapshots terechtkomt. En de foto's moeten nog beheerd worden: oude moeten verwijderd worden. In NILFS2 gebeurt dit allemaal automatisch, letterlijk elke paar seconden.

Ik heb een logisch volume gemaakt met behulp van lvcreate (in de nvme-volumegroep, thin pool thin). Ik raad aan om het op het lvm-volume te maken, omdat het later gemakkelijk kan worden uitgebreid. Ik raad aan om 50% vrije schijfruimte te hebben met NILFS2 voor een behoorlijke versiediepte.

lvcreate -V10G -T nvme/thin -n home

en geformatteerd 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 !!

Hierna moet u alle gegevens van de huidige /home kopiëren.

Ik deed dit onmiddellijk nadat ik de computer had opgestart, voordat ik inlogde op mijn account, als rootgebruiker. Als ik zou inloggen als mijn gebruiker, zouden sommige programma's sockets en bestanden openen in de map /home/user van mijn gebruiker, wat een schone kopie moeilijk zou maken. Zoals u weet bevindt de thuismap voor de rootgebruiker zich meestal op het /root-pad, zodat er geen bestanden op de /home-partitie worden geopend.

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

Voor de laatste regel, zie статью.

Vervolgens bewerken we /etc/fstab, waarin het bestandssysteem voor /home is aangekoppeld, naar

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

optie noatime nodig om de prestaties te verbeteren, zodat de tijd niet verandert bij elke bestandstoegang. Vervolgens starten we opnieuw op.

Soorten afbeeldingen in NILFS2.

Een reguliere momentopname zonder immuniteit voor verwijdering wordt een controlepunt of herstelpunt genoemd.
Een momentopname die is beveiligd tegen automatisch verwijderen, wordt een momentopname genoemd en is dan eenvoudigweg een momentopname.

Het bekijken van controlepunten gebeurt met behulp van de opdracht lscp

Bekijk momentopnamen lscp -s

We kunnen op elk moment zelf snapshots en controlepunten maken met behulp van:

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

Wij herstellen gegevens.

Met NILFS kunnen we zoveel oude snapshots mounten als we willen, parallel aan het werken met de hoofdtak van FS. Maar alleen in leesmodus.

Alles is zo geregeld. Reguliere controlepunten die NILFS2 maakt, kunnen op elk moment automatisch worden verwijderd (wanneer de schijfruimte opraakt of volgens de nilfs_cleanerd-regels), dus vóór de installatie moeten we het controlepunt omzetten in een momentopname of, in het Russisch gesproken, de momentopname vastleggen.

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

Daarna kunnen we de snapshot bijvoorbeeld als volgt mounten:

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

Daarna kopiëren we de herstelde bestanden van de snapshot naar /home.
En vervolgens verwijderen we de niet-verwijderbare vlag uit de momentopname, zodat de automatische garbage collector in de toekomst verouderde gegevens kan verwijderen:

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

Hulpprogramma's voor NILFS2

Maar dit is het probleem. Ja, natuurlijk kunnen we een bestandssysteem maken, de grootte ervan online wijzigen, de lijst met uitdagingspunten bekijken, deze aanmaken en verwijderen. Het nilfs2-utils-pakket biedt een minimale herenset.

Omdat NTT zijn financiering heeft ingeperkt, zijn er geen snelle hulpprogramma's op laag niveau waarmee je de geschiedenis van bestandswijzigingen kunt weergeven of onderscheid kunt maken tussen snapshots.

Mijn n2u-hulpprogramma

Om dit vacuüm op te vullen schreef ik uw n2u-hulpprogramma, die de geschiedenis van wijzigingen in een specifiek bestand/map kan weergeven:

n2u log filename

De uitvoer is ongeveer zo:

          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

Het werkt vrij snel voor de gekozen implementatiemethode: het zoekt naar verschillen tussen bestanden met behulp van de bisectiemethode, waarbij het bestand/de map snel wordt gemount en vergeleken in verschillende snapshots.

Met de toets kunt u een reeks controlepunten instellen -cp CP1:CP2 of -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

U kunt ook het verschil zien tussen controlepunten voor een specifiek bestand of map:

n2u diff -r cp1:cp2 filename

U kunt de volledige chronologie van de wijzigingen weergeven: alle verschillen tussen de controlepunten van een specifiek bestand/map:

n2u blame [-r cp1:cp2] filename

Datuminterval in deze opdracht wordt ook ondersteund.

Een schreeuw aan de ontwikkelaars

Er zijn veel specialisten op Habré. Maak NILFS2 af. Maak replicatie, snel verschil op laag niveau tussen revisies, reflink en andere goodies!

referenties

Officiële NILFS-website.

Opslagplaatsen:
NILFS2.
NILFS2-hulpprogramma's en modules.

Nieuwsbrieven:
E-mailnieuwsbrief voor NILFS2-ontwikkelaars. ID voor Linux-Nilfs-abonnement.
Nieuwsbriefarchief.

nilfs_cleanerd installatiehandleiding.
Benchmarking van EXT4-, Btrfs-, XFS- en NILFS2-prestatietests.

Thanks:

  • NILFS2-ontwikkelaars: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi en Satoshi Moriai. Andere belangrijke bijdragen zijn: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Aan Amblin Entertainment en Universal Pictures voor een prachtige filmreeks. "Terug naar de toekomst". De eerste foto van het bericht is afkomstig uit de film “Back to the Future 3”.
  • vennootschap RUVDS voor ondersteuning en de mogelijkheid om op uw blog op Habré te publiceren.

PS Stuur eventuele fouten die u opmerkt in een privébericht. Ik verhoog mijn karma hiervoor.

U kunt experimenteren met NILFS2 door een virtuele machine te bestellen bij RUVDS met onderstaande kortingsbon. Voor alle nieuwe klanten geldt een gratis proefperiode van 3 dagen.

NILFS2 - een kogelvrij bestandssysteem voor /home

Bron: www.habr.com

Voeg een reactie