NILFS2 est un système de fichiers à toute épreuve pour /home

NILFS2 est un système de fichiers à toute épreuve pour /home

Comme vous le savez, si des problèmes peuvent survenir, ils se produiront certainement. Tout le monde a probablement eu des cas où un fichier important récent a été accidentellement effacé ou où du texte a été accidentellement sélectionné et détruit dans un éditeur de texte.

Si vous êtes hébergeur ou propriétaire d'un site Web, vous avez probablement été confronté à un piratage de comptes d'utilisateurs ou de votre site Web. Dans de tels cas, il est important de restituer la chronologie, de retrouver la méthode de saisie et la vulnérabilité utilisée par l'attaquant.

Le système de fichiers NILFS2 est parfait pour résoudre de tels problèmes.

Il est présent dans le noyau Linux depuis la version 2.6.30.

La particularité de ce système de fichiers est qu'il est similaire à un système de contrôle de version : vous pouvez toujours restaurer l'état du système et voir à quoi il ressemblait il y a quelque temps.

Pour fournir cette fonctionnalité, vous n'avez pas besoin de configurer des scripts Cron, de prendre des instantanés, etc. Le système de fichiers NILFS2 fait tout cela tout seul. Il n'écrase jamais les anciennes données et écrit toujours dans de nouvelles zones du disque s'il y a suffisamment d'espace disque libre. En totale conformité avec le principe Copy-on-Write.

En fait, toute modification apportée à un fichier crée automatiquement un nouvel instantané du système de fichiers, vous pouvez donc utiliser ce FS comme une machine à voyager dans le temps et rembobiner l'état des fichiers.

histoire

NILFS2 est un système de fichiers à toute épreuve pour /homeNILFS2 a été développé au plus profond de Société japonaise de télégraphe et de téléphone, en fait, l'entreprise publique (elle détient une participation majoritaire) et la plus grande entreprise de télécommunications du Japon. Plus précisément, dans les Laboratoires CyberSpace sous la direction Ryusuke Konishi.

On ne sait pas exactement pourquoi il a été développé, mais on peut supposer qu'un tel FS, avec sa fonctionnalité « machine à voyager dans le temps », est idéal pour stocker des données que les services de renseignement pourraient vouloir exploiter afin de restituer l'ensemble de l'image de SMS, emails, etc....

NILFS2 est également potentiellement un outil très précieux pour les services de sécurité internes, car il permet de récupérer toutes les lettres supprimées dans la base de données courrier, révélant ainsi les montants des employés qui pourraient ensuite tenter de les dissimuler en supprimant ou en modifiant leurs fichiers.

Comment pouvez-vous suivre l’intégralité de votre historique de correspondance ?Sur les serveurs Linux (et c'est là que NILFS2 doit être installé pour des raisons de sécurité interne), la méthode de stockage des e-mails par fichiers est très souvent utilisée pour stocker les e-mails. Le soi-disant format Répertoire de messagerie. Assez pour mettre Serveur de messagerie et configurez le stockage du courrier dans Maildir. Autre format mbox est un gros fichier texte qui peut être facilement analysé en messages individuels.

Si le serveur de messagerie utilise une base de données, alors NILFS2 permettra de restaurer le timing exact des modifications de la base de données et la possibilité de restaurer la base de données à n'importe lequel de ces moments. Et puis vous devez utiliser des outils de base de données pour voir ce qu’il y avait dedans à ce moment-là…

Cependant, quelque chose s’est mal passé. Soit le gouvernement japonais a changé d'avis sur la surveillance de tout le monde (à la manière du principe Yarovaya), soit les performances de NILFS2 sur les disques durs traditionnels se sont révélées inférieures à la moyenne, et NILFS2 a été publié sous licence GPL et est très rapidement entré dans le noyau Linux, puisque il n'y a eu aucune plainte particulière concernant le code écrit en japonais hautement qualifié, les développeurs du noyau Linux ne l'avaient pas.

À quoi ressemble NILFS2 ?

D'un point de vue usage : sur un système de contrôle de version SVN. Chaque point de contrôle FS est un commit qui est effectué automatiquement à l'insu de l'utilisateur à chaque fois qu'il y a un changement : qu'il s'agisse d'une suppression, d'une modification du contenu d'un fichier ou d'une modification des droits d'accès. Chaque commit a un nombre qui augmente linéairement.

Du point de vue d'un programmeur : un tampon circulaire. Le système de fichiers accumule les modifications et les écrit dans un bloc égal à environ 8 Mo (2000 4096 * 2000 4096, où XNUMX XNUMX est le nombre d'éléments dans le bloc et XNUMX XNUMX est la taille de la page mémoire). Le disque entier est divisé en ces morceaux. L'enregistrement se déroule de manière séquentielle. Lorsque l'espace libre est épuisé, les instantanés les plus anciens sont supprimés et les morceaux sont écrasés.

