NILFS2 - un sistema de ficheiros a proba de balas para /home

NILFS2 - un sistema de ficheiros a proba de balas para /home

Como sabes, se poden ocorrer problemas, definitivamente sucederán. Probablemente todo o mundo tivo casos nos que un ficheiro importante recente foi borrado accidentalmente ou o texto foi seleccionado e destruído accidentalmente nun editor de texto.

Se es un hoster ou propietario do sitio web, probablemente teña atopado un hackeo das contas de usuario ou do seu sitio web. Nestes casos, é importante restaurar a cronoloxía, atopar o método de entrada e a vulnerabilidade utilizada polo atacante.

O sistema de ficheiros NILFS2 é perfecto para resolver estes problemas.

Está presente no núcleo de Linux desde a versión 2.6.30.

A peculiaridade deste sistema de ficheiros é que é semellante a un sistema de control de versións: sempre podes retroceder o estado do sistema e mirar como era hai algún tempo.

Para proporcionar esta funcionalidade, non é necesario configurar scripts de Cron, facer instantáneas, etc. O sistema de ficheiros NILFS2 fai isto por si só. Nunca sobrescribe os datos antigos e sempre escribe en novas áreas do disco se hai suficiente espazo libre no disco. En plena conformidade co principio de copia sobre escritura.

De feito, calquera cambio nun ficheiro crea automaticamente unha nova instantánea do sistema de ficheiros, polo que podes usar este FS como máquina do tempo e rebobinar o estado dos ficheiros.

Historia

NILFS2 - un sistema de ficheiros a proba de balas para /homeNILFS2 foi desenvolvido nas profundidades de Nippon Telegraph and Telephone Corporation, de feito, a estatal (ten unha participación de control) e a maior empresa de telecomunicacións de Xapón. Máis concretamente, nos Laboratorios CyberSpace baixo a dirección Ryusuke Konishi.

Descoñécese exactamente para que foi desenvolvido, non obstante, pódese supoñer que tal FS, coa súa funcionalidade de "máquina do tempo", é ideal para almacenar datos que os servizos de intelixencia poden querer investigar para reproducir toda a imaxe. SMS, correos electrónicos, etc...

NILFS2 tamén é potencialmente unha ferramenta moi valiosa para os servizos de seguridade interna, xa que permite recuperar todas as cartas eliminadas na base de datos de correo, revelando as xambas dos empregados que posteriormente poden tentar disimulalas borrando ou cambiando os seus ficheiros.

Como podes rastrexar todo o teu historial de correspondencia?Nos servidores Linux (e aquí é onde se debería instalar NILFS2 por motivos de seguridade interna), o método de ficheiro de almacenamento de correos electrónicos úsase con moita frecuencia para almacenar mensaxes de correo electrónico. O chamado formato Maildir. O suficiente para poñer Servidor de Correo Courier e configure o almacenamento de correo en Maildir. Outro formato mbox é un ficheiro de texto grande que se pode analizar facilmente en mensaxes individuais.

Se o servidor de correo utiliza unha base de datos, entón NILFS2 permitirá restaurar o momento exacto dos cambios na base de datos e a posibilidade de restaurar a base de datos en calquera destes momentos. E entón cómpre usar ferramentas de base de datos para ver o que había nese momento...

Non obstante, algo saíu mal. Ou o goberno xaponés cambiou de opinión sobre o seguimento de todos (ao do principio Yarovaya), ou o rendemento de NILFS2 nos discos duros tradicionais resultou inferior ao normal, e NILFS2 lanzouse baixo a licenza GPL e entrou moi rapidamente no núcleo de Linux, xa que non houbo queixas particulares sobre o código escrito xaponés altamente cualificado, os desenvolvedores do núcleo Linux non o tiñan.

Como é NILFS2?

Desde o punto de vista do uso: nun sistema de control de versións Svn. Cada punto de verificación FS é un commit que se realiza automaticamente sen o coñecemento do usuario sempre que hai algún cambio: xa sexa a eliminación, o cambio do contido dun ficheiro ou o cambio de dereitos de acceso. Cada commit ten un número que aumenta linealmente.

