NILFS2: un sistema de archivos a prueba de balas para /home

NILFS2: un sistema de archivos a prueba de balas para /home

Como usted sabe, si pueden surgir problemas, definitivamente sucederán. Probablemente todo el mundo ha tenido casos en los que un archivo importante reciente se borró accidentalmente o el texto se seleccionó y destruyó accidentalmente en un editor de texto.

Si es un proveedor de alojamiento o propietario de un sitio web, probablemente se haya encontrado con piratería de cuentas de usuario o de su sitio web. En tales casos, es importante restablecer la cronología, encontrar el método de entrada y la vulnerabilidad utilizada por el atacante.

El sistema de archivos NILFS2 es perfecto para resolver este tipo de problemas.

Ha estado presente en el kernel de Linux desde la versión 2.6.30.

La peculiaridad de este sistema de archivos es que es similar a un sistema de control de versiones: siempre puedes revertir el estado del sistema y ver cómo era hace algún tiempo.

Para proporcionar esta funcionalidad, no es necesario configurar scripts Cron, tomar instantáneas, etc. El sistema de archivos NILFS2 hace todo esto por sí solo. Nunca sobrescribe datos antiguos y siempre escribe en áreas nuevas del disco si hay suficiente espacio libre en el disco. En total conformidad con el principio de copia sobre escritura.

De hecho, cualquier cambio en un archivo crea automáticamente una nueva instantánea del sistema de archivos, por lo que puede utilizar este FS como una máquina del tiempo y rebobinar el estado de los archivos.

historia

NILFS2: un sistema de archivos a prueba de balas para /homeNILFS2 fue desarrollado en las profundidades de Corporación Nippon Telegraph and TelephoneDe hecho, es la empresa estatal (tiene una participación mayoritaria) y la mayor empresa de telecomunicaciones de Japón. Más específicamente, en los Laboratorios CyberSpace bajo el liderazgo Ryusuke Konishi.

Se desconoce exactamente para qué fue desarrollado, pero se puede suponer que un FS de este tipo, con su funcionalidad de "máquina del tiempo", es ideal para almacenar datos que los servicios de inteligencia podrían querer profundizar para reproducir la imagen completa de SMS, correos electrónicos, etc....

NILFS2 también es potencialmente una herramienta muy valiosa para los servicios de seguridad internos, ya que permite recuperar todas las cartas eliminadas en la base de datos de correo, revelando las jambas de los empleados que posteriormente pueden intentar disfrazarlas eliminando o modificando sus archivos.

¿Cómo puede realizar un seguimiento de todo su historial de correspondencia?En los servidores Linux (y aquí es donde se debe instalar NILFS2 por motivos de seguridad interna), el método de archivo para almacenar correos electrónicos se usa muy a menudo para almacenar mensajes de correo electrónico. El llamado formato. Dirección de correo. suficiente para poner Servidor de correo Courier y configurar el almacenamiento de correo en Maildir. Otro formato mbox es un archivo de texto grande que se puede analizar fácilmente en mensajes individuales.

Si el servidor de correo utiliza una base de datos, NILFS2 permitirá restaurar el momento exacto de los cambios en la base de datos y la capacidad de restaurar la base de datos en cualquiera de estos momentos. Y luego necesitas usar herramientas de base de datos para ver qué había en ese momento...

Sin embargo, algo salió mal. O el gobierno japonés cambió de opinión acerca de monitorear a todos (al estilo del principio de Yarovaya), o el rendimiento de NILFS2 en discos duros tradicionales resultó estar por debajo de la media, y NILFS2 se lanzó bajo la licencia GPL y muy rápidamente ingresó al kernel de Linux, ya que No hubo quejas especiales sobre el código escrito en japonés altamente calificado, los desarrolladores del kernel de Linux no lo tenían.

¿Cómo es NILFS2?

