On 31/10/2013 21:55, Sylvain Rochet wrote:
On Thu, Oct 31, 2013 at 09:44:31PM +0000, Etienne Dechamps wrote:
Il faut également mentionner que du fait de la manière dont ZFS gère les groupes de transactions, qui sont toujours flushés dans l'ordre, le système de fichier présente une propriété intéressante qui est que même avec sync=disabled (c'est-à-dire ZIL désactivé), il est possible de perdre des données, mais il n'y aura pas de corruption à proprement parler - c'est-à-dire que le système revient « proprement » à un moment donné dans le passé (ici la dernière TXG qui est arrivée à temps sur le disque, typiquement 5 secondes en arrière). En d'autres termes, dans les propriétés ACID seul le « D » est affecté, le reste tient toujours.
Cela n'est pas vrai pour d'autres systèmes de fichiers tels que ext4.
Humm, t'es sûr de ça ? Ça ressemble aux barriers, et c'est activé par défaut en ext4.
Les barriers telles qu'elles sont normalement implémentées offrent la garantie (D) suivante : si une barrier est exécutée avec succès après la fin d'une écriture A, alors A est durablement écrite sur stockage durable (sous-entendu pourra être relu après un crash).
(D) implique directement la propriété suivante (C) : si une barrier est exécutée après la fin d'une écriture A, et qu'une écriture B est effectuée après l'exécution de la barrier, alors si on peut relire B, cela implique qu'on peut relire A.
La proposition (D) est indispensable pour garantir la durabilité. Par contre elle n'est pas indispensable pour garantir la cohérence (non-corruption) des données. Pour garantir la cohérence des données (C) est suffisant.
ZFS avec le ZIL activé offre la garantie (D), c'est-à-dire les barriers. C'est une garantie de cohérence *et* de durabilité. Comme ext4 par défaut.
ZFS avec le ZIL désactivé (sync=disabled), qui présente évidemment l'avantage d'être plus rapide, n'offre plus la garantie (D), mais il offre toujours la garantie (C), c'est-à-dire qu'il offre une garantie de cohérence.
Le parallèle que je faisais avec ext4 (et je me rends compte que je me suis mal exprimé sur ce point) est que par défaut ext4 offre (D), et si tu désactives les barriers (via data=writeback ou barrier=0, si j'interprète correctement les options), alors tu n'obtiens plus rien, même pas (C). ZFS, lui, te donne l'option d'obtenir des performances supérieures en laissant tomber la durabilité (D), mais en conservant la cohérence (C).