NILFS2 és un sistema de fitxers a prova de bales per a /home

NILFS2 és un sistema de fitxers a prova de bales per a /home

Com sabeu, si poden passar problemes, definitivament passaran. Probablement, tothom ha tingut casos en què s'ha esborrat accidentalment un fitxer important recent o s'ha seleccionat i destruït un text accidentalment en un editor de text.

Si sou un hoster o propietari d'un lloc web, probablement us heu trobat amb la pirateria dels comptes d'usuari o del vostre lloc web. En aquests casos, és important restaurar la cronologia, trobar el mètode d'entrada i la vulnerabilitat utilitzada per l'atacant.

El sistema de fitxers NILFS2 és perfecte per resoldre aquests problemes.

Ha estat present al nucli Linux des de la versió 2.6.30.

La particularitat d'aquest sistema de fitxers és que és semblant a un sistema de control de versions: sempre podeu revertir l'estat del sistema i veure com era fa un temps.

Per proporcionar aquesta funcionalitat, no cal que configureu scripts Cron, feu instantànies, etc. El sistema de fitxers NILFS2 ho fa tot sol. Mai sobreescriu les dades antigues i sempre escriu a noves àrees del disc si hi ha prou espai lliure al disc. D'acord amb el principi de còpia sobre escriptura.

De fet, qualsevol canvi a un fitxer crea automàticament una nova instantània del sistema de fitxers, de manera que podeu utilitzar aquest FS com a màquina del temps i rebobinar l'estat dels fitxers.

Història

NILFS2 és un sistema de fitxers a prova de bales per a /homeNILFS2 es va desenvolupar a les profunditats de Nippon Telegraph and Telephone Corporation, de fet, l'estatal (té una participació de control) i la major empresa de telecomunicacions del Japó. Més concretament, als Laboratoris CyberSpace sota la direcció Ryusuke Konishi.

Es desconeix exactament per a què va ser desenvolupat, però es pot suposar que aquest FS, amb la seva funcionalitat de "màquina del temps", és ideal per emmagatzemar dades que els serveis d'intel·ligència poden voler investigar per reproduir tota la imatge de SMS, correus electrònics, etc...

NILFS2 també és potencialment una eina molt valuosa per als serveis de seguretat interna, ja que permet recuperar totes les cartes suprimides a la base de dades de correu, revelant els brancals dels empleats que posteriorment poden intentar dissimular-los esborrant o canviant els seus fitxers.

Com podeu fer un seguiment de tot el vostre historial de correspondència?Als servidors Linux (i aquí és on s'ha d'instal·lar NILFS2 per a finalitats de seguretat interna), el mètode de fitxer per emmagatzemar correus electrònics s'utilitza molt sovint per emmagatzemar missatges de correu electrònic. L'anomenat format Maildir. Suficient per posar Servidor de correu de missatgeria i configureu l'emmagatzematge de correu a Maildir. Un altre format mbox és un fitxer de text gran que es pot analitzar fàcilment en missatges individuals.

Si el servidor de correu utilitza una base de dades, aleshores NILFS2 permetrà restaurar el moment exacte dels canvis de la base de dades i la possibilitat de restaurar la base de dades en qualsevol d'aquests moments. I llavors heu d'utilitzar eines de base de dades per veure què hi havia en aquell moment...

Tanmateix, alguna cosa va sortir malament. O el govern japonès va canviar d'opinió sobre el seguiment de tothom (a la manera del principi de Yarovaya), o el rendiment de NILFS2 als HDD tradicionals va resultar per sota de la normalitat, i NILFS2 es va llançar sota la llicència GPL i va entrar molt ràpidament al nucli de Linux, ja que no hi va haver queixes particulars sobre el codi escrit en japonès altament qualificat, els desenvolupadors del nucli Linux no el tenien.

Com és NILFS2?

Des del punt de vista d'ús: en un sistema de control de versions SVN. Cada punt de control FS és una confirmació que es fa automàticament sense el coneixement de l'usuari sempre que hi ha cap canvi: ja sigui esborrat, canviant el contingut d'un fitxer o canviant els drets d'accés. Cada commit té un nombre que augmenta linealment.