Desde el punto de vista del uso: en un sistema de control de versiones SVN. Cada punto de control de FS es una confirmación que se realiza automáticamente sin el conocimiento del usuario cada vez que hay algún cambio: ya sea una eliminación, un cambio en el contenido de un archivo o un cambio en los derechos de acceso. Cada confirmación tiene un número que aumenta linealmente.

Desde el punto de vista de un programador: un búfer circular. El sistema de archivos acumula cambios y los escribe en un fragmento equivalente a aproximadamente 8 MB (2000 * 4096, donde 2000 es el número de elementos del bloque y 4096 es el tamaño de la página de memoria). Todo el disco se divide en esos trozos. La grabación se realiza de forma secuencial. Cuando se agota el espacio libre, las instantáneas más antiguas se eliminan y los fragmentos se sobrescriben.

Beneficios básicos de NILFS2

  • Versionando!!!
  • El procedimiento para restaurar un sistema de archivos después de una falla es simple: durante la carga, se busca el último fragmento que tiene la suma de verificación correcta y se instala un superbloque en él. Esta es una operación casi instantánea.
  • Debido a que la grabación siempre se realiza de forma lineal, entonces:
    • puede mostrar buenos resultados cuando se ejecuta en un SSD con escrituras aleatorias lentas.
    • NILFS2 ahorra recursos SSD, ya que casi no hay factor de multiplicación de escritura.
      Más precisamente, no es más que 2.El hecho es que al reescribir cíclicamente todo el disco, NILFS2 transferirá datos no modificables a nuevas partes (fragmentos).

      Si tenemos el 10% de datos sin cambios en el disco, obtendremos un aumento de escritura del 10% con 1 reescritura completa. Bueno, un aumento del 50 % al 50 % de la capacidad del dispositivo para 1 reescritura completa del disco.

      La ganancia máxima de escritura es 2. Esto es muy bajo considerando que todo se escribe secuencialmente. En general, la animación de escritura será menor que la de un sistema de archivos fragmentado convencional con un sector de 4096 bytes. (Pensamiento inspirado en comentario).

  • Posible facilidad de implementación de la replicación a un FS NILFS2 remoto

NILFS2 para /home

En los sistemas operativos tipo Unix, por regla general, existe una carpeta /home en la que se almacenan los datos del usuario. Varios programas guardan sus configuraciones específicas de usuario en esta carpeta.

¿Y quién, si no los usuarios, comete errores con mayor frecuencia? Por lo tanto, como dicen, Dios mismo ordenó el uso de NILFS2 en /home.

Además, con el uso generalizado de SSD, ya no tenemos que preocuparnos por caídas graves cuando utilizamos sistemas de archivos CoW.

Sí, podemos crear instantáneas de FS tantas veces como queramos en ZFS y BTRFS, pero siempre existe el riesgo de que un cambio de archivo perdido termine entre las instantáneas. Y las imágenes aún deben administrarse: las antiguas deben eliminarse. En NILFS2, todo esto sucede automáticamente, literalmente cada pocos segundos.

Creé un volumen lógico usando lvcreate (en el grupo de volúmenes nvme, grupo delgado). Recomiendo crearlo en el volumen lvm, ya que se puede expandir fácilmente más adelante. Recomiendo tener un 50% de espacio libre en disco con NILFS2 para una profundidad de versión decente.

lvcreate -V10G -T nvme/thin -n home

y lo formateé 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 !!

Después de esto, debe copiar todos los datos del archivo /home actual.

Hice esto inmediatamente después de iniciar la computadora, antes de iniciar sesión en mi cuenta, como usuario root. Si iniciara sesión como mi usuario, algunos programas abrirían sockets y archivos en la carpeta /home/user de mi usuario, lo que dificultaría una copia limpia. Como sabe, la carpeta de inicio del usuario root generalmente se encuentra en la ruta /root, por lo que no se abrirá ningún archivo en la partición /home.

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

Para la última línea, consulte Artículo.

A continuación editamos /etc/fstab, en el que está montado el sistema de archivos para /home, para

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

Opcion noatime Es necesario mejorar el rendimiento para que el tiempo no cambie con cada acceso al archivo. A continuación reiniciamos.

