NILFS2 - et skudsikkert filsystem til /home

NILFS2 - et skudsikkert filsystem til /home

Som du ved, hvis der kan ske problemer, vil det helt sikkert ske. Sandsynligvis har alle haft tilfælde, hvor en nylig vigtig fil ved et uheld blev slettet, eller tekst ved et uheld blev valgt og ødelagt i en teksteditor.

Hvis du er hoster eller webstedsejer, så er du sandsynligvis stødt på hacking af brugerkonti eller din hjemmeside. I sådanne tilfælde er det vigtigt at gendanne kronologien, finde indtastningsmetoden og den sårbarhed, som angriberen bruger.

NILFS2-filsystemet er perfekt til at løse sådanne problemer.

Den har været til stede i Linux-kernen siden version 2.6.30.

Det særlige ved dette filsystem er, at det ligner et versionskontrolsystem: du kan altid rulle systemets tilstand tilbage og se på, hvordan det var for noget tid siden.

For at give denne funktionalitet behøver du ikke konfigurere Cron-scripts, tage snapshots osv. NILFS2-filsystemet gør dette helt af sig selv. Den overskriver aldrig gamle data og skriver altid til nye områder på disken, hvis der er nok ledig diskplads. I fuld overensstemmelse med Copy-on-Write-princippet.

Faktisk opretter enhver ændring af en fil automatisk et nyt snapshot af filsystemet, så du kan bruge denne FS som en tidsmaskine og spole filernes tilstand tilbage.

Story

NILFS2 - et skudsikkert filsystem til /homeNILFS2 blev udviklet i dybden af Nippon Telegraph and Telephone Corporationfaktisk det statsejede (det har en kontrollerende andel) og det største teleselskab i Japan. Mere specifikt i CyberSpace Laboratories under ledelse Ryusuke Konishi.

Hvad det præcist er udviklet til er uvist, dog kan det antages, at sådan en FS med sin "tidsmaskine" funktionalitet er ideel til at gemme data, som efterretningstjenesterne måtte have lyst til at grave i for at afspille hele billedet af SMS, e-mails osv....

NILFS2 er også potentielt et meget værdifuldt værktøj til interne sikkerhedstjenester, da det giver dig mulighed for at gendanne alle slettede breve i maildatabasen, hvilket afslører jambs af medarbejdere, som efterfølgende kan forsøge at skjule dem ved at slette eller ændre deres filer.

Hvordan kan du spore hele din korrespondancehistorik?På Linux-servere (og det er her NILFS2 skal installeres af interne sikkerhedsformål), bruges filmetoden til lagring af e-mails meget ofte til at gemme e-mails. Det såkaldte format Maildir. Nok at sætte Courier Mail Server og konfigurere postlagring i Maildir. Andet format mbox er en stor tekstfil, der nemt kan parses til individuelle beskeder.

Hvis mailserveren bruger en database, vil NILFS2 gøre det muligt at gendanne den nøjagtige timing af databaseændringer og muligheden for at gendanne databasen på et hvilket som helst af disse tidspunkter. Og så skal du bruge databaseværktøjer til at se, hvad der var i den på det tidspunkt...

Der gik dog noget galt. Enten ændrede den japanske regering mening om at overvåge alle (a la Yarovaya-princippet), eller også viste NILFS2's ydeevne på traditionelle harddiske at være under pari, og NILFS2 blev udgivet under GPL-licensen og kom meget hurtigt ind i Linux-kernen, da der var ingen særlige klager over koden skrevet højt kvalificeret japansk, udviklerne af Linux-kernen havde det ikke.

Hvordan er NILFS2?

Fra et brugssynspunkt: på et versionskontrolsystem SVN. Hvert FS-kontrolpunkt er en commit, der foretages automatisk uden brugerens viden, når der er nogen ændring: det være sig sletning, ændring af indholdet af en fil eller ændring af adgangsrettigheder. Hver commit har et tal, der stiger lineært.

