
Som bekant, om nÄgot dÄligt kan hÀnda, sÄ kommer det att hÀnda. Sannolikt har alla varit med om att ett viktigt fil oavsiktligt blivit raderat, eller att text oavsiktligt markerats och raderats i en textredigerare.
Om du Àr en hostingleverantör eller webbplatsÀgare har du sÀkert stött pÄ hackade anvÀndarkonton eller din egen webbplats. I sÄdana fall Àr det viktigt att ÄterstÀlla tidslinjen, hitta ingÄngssÀttet och sÄrbarheten som anvÀndes av gÀrningspersonen.
För att lösa sÄdana problem passar filsystemet NILFS2 utmÀrkt.
Det ingÄr i Linux-kÀrnan sedan version 2.6.30.
En sÀrskiljande faktor för detta filsystem Àr att det liknar versionskontrollsystem: du kan alltid ÄterstÀlla systemets tillstÄnd tillbaka och se hur det var för en tid sedan.
För att sÀkerstÀlla denna funktion behöver du inte stÀlla in Cron-skript, göra snapshots och sÄ vidare. Filsystemet NILFS2 gör allt detta sjÀlv. Det skriver aldrig över gamla data och skriver alltid till nya omrÄden pÄ disken om det finns tillrÀckligt med ledigt diskutrymme. Helt i linje med principen Copy-on-Write.
Faktum Àr att varje Àndring av en fil leder till automatisk skapelse av en ny snapshot av filsystemet, sÄ du kan anvÀnda detta filsystem som en tidsmaskin och gÄ tillbaka till tidigare filers tillstÄnd.
Historien
NILFS2 utvecklades inom , som faktiskt Àr ett statligt företag (det har kontroll över aktiemajoriteten) och Japans största teletjÀnsteföretag. Mer specifikt vid CyberSpace Laboratories under ledning av .
Vad det utvecklades konkret för Àr okÀnt, men man kan anta att ett sÄdant filsystem, med dess funktion som "tidsmaskin" Àr perfekt för att lagra data som sÀkerhetstjÀnster kan tÀnkas vilja grÀva i, för att Äterskapa hela bilden av SMS, e-post och sÄ vidare...
NILFS2 Àr ocksÄ potentiellt ett mycket vÀrdefullt verktyg för interna sÀkerhetstjÀnster, eftersom det möjliggör ÄterstÀllning av alla raderade e-postmeddelanden i databasen, avslöja anstÀllningsbrister som anstÀllda senare kan försöka dölja genom att radera eller Àndra sina filer.
Hur man kan spÄra hela kommunikationshistoriken.I Linux-servrar (dit NILFS2 bör installeras för intern sÀkerhet) anvÀnds ofta en filbaserad metod för lagring av e-postmeddelanden. Den sÄ kallade format . Det rÀcker med att installera och konfigurera lagringen av meddelanden i Maildir. Ett annat format Àr en stor textfil som enkelt kan parsas till separata meddelanden.
Om e-postservern anvÀnder en databas, sÄ kommer NILFS2 att ge möjlighet att ÄterstÀlla den exakta tidslinjen för Àndringar i databasen och ÄterstÀlla databasen till vilket av dessa ögonblick som helst. DÀrefter mÄste man anvÀnda databasverktyg för att se vad som fanns dÀr vid den tidpunkten...
Men nÄgot gick fel. Antingen Àndrade den japanska regeringen sig om att övervaka alla (liknande Jarovys princip), eller sÄ visade sig prestandan hos NILFS2 pÄ traditionella HDD vara mycket lÄg, och NILFS2 slÀpptes under GPL-licens och kom snabbt in i Linux-kÀrnan, eftersom det inte fanns nÄgra sÀrskilda invÀndningar mot koden som skrevs av högutbildade japaner frÄn Linux-kÀrnans utvecklare.
Vad liknar NILFS2?
Ur anvÀndningssynpunkt: som ett versionskontrollsystem. Varje checkpoint i filsystemet Àr en commit som görs automatiskt utan anvÀndarens vetskap vid varje Àndring: vare sig det handlar om borttagning, Àndring av filinnehÄll eller ÄtkomstrÀttigheter. Varje commit har ett nummer som ökar linjÀrt.
Ur programmerarens perspektiv: som en cirkulÀr buffert. Filsystemet samlar förÀndringar och skriver dem till en bit som Àr ungefÀr 8 MB (2000 * 4096, dÀr 2000 Àr antalet element i blocket och 4096 Àr storleken pÄ minnessidan). Hela disken Àr uppdelad i sÄdana bitar. Skrivning sker sekventiellt. NÀr det fria utrymmet tar slut, raderas de Àldsta snapshoten och bitarna skrivs över.
Huvudfördelarna med NILFS2
- Versionshantering!!!
- à terstÀllningsproceduren för filsystemet efter ett fel Àr enkel: vid start söks den senaste biten med giltig kontrollsumma, och superblocket installeras pÄ den. Detta Àr praktiskt taget en omedelbar operation.
- Eftersom skrivningen alltid sker linjÀrt, sÄ:
- kan den visa bra resultat vid arbete pÄ SSD, med lÄngsam slumpmÀssig skrivning.
- NILFS2 sparar resurser pÄ SSD eftersom faktorn för skrivmultiplikation nÀstan Àr obefintlig.
Mer exakt, den Àr inte mer Àn 2.Saken Àr den att vid cyklisk omskrivning av hela disken flyttar NILFS2 oförÀnderliga data till nya block.Om vi har 10% oförÀnderliga data pÄ disken fÄr vi 10% ökad skrivning vid 1 fullstÀndig omskrivning. Och 50% ökning vid 50% fyllning av enheten vid 1 fullstÀndig omskrivning av disken.
Den maximala skrivförstÀrkningsfaktorn Àr 2. Detta Àr mycket lÄgt med tanke pÄ att allt skrivs sekventiellt. Generellt kommer skrivmultipliceringen att vara mindre Àn för ett vanligt fragmenterat filsystem med en sektor pÄ 4096 byte. (Detta vÀcker tankar ).
- Den potentiella enkelheten i att implementera replikering till en fjÀrr-NILFS2-fil
NILFS2 för /home
I Unix-liknande operativsystem finns vanligtvis en mapp /home dÀr anvÀndardata lagras. Olika program sparar sina instÀllningar i denna mapp som rör den specifika anvÀndaren.
Och vem annars Àn anvÀndarna strular till det? SÄ, som man sÀger, Gud har befalt att anvÀnda NILFS2 för /home.
Dessutom, med den breda spridningen av SSD behöver vi inte lÀngre oroa oss för kraftiga nedgÄngar vid anvÀndning av CoW-filsystem.
Ja, vi kan skapa filsystem snapshots hur ofta som helst i ZFS och BTRFS, men det finns alltid en risk att förlorad filÀndring hamnar mellan snapshot:arna. Och snapshots mÄste ocksÄ administreras: radera gamla. I NILFS2 sker allt detta automatiskt, bokstavligen varje nÄgra sekunder.
Jag skapade en logisk volym med hjÀlp av lvcreate (i volymgruppen nvme, tunnt lager). Jag rekommenderar att skapa pÄ en LVM-volym, dÄ den lÀtt kan utökas senare. Jag rekommenderar att ha 50% ledigt utrymme pÄ disken med NILFS2 för anstÀndig versionsdjup.
lvcreate -V10G -T nvme/thin -n homeoch formaterade den i NILFS2:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Börjar skriva systemets initialdata till enheten
Blockstorlek: 4096 Enhet: /dev/nvme/home1 Enhetsstorlek: 10737418240
Filssysteminitialisering lyckades!!
Efter detta mÄste alla data kopieras frÄn den nuvarande /home.
Jag gjorde det direkt efter att ha startat datorn, innan jag loggade in pÄ mitt konto, under anvÀndaren root. Om jag hade loggat in som min anvÀndare skulle nÄgra program ha öppnat sockets och filer i min anvÀndares mapp /home/user, vilket skulle ha gjort en ren kopiering besvÀrlig. Som bekant ligger hemkatalogen för anvÀndaren root vanligtvis pÄ sökvÀgen /root, sÄ inga filer pÄ partitionen /home kommer att öppnas.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome AngÄende den sista raden se. .
DÀrefter redigerar vi /etc/fstab, dÀr filsystemet för /home monteras, till
/dev/disk/by-label/nvme_home /home nilfs2Â Â noatime 0 0
Alternativ noatime Àr nödvÀndigt för att förbÀttra prestandan, sÄ att atime inte Àndras vid varje filÄtkomst. DÀrefter startar vi om.
Typer av snapshots i NILFS2.
En vanlig snapshot utan skydd mot radering kallas checkpoint (checkpoint eller ÄterstÀllningspunkt).
En snapshot med skydd mot automatisk radering kallas snapshot, hÀrefter bara snapshot.
Visning av checkpoints görs med kommandot lscp
Visning av snapshots (snapshots) lscp -s
Vi kan ocksÄ skapa snapshots och checkpoints nÀr som helst med hjÀlp av:
mkcp [-s] enhetà terstÀller data.
NILFS tillÄter oss att montera sÄ mÄnga gamla snapshots som vi vill parallellt med arbetet i huvudgrenen av FS. Men endast i lÀslÀge.
Det Àr ordnat sÄ hÀr. Vanliga checkpoints som NILFS2 gör kan automatiskt tas bort nÀr som helst (nÀr diskutrymme tar slut eller enligt reglerna för nilfs_cleanerd), dÀrför mÄste vi före monteringen konvertera checkpointen till en snapshot eller, pÄ ryska, fasta en snapshot.
chcp ss checkpointnummerEfter detta kan vi montera snapshoten, till exempel sÄ hÀr:
mount -t nilfs2 -r -o cp=checkpointnummer /dev/nvme/home /mnt/nilfs/checkpointnummer Efter det kopierar vi de ÄterstÀllda filerna frÄn snapshoten till /home.
Och senare tar vi bort flaggan för att undvika radering frÄn snapshoten, sÄ att den automatiska skrÀpsamlaren kan ta bort förÄldrad data i framtiden:
chcp cp checkpointnummerVerktyg för NILFS2
Men hÀr Àr det ett problem. Ja, sjÀlvklart kan vi skapa FS, Àndra dess storlek online, visa listan över checkpoints, skapa och ta bort dem. Paketet nilfs2-utils erbjuder en minimal gentleman-set.
Eftersom NTT har dragit tillbaka finansieringen finns det inga snabba lÄg-nivÄ verktyg som gör det möjligt att visa historik över filÀndringar eller göra diff mellan snapshots.
Mitt verktyg n2u
För att fylla detta vakuum skrev jag , som kan ge historik över Àndringar för en specifik fil/directory:
n2u log filnamnUtdatan ser ungefÀr ut sÄ hÀr:
CHECKPOINT DATUM TID TYP STORLEK LĂGE
1787552 2019-11-24 22:08:00 första 7079 cp
1792659 2019-11-25 23:09:05 Àndrad 7081 cpDet fungerar ganska snabbt för det valda implementeringssÀttet: den söker efter skillnader mellan filer med hjÀlp av bisektionsmetoden, monterar snabbt och jÀmför fil/directory i olika snapshots.
Ett intervall av checkpoints kan anges med nyckeln -cp CP1:CP2 eller -cp {Ă
R-MĂ
N-DAG}:{Ă
R-MĂ
N-DAG}.
Det gÄr ocksÄ att se skillnaden mellan checkpoints för en specifik fil eller directory:
n2u diff -r cp1:cp2 filnamnAll histori över förÀndringar kan visas: alla skillnader mellan checkpoints av en viss fil/directory:
n2u blame [-r cp1:cp2] filnamnDatumintervallet stöds ocksÄ i detta kommando.
Anrop till utvecklarna
Det finns mÄnga experter pÄ Habré. Jag ber er, förbÀttra NILFS2. Skapa replikation, lÄg-nivÄ snabb diff mellan revideringar, reflink och andra funktioner!
LĂ€nkar
.
Repository:
.
.
Nyhetsbrev:
. Identifierare för prenumeration linux-nilfs.
.
.
.
Tack:
- Utvecklarna av NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi och Satoshi Moriai. Andra viktiga bidragsgivare Àr: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
- Företagen Amblin Entertainment och Universal Pictures för den fantastiska filmserien . Den första bilden i inlĂ€gget Ă€r hĂ€mtad frĂ„n filmen «Tillbaka till framtiden â 3».
- Företaget för stöd och möjligheten att publicera pÄ sin blogg pÄ Habré.
P.S. Rapportera eventuella upptÀckta fel till mig. Jag ökar din karma för det.
Du kan experimentera med NILFS2 genom att bestÀlla en virtuell maskin hos med kupongen nedan. För alla nya kunder finns det ett gratis testperiod pÄ 3 dagar.
KĂ€lla: habr.com