Desde o punto de vista dun programador: un buffer circular. O sistema de ficheiros acumula os cambios e escríbeos nun anaco igual a aproximadamente 8 MB (2000 * 4096, onde 2000 é o número de elementos do bloque e 4096 é o tamaño da páxina de memoria). Todo o disco está dividido en tales anacos. A gravación prodúcese secuencialmente. Cando se esgota o espazo libre, elimínanse as instantáneas máis antigas e sobrescríbense os anacos.

Golosinas básicas de NILFS2

  • Versionando!!!
  • O procedemento para restaurar un sistema de ficheiros despois dun fallo é sinxelo: ao cargar, búscase o último anaco que teña a suma de verificación correcta e instálase un superbloque. Esta é unha operación case instantánea.
  • Debido ao feito de que a gravación sempre procede de forma lineal, entón:
    • pode mostrar bos resultados cando se executa nun SSD con escrituras aleatorias lentas.
    • NILFS2 aforra recursos SSD, xa que case non hai un factor de multiplicación de escritura.
      Máis precisamente, non é máis que 2.O feito é que ao reescribir cíclicamente todo o disco, NILFS2 transferirá datos inalterables a novas pezas (anacos).

      Se temos un 10% de datos inalterables no disco, obteremos un aumento de escritura do 10% cunha reescritura completa. Ben, un aumento do 1% ao 50% de plenitude do dispositivo para 50 reescritura completa do disco.

      A ganancia máxima de escritura é 2. Isto é moi baixo tendo en conta que todo está escrito secuencialmente. En xeral, a animación de escritura será menor que a dun sistema de ficheiros fragmentado convencional cun sector de 4096 bytes. (Pensamento inspirado en comentar).

  • Posible facilidade de implementación da replicación nun FS NILFS2 remoto

NILFS2 para /home

Nos sistemas operativos tipo Unix, por regra xeral, hai un cartafol /home no que se almacenan os datos do usuario. Varios programas gardan a súa configuración específica do usuario neste cartafol.

E quen, se non os usuarios, comete erros con máis frecuencia? Polo tanto, como din, o propio Deus ordenou o uso de NILFS2 en /home.

Ademais, co uso xeneralizado dos SSD, agora xa non temos que preocuparnos polas graves caídas ao usar sistemas de ficheiros CoW.

Si, podemos crear instantáneas FS tantas veces como queiramos en ZFS e BTRFS, pero sempre existe o risco de que un cambio de ficheiro perdido acabe entre as instantáneas. E aínda hai que administrar as imaxes: hai que borrar as antigas. En NILFS2, todo isto ocorre automaticamente, literalmente cada poucos segundos.

Creei un volume lóxico usando lvcreate (no grupo de volumes nvme, thin pool thin). Recomendo crealo no volume lvm, xa que se pode ampliar facilmente despois. Recomendo ter un 50% de espazo libre no disco con NILFS2 para unha profundidade de versión decente.

lvcreate -V10G -T nvme/thin -n home

e formatoo en 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 !!

Despois diso, cómpre copiar todos os datos do /home actual.

Fíxeno inmediatamente despois de iniciar o ordenador, antes de iniciar sesión na miña conta, como usuario root. Se tivese que iniciar sesión como o meu usuario, algúns programas abrirían sockets e ficheiros no cartafol /home/user do meu usuario, o que dificultaría unha copia limpa. Como sabes, o cartafol de inicio para o usuario root adoita estar na ruta /root, polo que non se abrirá ningún ficheiro na partición /home.

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

Para a última liña, véxase un artigo.

A continuación editamos /etc/fstab, no que está montado o sistema de ficheiros para /home

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

Opción noatime necesario para mellorar o rendemento para que a hora non cambie con cada acceso ao ficheiro. A continuación reiniciamos.

Tipos de imaxes en NILFS2.

