On 31/10/2013 22:04, Mehdi Sebbar wrote:
Merci pour ces infos, est ce que tu peux nous donner des liens ou tu les
as obtenu? (Mis a part le code ;) )
J'ai trouve ça:
http://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSTXGsAndZILs
Si tu vas voir les sources citées par ton article, tu remarqueras que
l'une d'entre elles est en fait un de mes propres messages sur la
mailing list de ZFS On Linux, qui fait partie d'un long thread sur le
sujet:
http://thread.gmane.org/gmane.linux.file-systems.zfs.user/9119/focus=9299 Si
tu veux plus de détails, tu devrais lire le thread en question dans
lequel moi-même et d'autres personnes débattent du sujet en citant
directement le code.
Je vais juste mettre en garde contre une tournure dans l'article qui me
semble un peu maladroite :
"If the ZIL is active for a dataset the dataset no longer has strong
write ordering properties for data that is not explicitly flushed to
disk via fsync() or the like."
Ce paragraphe laisse penser que si on désactive le ZIL alors on obtient
subitement des garanties d'ordonnancement même si on n'utilise pas
fsync(), ce qui est techniquement faux, principalement parce que rien
n'empêche une couche au-dessus de ZFS (au hasard, le sous-système I/O du
kernel) de réordonner les écritures lui-mêmes. Même avec le ZIL
désactivé il y a toujours un intérêt à utiliser fsync() pour s'assurer
que les écritures sont faites dans l'ordre (ce qui est indispensable
pour éviter la corruption).
Il y a également une affirmation un peu déroutante : "A filesystem with
'sync=disabled' actually has stronger write ordering guarantees than a
filesystem with the ZIL enabled" ce qui théoriquement parlant est vrai,
mais pas en pratique puisqu'il faut que fsync() soit correctement
utilisé de toute façon. L'article fait un peu du pinaillage à outrance
en faisant une fixation sur un comportement un peu exotique de
l’ordonnancement des écritures dans le ZIL lorsque ce dernier est
activé, alors que cela ne fait aucune différence pratique au niveau des
garanties offertes par fsync() (qui est la seule chose qui importe).
J'ai également repéré une erreur :
"A setting of 'disabled' disables ZIL commits but not the in-memory ZIL,
which will continue to accumulate records between TXG commits and then
drop the records when a TXG commits."
Cette affirmation est tout simplement fausse ; si sync=disabled alors
rien n'est gardé en mémoire (et heureusement, sinon ce serait du
gaspillage de RAM). Preuve :
https://github.com/zfsonlinux/zfs/blob/master/module/zfs/zfs_log.c#L462
https://github.com/zfsonlinux/zfs/blob/master/module/zfs/zil.c#L2195
--
Etienne Dechamps
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/