Tipos de imágenes en NILFS2.

Una instantánea normal sin inmunidad a la eliminación se denomina punto de control o punto de recuperación.
Una instantánea protegida contra la eliminación automática se denomina instantánea y luego simplemente instantánea.

La visualización de puntos de control se realiza mediante el comando lscp.

Ver instantáneas lscp -s

Podemos crear instantáneas y puntos de control nosotros mismos en cualquier momento usando:

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

Restauramos datos.

NILFS nos permite montar tantas instantáneas antiguas como queramos en paralelo con el trabajo con la rama principal de FS. Pero sólo en modo lectura.

Todo está arreglado así. Los puntos de control regulares que crea NILFS2 se pueden eliminar automáticamente en cualquier momento (cuando se agota el espacio en el disco o de acuerdo con las reglas nilfs_cleanerd), por lo que antes de la instalación debemos convertir el punto de control en una instantánea o, en ruso, capturar la instantánea.

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

Después de eso, podemos montar la instantánea, por ejemplo, así:

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

Después de lo cual copiamos los archivos restaurados de la instantánea a /home.
Y posteriormente eliminamos la bandera no eliminable de la instantánea para que en el futuro el recolector de basura automático pueda eliminar los datos obsoletos:

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

Utilidades para NILFS2

Pero este es el problema. Sí, por supuesto, podemos crear un sistema de archivos, cambiar su tamaño en línea, ver la lista de puntos de desafío, crearlos y eliminarlos. El paquete nilfs2-utils proporciona un conjunto mínimo para caballeros.

Dado que NTT ha reducido su financiación, no existen utilidades rápidas de bajo nivel que le permitan mostrar el historial de cambios de archivos o hacer diferencias entre instantáneas.

Mi utilidad n2u

Para llenar este vacío escribí tu utilidad n2u, que puede mostrar el historial de cambios en un archivo/directorio específico:

n2u log filename

La salida es algo como esto:

          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 bastante rápido para el método de implementación elegido: busca diferencias entre archivos usando el método de bisección, montando y comparando rápidamente el archivo/directorio en diferentes instantáneas.

Puede establecer una variedad de puntos de control usando la tecla -cp CP1:CP2 o -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

También puede ver la diferencia entre los puntos de control para un archivo o directorio específico:

n2u diff -r cp1:cp2 filename

Puede mostrar la cronología completa de los cambios: todas las diferencias entre los puntos de control de un archivo/directorio específico:

n2u blame [-r cp1:cp2] filename

También se admite el intervalo de fechas en este comando.

Un grito a los desarrolladores.

Hay muchos especialistas en Habré. Por favor finalice NILFS2. ¡Realice replicaciones, diferencias rápidas de bajo nivel entre revisiones, enlaces de referencia y otras ventajas!

referencias

Sitio web oficial de NILFS.

Repositorios:
NILFS2.
Utilidades y módulos NILFS2.

Boletines:
Boletín informativo por correo electrónico para desarrolladores de NILFS2. ID para suscripción a linux-nilfs.
Archivo de boletines.

guía de configuración de nilfs_cleanerd.
Evaluación comparativa de pruebas de rendimiento EXT4, Btrfs, XFS y NILFS2.

Etiquetas:

  • Desarrolladores de NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi y Satoshi Moriai. Otros contribuyentes 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.
  • A Amblin Entertainment y Universal Pictures por una maravillosa serie de películas. "Regreso al futuro". La primera imagen del post está tomada de la película “Regreso al futuro 3”.
  • Las empresas RUVDS por apoyo y la oportunidad de publicar en su blog sobre Habré.

PS Envíe cualquier error que observe en un mensaje privado. Aumento mi karma por esto.

Puede experimentar con NILFS2 solicitando una máquina virtual a RUVDS con el cupón a continuación. Para todos los clientes nuevos hay un período de prueba gratuito de 3 días.

NILFS2: un sistema de archivos a prueba de balas para /home

Fuente: habr.com

Añadir un comentario