Unha instantánea normal sen inmunidade á eliminación chámase punto de control ou punto de recuperación.
Unha instantánea protexida contra a eliminación automática chámase instantánea e, a continuación, simplemente instantánea.

A visualización dos puntos de control realízase mediante o comando lscp

Ver instantáneas lscp -s

Podemos crear instantáneas e puntos de control nós mesmos en calquera momento usando:

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

Restauramos datos.

NILFS permítenos montar tantas instantáneas antigas como queiramos en paralelo co traballo coa rama principal de FS. Pero só en modo lectura.

Todo está disposto así. Os puntos de control habituais que fai NILFS2 pódense eliminar automaticamente en calquera momento (cando se esgota o espazo no disco ou segundo as regras de nilfs_cleanerd), polo que antes da instalación debemos converter o punto de control nunha instantánea ou, en ruso, capturar a instantánea.

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

Despois diso, podemos montar a instantánea, por exemplo, así:

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

Despois diso, copiamos os ficheiros restaurados da instantánea a /home.
E posteriormente eliminamos a bandeira que non se pode borrar da instantánea para que no futuro o colector automático de lixo poida eliminar os datos obsoletos:

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

Utilidades para NILFS2

Pero este é o problema. Si, por suposto, podemos crear un sistema de ficheiros, cambiar o seu tamaño en liña, ver a lista de puntos de desafío, crealos e eliminalos. O paquete nilfs2-utils ofrece un conxunto mínimo de cabaleiros.

Dado que NTT reduciu o seu financiamento, non hai utilidades rápidas de baixo nivel que che permitan mostrar o historial de cambios de ficheiros ou facer diferenzas entre as instantáneas.

A miña utilidade n2u

Para encher este baleiro escribín a túa utilidade n2u, que pode mostrar o historial de cambios nun ficheiro/directorio específico:

n2u log filename

A saída é algo así:

          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 con bastante rapidez para o método de implementación elixido: busca diferenzas entre ficheiros mediante o método de bisección, montando e comparando rapidamente o ficheiro/directorio en diferentes instantáneas.

Pode establecer un rango de puntos de control usando a tecla -cp CP1:CP2 ou -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Tamén podes ver a diferenza entre os puntos de control para un ficheiro ou directorio específico:

n2u diff -r cp1:cp2 filename

Pode mostrar toda a cronoloxía dos cambios: todas as diferenzas entre os puntos de verificación dun ficheiro/directorio específico:

n2u blame [-r cp1:cp2] filename

O intervalo de data neste comando tamén é compatible.

Un berro aos desenvolvedores

Hai moitos especialistas en Habré. Por favor, remata NILFS2. Fai réplica, diferenza rápida de baixo nivel entre revisións, reflink e outras golosinas.

referencias

Sitio web oficial de NILFS.

Repositorios:
NILFS2.
Módulos e utilidades NILFS2.

Boletíns:
Boletín por correo electrónico para desenvolvedores de NILFS2. ID para a subscrición a linux-nilfs.
Arquivo de boletíns.

guía de configuración de nilfs_cleanerd.
Evaluación comparativa das probas de rendemento EXT4, Btrfs, XFS e NILFS2.

Grazas:

  • Desenvolvedores de NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi e Satoshi Moriai. Outros colaboradores importantes son: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Para Amblin Entertainment e Universal Pictures por unha marabillosa serie de películas. "Regreso ao futuro". A primeira imaxe da publicación está tomada da película "Back to the Future 3".
  • Empresas RUVDS por apoio e a oportunidade de publicar no teu blog en Habré.

PS Envía calquera erro que observes nunha mensaxe privada. Aumento o meu karma por iso.

Podes experimentar con NILFS2 solicitando unha máquina virtual RUVDS co cupón de abaixo. Para todos os novos clientes hai un período de proba gratuíto de 3 días.

NILFS2 - un sistema de ficheiros a proba de balas para /home

Fonte: www.habr.com

Engadir un comentario