Fra en programmørs synspunkt: en cirkulær buffer. Filsystemet akkumulerer ændringer og skriver dem i en del svarende til ca. 8 MB (2000 * 4096, hvor 2000 er antallet af elementer i blokken og 4096 er størrelsen på hukommelsessiden). Hele disken er opdelt i sådanne bidder. Optagelsen fortsætter sekventielt. Når ledig plads løber tør, slettes de ældste snapshots, og bidderne overskrives.

Grundlæggende NILFS2 godbidder

  • Versionering!!!
  • Proceduren til at gendanne et filsystem efter en fejl er enkel: Ved indlæsning søges den sidste del, der har den korrekte kontrolsum, og en superblok installeres på den. Dette er en næsten øjeblikkelig operation.
  • På grund af det faktum, at optagelsen altid forløber lineært, så:
    • kan vise gode resultater, når du kører på en SSD med langsomme tilfældige skrivninger.
    • NILFS2 sparer SSD-ressourcer, da der næsten ikke er nogen skrivemultiplikationsfaktor.
      Mere præcist er det ikke mere end 2.Faktum er, at når man cyklisk omskriver hele disken, vil NILFS2 overføre uforanderlige data til nye stykker (chunks).

      Hvis vi har 10% uændrede data på disken, vil vi få en 10% skrivestigning med 1 komplet omskrivning. Nå, en stigning på 50 % ved 50 % fylde af enheden for 1 komplet omskrivning af disken.

      Den maksimale skriveforstærkning er 2. Dette er meget lavt i betragtning af, at alt skrives sekventielt. Generelt vil skriveanimationen være mindre end for et konventionelt fragmenteret filsystem med en 4096-byte sektor. (Tanke inspireret af kommentar).

  • Potentiel nem implementering af replikering til en fjern NILFS2 FS

NILFS2 for /hjem

I Unix-lignende operativsystemer er der som udgangspunkt en /home-mappe, hvori brugerdata er gemt. Forskellige programmer gemmer deres brugerspecifikke indstillinger i denne mappe.

Og hvem, hvis ikke brugere, laver oftest fejl? Derfor, som de siger, beordrede Gud selv brugen af ​​NILFS2 på /home.

Desuden, med den udbredte brug af SSD'er, behøver vi nu ikke længere at bekymre os om alvorlige nedtræk, når vi bruger CoW-filsystemer.

Ja, vi kan lave FS-snapshots, så ofte vi vil i ZFS og BTRFS, men der er altid en risiko for, at en tabt filændring ender mellem snapshotsene. Og billederne mangler stadig at blive administreret: gamle skal slettes. I NILFS2 sker alt dette automatisk, bogstaveligt talt med få sekunders mellemrum.

Jeg oprettede en logisk volumen ved hjælp af lvcreate (i nvme volumengruppen, thin pool thin). Jeg anbefaler at oprette det på lvm-volumenet, da det nemt kan udvides senere. Jeg anbefaler at have 50 % ledig diskplads med NILFS2 for en anstændig versionsdybde.

lvcreate -V10G -T nvme/thin -n home

og formaterede den i 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 !!

Herefter skal du kopiere alle data fra det nuværende /home.

Jeg gjorde dette umiddelbart efter opstart af computeren, før jeg loggede ind på min konto, som root-bruger. Hvis jeg skulle logge på som min bruger, ville nogle programmer åbne sockets og filer i min brugers /home/user-mappe, hvilket ville gøre en ren kopi vanskelig. Som du ved, er hjemmemappen for root-brugeren normalt placeret på /root-stien, så der åbnes ingen filer på /home-partitionen.

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

For den sidste linje, se en artikel.

Dernæst redigerer vi /etc/fstab, hvori filsystemet for /home er monteret, til

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

valgmulighed noatime nødvendig for at forbedre ydeevnen, så tidspunktet ikke ændres med hver filadgang. Dernæst genstarter vi.

Typer af billeder i NILFS2.

Et almindeligt øjebliksbillede uden immunitet mod sletning kaldes et kontrolpunkt eller gendannelsespunkt.
Et snapshot, der er beskyttet mod automatisk sletning, kaldes et snapshot, derefter blot et snapshot.

