On 31/10/2013 14:45, Julien Escario wrote:
Pas besoin de mirroir pour le L2ARC. Par contre en ZIL, les effets de la perte d'un disque non redondé restent toujours de l'ordre de la divination pour moi. Certains disent qu'ils ont perdu des données et les devs du truc disent que ca doit se passer sans problème (mais je vois mal comment). Du coup, je mirorrise.
Pour répondre à tes interrogations : ça dépend à quel moment le SLOG (et non pas le ZIL, qui est un abus de langage ici) foire.
Si le SLOG meurt simplement de lui-même alors que le système est en train de tourner, alors tout ira bien : ZFS va le retirer de la pool et écrire les données en vol du TXG courant dans la pool, ensuite il va ignorer le SLOG et écrire le ZIL sur la pool. Il faut bien comprendre que le ZIL sur disque est toujours une copie du ZIL en RAM, donc ZFS peut sans problème réécrire les données. Donc pas de souci.
En revanche, si le décès du SLOG coïncide avec un arrêt brutal du système (cas typique : le système crashe et le SSD meurt au redémarrage), alors les données qui étaient commitées dans le ZIL mais se trouvant encore dans la TXG en vol au moment de l'arrêt du système (les 5 dernières secondes, en gros) seront définitivement perdues, car ZFS ne peut alors plus se replier sur le ZIL en RAM pour retrouver ses petits.
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.