J'ai lu récemment sur la mise en cache d'écriture, NCQ, les bogues du micrologiciel, les barrières, etc. concernant les disques SATA, et je ne sais pas quel est le meilleur paramètre qui sécuriserait mes données en cas de panne de courant.
D'après ce que je comprends, NCQ permet au lecteur de réorganiser les écritures pour optimiser les performances, tout en gardant le noyau informé des demandes qui ont été physiquement écrites.
Le cache d'écriture accélère le traitement d'une demande par le lecteur, car il n'attend pas que les données soient écrites sur le disque physique.
Je ne sais pas comment NCQ et le cache d'écriture se mélangent ici ...
Les systèmes de fichiers, spécialement ceux qui sont journalisés, doivent être sûrs quand une demande particulière a été écrite. De plus, le processus de l'espace utilisateur utilise fsync () pour forcer le vidage d'un fichier particulier. Cet appel à fsync () ne devrait pas retourner tant que le système de fichiers n'est pas sûr que les données sont écrites sur le disque.
Il y a une fonctionnalité (FUA, Force Unit Access), que je n'ai vue que sur les lecteurs SAS, qui force le lecteur à contourner le cache et à écrire directement sur le disque. Pour tout le reste, il y a des barrières en écriture, qui est un mécanisme fourni par le noyau qui peut déclencher un vidage du cache sur le lecteur. Cela force tout le cache à être écrit, pas seulement les données critiques, ralentissant ainsi tout le système en cas d'utilisation abusive, avec fsync () par exemple.
Et puis il y a des disques avec des bogues de firmware, ou qui mentent délibérément quand les données ont été physiquement écrites.
Cela dit, il existe plusieurs façons de configurer les lecteurs / systèmes de fichiers: A) NCQ et cache d'écriture désactivés B) Just NCQ activé C) Just Write cache activé D) NCQ et cache d'écriture activés
Je suppose que les barrières sont activées. BTW, comment vérifier si elles sont réellement activées?
En cas de coupure de courant, tout en écrivant activement sur le disque, je suppose que l'option B (NCQ, pas de cache) est sûre, à la fois pour le journal du système de fichiers et les données. Il peut y avoir une pénalité de performance.
L'option D (NCQ + cache), si vous utilisez des barrières ou FUA, serait sans danger pour le journal du système de fichiers et les applications qui utilisent fsync (). Ce serait mauvais pour les données qui attendaient dans le cache, et c'est au système de fichiers de les détecter (somme de contrôle), et au moins le système de fichiers ne sera pas (espérons-le) dans un état instable. En termes de performances, cela devrait être mieux.
Ma question, cependant, demeure ... Suis-je en train de manquer quelque chose? Y a-t-il une autre variable à prendre en compte? Existe-t-il un outil qui pourrait le confirmer et que mes lecteurs se comportent comme ils le devraient?