Goodies NILFS2 de base

  • Versionnement !!!
  • La procédure de restauration d'un système de fichiers après une panne est simple : lors du chargement, le dernier morceau ayant la somme de contrôle correcte est recherché et un superbloc est installé dessus. C'est une opération quasi instantanée.
  • Étant donné que l'enregistrement se déroule toujours de manière linéaire, alors :
    • peut montrer de bons résultats lors de l'exécution sur un SSD avec des écritures aléatoires lentes.
    • NILFS2 économise les ressources SSD, car il n'y a presque pas de facteur de multiplication en écriture.
      Plus précisément, ce n'est pas plus de 2.Le fait est que lors de la réécriture cyclique de l'intégralité du disque, NILFS2 transférera les données immuables vers de nouveaux morceaux (morceaux).

      Si nous avons 10 % de données inchangées sur le disque, nous obtiendrons une augmentation d'écriture de 10 % avec 1 réécriture complète. Eh bien, une augmentation de 50 % à 50 % de remplissage de l'appareil pour 1 réécriture complète du disque.

      Le gain d'écriture maximum est de 2. C'est très faible étant donné que tout est écrit séquentiellement. En général, l'animation d'écriture sera inférieure à celle d'un système de fichiers fragmenté classique avec un secteur de 4096 octets. (Pensée inspirée par commentaire).

  • Facilité potentielle de mise en œuvre de la réplication vers un FS NILFS2 distant

NILFS2 pour /home

En règle générale, dans les systèmes d'exploitation de type Unix, il existe un dossier /home dans lequel les données utilisateur sont stockées. Divers programmes enregistrent leurs paramètres spécifiques à l'utilisateur dans ce dossier.

Et qui, sinon les utilisateurs, commet le plus souvent des erreurs ? Par conséquent, comme on dit, Dieu lui-même a ordonné l'utilisation de NILFS2 sur /home.

De plus, avec l'utilisation généralisée des disques SSD, nous n'avons plus à nous soucier de graves pertes lors de l'utilisation des systèmes de fichiers CoW.

Oui, nous pouvons créer des instantanés FS aussi souvent que nous le souhaitons dans ZFS et BTRFS, mais il existe toujours un risque qu'une modification de fichier perdue se retrouve entre les instantanés. Et les images doivent encore être administrées : les anciennes doivent être supprimées. Dans NILFS2, tout cela se produit automatiquement, littéralement toutes les quelques secondes.

J'ai créé un volume logique en utilisant lvcreate (dans le groupe de volumes nvme, Thin Pool Thin). Je recommande de le créer sur le volume lvm, car il peut être facilement étendu ultérieurement. Je recommande d'avoir 50 % d'espace disque libre avec NILFS2 pour une profondeur de version décente.

lvcreate -V10G -T nvme/thin -n home

et je l'ai formaté 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 !!

Après cela, vous devez copier toutes les données du /home actuel.

Je l'ai fait immédiatement après avoir démarré l'ordinateur, avant de me connecter à mon compte, en tant qu'utilisateur root. Si je devais me connecter en tant qu'utilisateur, certains programmes ouvriraient des sockets et des fichiers dans le dossier /home/user de mon utilisateur, ce qui rendrait difficile une copie propre. Comme vous le savez, le dossier personnel de l'utilisateur root se trouve généralement sur le chemin /root, donc aucun fichier ne s'ouvrira sur la partition /home.

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

Pour la dernière ligne, voir статью.

Ensuite, nous éditons /etc/fstab, dans lequel le système de fichiers de /home est monté, pour

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

