Linux fournit-il la journalisation du système de fichiers avec Btrfs?

Oct 16 2020

NTFS fournit quelque chose appelé journal. Je pense que c'est un enregistrement d'actions telles que le changement de nom / déplacement / suppression de fichier effectué par n'importe quelle application. Puis-je obtenir le journal similaire ou me connecter sur Linux + BTRFS? Une partition BTRFS, qui n'est utilisée que par une seule installation Linux.

Exemple de journal NTFS sur Google Images:

Réponses

3 Gilles'SO-stopbeingevil' Oct 17 2020 at 05:16

Je pense que vous ne comprenez pas le but du journal. Ce n'est pas un journal des actions effectuées par les applications et n'enregistre pas quelle application a causé un changement. Il n'est pas destiné aux utilisateurs ou aux administrateurs. Il est conçu comme un outil interne pour le système de fichiers.

Pour des raisons de performances, les écritures sur disque ne se déroulent pas toujours dans le même ordre d’émission. Si le système est interrompu par une panne de courant ou une panne du système avant qu'il n'ait le temps de tout écrire, le système de fichiers peut être dans un état incohérent. Par exemple, si un fichier est déplacé d'un répertoire à un autre, il est possible que le bloc de disque avec le contenu de l'ancien répertoire ait déjà été écrit, mais le bloc de disque avec le contenu du nouveau répertoire n'ait pas été écrit. Si le système s'arrête juste à ce moment, le fichier n'est plus référencé à partir de l'un ou l'autre des répertoires et est effectivement perdu.

Il existe plusieurs techniques pour éviter ce problème (généralement appelé résilience dans la conception de système de fichiers). De nombreux systèmes de fichiers, y compris NTFS, utilisent un journal à cette fin. Le journal enregistre les actions dans l'ordre dans lequel elles sont exécutées, et chaque action est ajoutée de manière atomique , de sorte que la lecture du journal produit toujours un état cohérent. Il existe des systèmes de fichiers, appelés systèmes de fichiers structurés en journal , où le journal est l'endroit où toutes les informations sur le contenu du système de fichiers sont enregistrées. Avec d'autres, y compris NTFS, toutes les informations sont finalement écrites en dehors du journal: le journal ne contient que des informations récentes qui n'ont peut-être pas encore été écrites à leur place «normale». La lecture d'un fichier n'accède pas au journal, elle accède aux données directement à l'endroit normal. Le journal n'est lu qu'au démarrage (plus précisément: lors du montage du système de fichiers) pour terminer toute action qui n'a pas encore été effectuée.

Généralement, avec un système de fichiers de journalisation qui n'est pas structuré par journal, le journal ne contiendra que des actions très récentes. Le journal a généralement un espace limité et les anciennes entrées peuvent être écrasées dès que les actions correspondantes ont été écrites sur le disque, ce qui ne prend généralement pas plus de quelques secondes. Vous pourrez peut-être toujours voir les anciennes entrées de journal s'il n'y a pas beaucoup d'activité par rapport à la taille du journal, mais ce n'est pas quelque chose sur lequel vous pouvez compter.

Certains systèmes de fichiers Linux (par exemple ext4) utilisent un journal. Mais Btrfs n'en fait pas partie. Btrfs atteint la résilience grâce à la copie sur écriture . Il n'écrase jamais un bloc de disque en cours d'utilisation. Pour faire une mise à jour, il crée un nouveau bloc avec les nouvelles données, puis crée un nouveau bloc pour tout lieu qui contient l'emplacement du bloc qui devait être mis à jour, puis crée de nouveaux blocs pour les endroits qui en contiennent l'emplacement, etc. Lorsqu'il atteint la racine¹, il s'assure que tous les blocs enfants sont écrits, puis il met à jour la racine. De cette façon, la racine fait toujours référence à des blocs toujours valides.

Si vous souhaitez suivre les opérations sur les fichiers, un journal du système de fichiers n'est pas le moyen de le faire, que ce soit sous Linux ou sous Windows. Les principaux outils pour cela sous Linux sont LoggedFS et le sous-système d'audit . Voir Est-il possible de savoir quel programme ou script a créé un fichier donné? et Listez les fichiers auxquels un programme accède .

¹ C'est la racine de l'arborescence des blocs, pas la racine de l'arborescence des répertoires. La distinction n'est pas vraiment apparente à ce niveau de détail.

schily Oct 16 2020 at 15:31

Étant donné que btrfs est un système de fichiers COW, il devrait toujours être dans un état correct à moins qu'il ne soit bogué.

La journalisation n'est nécessaire que si vous écrasez des données et ainsi le système de fichiers pourrait devenir incohérent si l'ordre d'écriture suivait l'idée de rendre un système de fichiers rapide. La journalisation est un moyen de rendre le système de fichiers non COW rapide sans toucher à la stabilité.