Des del punt de vista d'un programador: un buffer circular. El sistema de fitxers acumula canvis i els escriu en un tros igual a aproximadament 8 MB (2000 * 4096, on 2000 és el nombre d'elements del bloc i 4096 és la mida de la pàgina de memòria). Tot el disc es divideix en aquests trossos. La gravació continua seqüencialment. Quan s'esgota l'espai lliure, se suprimeixen les instantànies més antigues i se sobreescriuen els fragments.

Productes bàsics de NILFS2

  • Versionant!!!
  • El procediment per restaurar un sistema de fitxers després d'un error és senzill: en carregar, es cerca l'últim tros que té la suma de verificació correcta i s'hi instal·la un superbloc. Aquesta és una operació gairebé instantània.
  • A causa del fet que l'enregistrament sempre es desenvolupa linealment, aleshores:
    • pot mostrar bons resultats quan s'executa en un SSD amb escriptures aleatòries lentes.
    • NILFS2 estalvia recursos SSD, ja que gairebé no hi ha factor de multiplicació d'escriptura.
      Més precisament, no és més de 2.El fet és que quan es reescriu cíclicament tot el disc, NILFS2 transferirà dades inalterables a peces noves (trossos).

      Si tenim un 10% de dades que no canvien al disc, obtindrem un augment d'escriptura del 10% amb 1 reescriptura completa. Bé, un augment del 50% al 50% de la plenitud del dispositiu per a 1 reescriptura completa del disc.

      El guany d'escriptura màxim és de 2. Això és molt baix tenint en compte que tot s'escriu de manera seqüencial. En general, l'animació d'escriptura serà inferior a la d'un sistema de fitxers fragmentat convencional amb un sector de 4096 bytes. (Pensament inspirat en comentar).

  • Potencial facilitat d'implementació de la replicació a un FS NILFS2 remot

NILFS2 per a /home

En sistemes operatius semblants a Unix, per regla general, hi ha una carpeta /home on s'emmagatzemen les dades de l'usuari. Diversos programes guarden la seva configuració específica de l'usuari en aquesta carpeta.

I qui, si no els usuaris, s'equivoca més sovint? Per tant, com diuen, Déu mateix va ordenar l'ús de NILFS2 a /home.

A més, amb l'ús generalitzat dels SSD, ara ja no ens hem de preocupar per les baixes greus quan utilitzem sistemes de fitxers CoW.

Sí, podem crear instantànies FS tantes vegades com vulguem a ZFS i BTRFS, però sempre hi ha el risc que un canvi de fitxer perdut acabi entre les instantànies. I les imatges encara s'han d'administrar: cal esborrar les antigues. A NILFS2, tot això passa automàticament, literalment cada pocs segons.

Vaig crear un volum lògic mitjançant lvcreate (al grup de volums nvme, thin pool thin). Recomano crear-lo al volum lvm, ja que després es pot ampliar fàcilment. Recomano tenir un 50% d'espai lliure al disc amb NILFS2 per obtenir una profunditat de versió decent.

lvcreate -V10G -T nvme/thin -n home

i el va format a 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 !!

Després d'això, heu de copiar totes les dades del /home actual.

Ho vaig fer immediatament després d'arrencar l'ordinador, abans d'iniciar sessió al meu compte, com a usuari root. Si hagués d'iniciar sessió com a usuari, alguns programes obririen sockets i fitxers a la carpeta /home/user del meu usuari, cosa que dificultaria una còpia neta. Com ja sabeu, la carpeta d'inici de l'usuari root normalment es troba a la ruta /root, de manera que no s'obrirà cap fitxer a la partició /home.

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

Per a l'última línia, vegeu un article.

A continuació editem /etc/fstab, on es munta el sistema de fitxers per a /home, a

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

Opció noatime necessari per millorar el rendiment de manera que l'hora no canviï amb cada accés al fitxer. A continuació, reiniciem.