Option noatime nécessaire pour améliorer les performances afin que l'heure ne change pas à chaque accès au fichier. Ensuite, nous redémarrons.

Types d'images dans NILFS2.

Un instantané régulier sans immunité à la suppression est appelé point de contrôle ou point de récupération.
Un instantané protégé contre la suppression automatique est appelé instantané, puis simplement instantané.

La visualisation des points de contrôle se fait à l'aide de la commande lscp

Afficher les instantanés lscp -s

Nous pouvons créer nous-mêmes des instantanés et des points de contrôle à tout moment en utilisant :

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

Nous restaurons les données.

NILFS nous permet de monter autant d'anciens instantanés que nous le souhaitons tout en travaillant avec la branche principale FS. Mais uniquement en mode lecture.

Tout est arrangé ainsi. Les points de contrôle réguliers créés par NILFS2 peuvent être automatiquement supprimés à tout moment (lorsque l'espace disque est épuisé ou selon les règles nilfs_cleanerd), donc avant l'installation, nous devons convertir le point de contrôle en un instantané ou, en russe, capturer l'instantané.

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

Après cela, nous pouvons monter l'instantané, par exemple, comme ceci :

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

Après quoi, nous copions les fichiers restaurés de l'instantané vers /home.
Et ensuite, nous supprimons l'indicateur de non-suppression de l'instantané afin qu'à l'avenir, le garbage collector automatique puisse supprimer les données obsolètes :

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

Utilitaires pour NILFS2

Mais c'est là le problème. Oui, bien sûr, nous pouvons créer un système de fichiers, modifier sa taille en ligne, consulter la liste des points de défi, les créer et les supprimer. Le package nilfs2-utils fournit un ensemble minimal pour gentleman.

Depuis que NTT a réduit son financement, il n'existe aucun utilitaire rapide de bas niveau permettant d'afficher l'historique des modifications de fichiers ou de faire des différences entre les instantanés.

Mon utilitaire n2u

Pour combler ce vide, j'ai écrit votre utilitaire n2u, qui peut afficher l'historique des modifications apportées à un fichier/répertoire spécifique :

n2u log filename

La sortie ressemble à ceci :

          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

Cela fonctionne assez rapidement pour la méthode d'implémentation choisie : il recherche les différences entre les fichiers en utilisant la méthode de bissection, en montant et en comparant rapidement le fichier/répertoire dans différents instantanés.

Vous pouvez définir une série de points de contrôle à l'aide de la touche -cp CP1:CP2 ou -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Vous pouvez également voir la différence entre les points de contrôle pour un fichier ou un répertoire spécifique :

n2u diff -r cp1:cp2 filename

Vous pouvez afficher toute la chronologie des modifications : toutes les différences entre les points de contrôle d'un fichier/répertoire spécifique :

n2u blame [-r cp1:cp2] filename

L'intervalle de dates dans cette commande est également pris en charge.

Un cri aux développeurs

Il existe de nombreux spécialistes de Habré. Veuillez terminer NILFS2. Faites des réplications, des différences rapides de bas niveau entre les révisions, des liens de référence et d'autres goodies !

références

Site officiel du NILFS.

Dépôts :
NILFS2.
Utilitaires et modules NILFS2.

Bulletins :
Newsletter électronique pour les développeurs NILFS2. ID pour l'abonnement Linux-nilfs.
Archives des newsletters.

guide de configuration de nilfs_cleanerd.
Analyse comparative des tests de performances EXT4, Btrfs, XFS et NILFS2.

Merci

  • Développeurs NILFS2 : Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi et Satoshi Moriai. Les autres contributeurs majeurs sont : 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 et Universal Pictures pour une merveilleuse série de films. "Retour vers le futur". La première photo du post est tirée du film « Retour vers le futur 3 ».
  • Les entreprises RUVDS pour du soutien et la possibilité de publier sur votre blog sur Habré.

PS Veuillez envoyer toute erreur que vous remarquez dans un message privé. J'augmente mon karma pour cela.

Vous pouvez expérimenter NILFS2 en commandant une machine virtuelle auprès de RUVDS avec le coupon ci-dessous. Pour tous les nouveaux clients, il existe une période d'essai gratuite de 3 jours.

NILFS2 est un système de fichiers à toute épreuve pour /home

Source: habr.com

Ajouter un commentaire