Visning af kontrolpunkter udføres ved hjælp af lscp-kommandoen

Se snapshots lscp -s

Vi kan selv oprette snapshots og checkpoints til enhver tid ved hjælp af:

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

Vi gendanner data.

NILFS giver os mulighed for at montere så mange gamle snapshots, som vi ønsker, parallelt med arbejdet med FS-hovedgrenen. Men kun i læsetilstand.

Alt er arrangeret sådan. Regelmæssige checkpoints, som NILFS2 laver, kan automatisk slettes når som helst (når diskplads løber tør eller i henhold til nilfs_cleanerd reglerne), så før installationen skal vi konvertere checkpointet til et snapshot eller, på russisk talt, fange snapshottet.

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

Derefter kan vi montere snapshotet, for eksempel sådan:

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

Hvorefter vi kopierer de gendannede filer fra snapshot til /home.
Og efterfølgende fjerner vi det ikke-sletbare flag fra snapshotet, så den automatiske skraldeopsamler i fremtiden kan fjerne forældede data:

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

Hjælpeprogrammer til NILFS2

Men dette er problemet. Ja, selvfølgelig kan vi oprette et filsystem, ændre dets størrelse online, se listen over udfordringspunkter, oprette og slette dem. Nilfs2-utils-pakken giver et minimalt herresæt.

Da NTT har indskrænket sin finansiering, er der ingen hurtige hjælpeprogrammer på lavt niveau, der giver dig mulighed for at vise historikken for filændringer eller foretage forskelle mellem snapshots.

Mit n2u-værktøj

For at udfylde dette tomrum skrev jeg dit n2u-værktøj, som kan vise historikken for ændringer til en bestemt fil/mappe:

n2u log filename

Outputtet er noget som dette:

          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

Det virker ret hurtigt for den valgte implementeringsmetode: det leder efter forskelle mellem filer ved hjælp af opdelingsmetoden, monterer hurtigt og sammenligner filen/biblioteket i forskellige snapshots.

Du kan indstille en række kontrolpunkter ved hjælp af tasten -cp CP1:CP2 eller -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Du kan også se forskellen mellem kontrolpunkter for en bestemt fil eller mappe:

n2u diff -r cp1:cp2 filename

Du kan vise hele kronologien af ​​ændringer: alle forskellene mellem kontrolpunkterne for en specifik fil/mappe:

n2u blame [-r cp1:cp2] filename

Datointerval i denne kommando er også understøttet.

Et råb til udviklerne

Der er mange specialister på Habré. Afslut venligst NILFS2. Lav replikering, hurtig forskel på lavt niveau mellem revisioner, reflink og andre godbidder!

RЎSЃS <P "RєRё

Officiel NILFS hjemmeside.

Opbevaringssteder:
NILFS2.
NILFS2 hjælpeprogrammer og moduler.

Nyhedsbreve:
E-mail nyhedsbrev til NILFS2 udviklere. ID for linux-nilfs abonnement.
Nyhedsbrevs arkiv.

nilfs_cleanerd opsætningsvejledning.
Benchmarking af EXT4, Btrfs, XFS & NILFS2 Performance Tests.

Tak:

  • NILFS2-udviklere: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi og Satoshi Moriai. Andre store bidragydere er: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Til Amblin Entertainment og Universal Pictures for en vidunderlig serie af film. "Tilbage til fremtiden". Det første billede af indlægget er taget fra filmen "Back to the Future 3".
  • selskab RUVDS for støtte og mulighed for at publicere på din blog på Habré.

PS Send venligst eventuelle fejl du bemærker i en privat besked. Jeg øger min karma for dette.

Du kan eksperimentere med NILFS2 ved at bestille en virtuel maskine fra RUVDS med kuponen nedenfor. For alle nye kunder er der en gratis prøveperiode på 3 dage.

NILFS2 - et skudsikkert filsystem til /home

Kilde: www.habr.com

Tilføj en kommentar