Tipus d'imatges a NILFS2.

Una instantània normal sense immunitat a la supressió s'anomena punt de control o punt de recuperació.
Una instantània protegida de la supressió automàtica s'anomena instantània i després simplement una instantània.

La visualització dels punts de control es fa mitjançant l'ordre lscp

Visualitza les instantànies lscp -s

Podem crear instantànies i punts de control nosaltres mateixos en qualsevol moment mitjançant:

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

Restaurem les dades.

NILFS ens permet muntar tantes instantànies antigues com vulguem en paral·lel amb el treball amb la branca principal de FS. Però només en mode de lectura.

Tot està disposat així. Els punts de control habituals que fa NILFS2 es poden suprimir automàticament en qualsevol moment (quan s'esgota l'espai en disc o d'acord amb les regles nilfs_cleanerd), així que abans de la instal·lació hem de convertir el punt de control en una instantània o, en rus, capturar la instantània.

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

Després d'això, podem muntar la instantània, per exemple, així:

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

Després d'això, copiem els fitxers restaurats de la instantània a /home.
I, posteriorment, eliminem la marca que no es pot esborrar de la instantània perquè en el futur el col·lector automàtic d'escombraries pugui eliminar les dades obsoletes:

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

Utilitats per a NILFS2

Però aquest és el problema. Sí, és clar, podem crear un sistema de fitxers, canviar-ne la mida en línia, veure la llista de desafiaments, crear-los i eliminar-los. El paquet nilfs2-utils ofereix un conjunt mínim de gent.

Atès que NTT ha reduït el seu finançament, no hi ha utilitats ràpides de baix nivell que us permetin mostrar l'historial de canvis de fitxers o fer diferències entre instantànies.

La meva utilitat n2u

Per omplir aquest buit vaig escriure la teva utilitat n2u, que pot mostrar l'historial de canvis a un fitxer/directori específic:

n2u log filename

La sortida és una cosa així:

          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

Funciona amb força rapidesa per al mètode d'implementació escollit: busca diferències entre fitxers mitjançant el mètode de bisecció, muntant i comparant ràpidament el fitxer/directori en diferents instantànies.

Podeu establir un rang de punts de control mitjançant la clau -cp CP1:CP2 o -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

També podeu veure la diferència entre els punts de control d'un fitxer o directori específic:

n2u diff -r cp1:cp2 filename

Podeu mostrar tota la cronologia dels canvis: totes les diferències entre els punts de control d'un fitxer/directori específic:

n2u blame [-r cp1:cp2] filename

L'interval de dates en aquesta ordre també és compatible.

Un crit als desenvolupadors

Hi ha molts especialistes en Habré. Si us plau, acabeu NILFS2. Feu una rèplica, una diferència ràpida de baix nivell entre les revisions, el reflink i altres avantatges!

Referències

Lloc web oficial de NILFS.

Repositoris:
NILFS2.
Utilitats i mòduls NILFS2.

Butlletins de notícies:
Butlletí electrònic per a desenvolupadors de NILFS2. ID per a la subscripció a linux-nilfs.
Arxiu de butlletins.

guia de configuració de nilfs_cleanerd.
Evaluació comparativa de les proves de rendiment EXT4, Btrfs, XFS i NILFS2.

Agraïments:

  • Desenvolupadors de NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi i Satoshi Moriai. Altres col·laboradors importants són: 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 i Universal Pictures per a una meravellosa sèrie de pel·lícules. "Retorn al futur". La primera foto de la publicació està presa de la pel·lícula "Retorn al futur 3".
  • Empreses RUVDS pel suport i l'oportunitat de publicar al teu bloc a Habré.

PS Si us plau, envieu qualsevol error que noteu en un missatge privat. Augmento el meu karma per això.

Podeu experimentar amb NILFS2 demanant una màquina virtual RUVDS amb el cupó a continuació. Per a tots els clients nous hi ha un període de prova gratuït de 3 dies.

NILFS2 és un sistema de fitxers a prova de bales per a /home

Font: www.habr.com

Afegeix comentari