J'ai récemment examiné les systèmes de fichiers avancés (BTRFS, ZFS) pour la redondance et la disponibilité des données et s'intéressent aux fonctionnalités supplémentaires qu'ils fournissent, en particulier leurs capacités de "auto-guérison" contre la corruption des données.
Cependant, je pense que je dois prendre un pas en arrière et essayer de comprendre si cet avantage l'emporte sur leurs inconvénients (bogues BTRFS et les problèmes non résolus et l'impact de la disponibilité et des performances de ZFS) pour l'utilisation générale de la maison/SMB, par rapport à un MDADM-RAID1 + conventionnel. Solution ext4. Une sauvegarde en miroir est disponible de toute façon.
Supposons que j'ai quelques serveurs de fichiers utilisés à des fins d'archivage et ont des ressources limitées, mais une mémoire ECC et une source d'alimentation stable.
Oui, un système de fichiers checké fonctionnel est une très bonne chose. Cependant, la véritable motivation ne doit pas être trouvée dans le mythique "Bittrot" qui, tandis que le fait arriver, est très rare. Au contraire, l'avantage principal est qu'un tel fichier de fichiers fournit et de contrôle de données de bout en bout , vous protège activement par un comportement erroné de disque comme des écrivies et des données erronées La corruption relative au cache de DRAM privé du disque échoue et/ou mauvaise conduite en raison du problème de l'alimentation électrique.
J'ai vécu cette question de première main, lorsqu'un tableau de RAID 1 Linux est passé mal en raison d'un problème d'alimentation. Le cache d'un disque a commencé à corrompre des données et l'ECC intégré dans les secteurs de disque eux-mêmes n'a pas compris que les données écrites étaient déjà corrompues et le CEC a été calculé sur les données corrompues elles-mêmes.
Grâce à son journal chuté, qui a détecté quelque chose d'étrange et suspendu le système de fichiers, XFS limitait les dégâts; Cependant, certains fichiers/répertoires étaient corrompus irrémédiablement. Comme il s'agissait d'une machine de sauvegarde face à une pression de temps d'arrêt immédiate, je l'ai reconstruite avec ZFS. Lorsque le problème est ré-recouvert, lors du premier gommage ZFS a corrigé le bloc affecté en lisant les bonnes copies des autres disques. Résultat: pas de perte de données et aucun temps d'arrêt. Ce sont deux très bonnes raisons d'utiliser un système de fichiers de checkinguming.
Il convient de noter que la somme de contrôle des données est tellement précieuse que la cible de mappeur de périphérique la fournisse (en émulant les spécifications DIF/DIX T-10), appelées dm-intégrité , a été développée précisément pour étendre cette protection à Dispositifs de blocs classiques (particulièrement redondants comme RAID1/5/6). Par la vertu du projet stratis , il va être intégré dans une API de gestion complète.
Cependant, vous avez un point que tout avantage potentiel apporté par ce système de fichiers devrait être comparé au distinct qu'ils héritent. Le problème principal de ZFS est qu'il n'est pas mis à jour dans le noyau standard, mais sinon est-ce très rapide et stable. D'autre part, BTRFS, tandis que, à la main, a beaucoup de problèmes importants et problème de performance (la suggestion commune pour les bases de données ou la machine virtuelle est de désactiver la vache qui, à son tour, de la checkingming désactivée - qui est franchement, pas un réponse acceptable). En utilisant plutôt BTRFS, j'utiliserais XFS et j'espère le meilleur ou en utilisant des appareils protégés DM-Integrity.
J'ai eu un disque dur Seagate qui a commencé à défailler les checksums à chaque fois que j'exécuterais ZFS Gommage. Cela a échoué après quelques semaines. ZFS et BTRF ont des checksums pour les données et les métadonnées. ext4 n'a que des métadonnées chcksums.
Seules les erreurs de CRC et les erreurs de contrôle de métadonnées. La corruption des données peut arriver.
Si cela a de mauvais secteurs, ce n'est pas un problème. L'ensemble du disque sera "Échec", mais vous avez l'autre disque "bien". Le problème est que lorsque les données sont correctes CRC, mais les données sont corrompues. Cela peut arriver au hasard à cause de grands disques.
J'utilise des ZFS en production, pour les deux serveurs et un bureau à domicile NAS, sous Linux et FreeBSD, depuis plus de 6 ans. J'ai trouvé que cela soit stable, rapide, fiable et je l'ai personnellement vu détecter et (en capable de) corriger les erreurs qu'un simple appareil md
ou ext4
Le système de fichiers n'aurait pas pu.
Cependant, je pense que je dois prendre un pas en arrière et essayer de comprendre si cet avantage l'emporte sur leurs inconvénients (bugs BTRFS et problèmes non résolus et impact sur la disponibilité et la performance)
En ce qui concerne la licence, ZFS est open source, il vient de publier sous la licence CDDL qui n'est pas légalement Compatible avec la licence GPLV2 que le noyau Linux est publié sous. détails ici . Cela ne signifie pas que c'est dans un état de "Lincensing-Limbo pendant un moment" et cela signifie qu'il n'y a aucun technique Incompatibilité. Cela signifie simplement que la source de noyau MainLine Linux ne dispose pas des modules et il doit être extrait de quelque part comme https://zfsonlinux.org . Notez que certaines distributions, comme Debian, incluent des ZFS dans leur distribution L'installation de ZFS sur Debian/Ubuntu peut normalement être effectuée avec un seul apt
commander.
En ce qui concerne la performance, étant donné RAM ZFS Performance pour moi est n'importe où de près de EXT4 à dépasser EXT4, en fonction de la mémoire, de la piscine disponible et de la compressibilité des données. L'inconvénient de ZFS est Utilisation de la mémoire: Si vous avez moins de 16 GiB de RAM pour un serveur de production, vous pouvez éviter les zfs. C'est une règle trop simplifiée de Thumb; Il y a beaucoup d'informations en ligne sur les exigences de la mémoire pour ZFS. J'ai personnellement géré une piscine de 10 To et une piscine de 800 Go ainsi que des pools de sauvegarde sur un système de linux de bureau à domicile avec 32 Go RAM et la performance est géniale . Ce serveur aussi exécute LXC et plusieurs services fonctionnent.
Les caractéristiques ZFS vont bien au-delà des données de contrôle et des capacités d'auto-guérison; Ses instantanés puissants sont beaucoup meilleurs que les instantanés LVM et la compression LZ4 en ligne peut réellement améliorer les performances en réduisant les écrivies de disque. J'abandonne personnellement une économie de 1,55x sur la piscine de 10oB (stocker 9.76Gib de données dans seulement 6,3 GIB de l'espace sur disque)
Dans mon expérience, la performance de ZPF s'adresse lorsque la piscine atteint 75% ou 80% d'utilisation, tant que vous restez en dessous de ce point, les performances devraient être plus que suffisantes pour le général Home/SMB-Usage.
Dans les cas où j'ai vu des ZFS détecter et corriger les mauvaises données, la cause fondamentale n'était pas claire mais était probablement un mauvais bloc de disque. J'ai aussi une mémoire CEE et utilisez un onduleur, donc je ne crois pas que les données ont été corrompues dans la RAM. En fait, vous avez besoin de la CEE RAM= pour obtenir les avantages des checksums ZFS. Cependant, j'ai vu des cas longs (~ 10-15) de blocs qui ont échoué sur des checksums au cours des 6 dernières années. Un seul avantage majeur de ZFS sur un raid MD est que ZFS sait que les fichiers sont affectés par une erreur de somme de contrôle . Donc, dans les cas où une piscine de sauvegarde sans redondance avait une somme de contrôle Erreur, ZFS m'a dit le Exact Fichiers affectés, me permettant de remplacer ces fichiers.
Malgré la licence ZFS utilise ne pas être comparable au noyau Linux, l'installation des modules est très facile (au moins sur Debian) et, une fois familiarisé avec l'outils, la gestion est simple. Malgré de nombreuses personnes citant la peur de la perte de données totale avec des ZFS sur Internet, j'ai jamais Perdue toutes les données depuis que vous déplacez le déplacement à ZFS et la combinaison des instantanés ZFS et de la somme de contrôle de données/redondance ont personnellement m'a sauvé de la perte de données plusieurs fois. C'est une victoire claire et je ne reviendrai personnellement à un tableau md
.
Quelle est la probabilité que je suis même de rencontrer la corruption de données réelle rendant des fichiers illisibles? Comment?
Compte tenu de suffisamment de temps, il est presque certain de se produire. Par coïncidence, cela m'est arrivé la semaine dernière. Mon serveur de fichiers à domicile a développé un peu de bad RAM causant des verrouillages périodiques. Finalement, j'ai décidé de simplement prendre la retraite de la machine (qui devait être plutôt vieille) et déplacé les lecteurs sur une enceinte sur une machine différente. Le gommage post-importation trouvé et réparé 15 blocs avec des erreurs de somme de contrôle, sur une piscine de 8To, provinciblement causée par le mauvais RAM et/ou les verrouillages. Les disques eux-mêmes avaient une facture propre de la santé d'une amende intelligente et testée sur un gommage ultérieur.
Peut ext4 ou le gestionnaire de fichiers système détecte déjà les erreurs de données sur les opérations de copie/déplacement, ce qui me rend au moins conscient d'un problème?
Non, pas vraiment. Il pourrait y avoir des contrôles de contrôle au niveau des applications dans certains formats de fichiers, mais sinon, rien ne tient un œil sur le type de corruption qui s'est passé dans mon cas.
Que se passe-t-il si l'un des lecteurs Madame-Raid1 détient différentes données en raison d'un lecteur ayant des secteurs défectueux? Est-ce que je pourrai toujours récupérer le fichier correct ou que le tableau sera-t-il incapable de décider quel fichier est le bon et le perdre entièrement?
Si vous connaissez définitivement qu'un lecteur est mauvais, vous pouvez échouer hors de la matrice et servir toutes les lectures du bon lecteur (ou, plus sensiblement, remplacez le disque incorrect, qui copiera les données du bon lecteur sur le remplacement. ). Mais si les données sur les lecteurs diffèrent en raison de bits aléatoires sur l'écriture (le genre de chose qui me est arrivé et shodanshok), il n'y a pas de moyen définitif de choisir lequel des deux est correct sans somme de somme de contrôle.
De plus, MD ne sera généralement pas remarque que deux lecteurs dans un miroir sont hors de synchronisation pendant le fonctionnement normal - il dirigera les lectures directes à un disque ou à l'autre de la manière qui obtiendra le résultat le plus rapide. Il existe une fonction "Vérification" qui lira les deux côtés d'une paire de miroirs et signalera des incompatibles, mais uniquement si vous l'exécutez ou si votre distribution est configurée pour l'exécuter périodiquement et signaler les résultats.
Quelle est la probabilité que je suis même de rencontrer la corruption de données réelle rendant des fichiers illisibles? Comment?
Évidemment, étant donné un temps infini, vous êtes certain de le rencontrer.
De manière réaliste, il est encore assez probable que si vous avez un quincaillerie de qualité d'entreprise très coûteux, et même ce n'est pas impressionnement improbable.
Plus probablement cependant, vous finirez par rencontrer la corruption des données qui change simplement le contenu du fichier, mais ne les rend pas illisibles (sauf si vous n'avez pas d'insensé de fichiers minuscules, des statistiques simples signifie que vous êtes plus susceptible d'avoir la corruption Données de fichier que dans les métadonnées de fichier). Lorsque cela se produit, vous pouvez obtenir toutes sortes de comportements étranges comme si vous aviez un mauvais matériel (même s'il sera généralement plus cohérent et localisé que le mauvais matériel). Si vous êtes chanceux, ce sont des données non critiques qui sont corrompues et que vous pouvez facilement faire des choses. Si vous êtes modérément malchanceux, vous devez reconstruire le système à partir de zéro. Si vous êtes vraiment malchanceux, vous venez de courir dans une erreur qui vous a causé à faire de la faillite, car il est arrivé de toucher des données critiques dans un système de production et que votre service est maintenant en panne pendant la reconstruction du tout gratter et essayer de remettre la base de données comme ça devrait être.
Réponse courte, la corruption des données est suffisamment probable que même les utilisateurs de la maison devraient s'en inquiéter.
Peut ext4 ou le gestionnaire de fichiers système détecte déjà les erreurs de données sur les opérations de copie/déplacement, ce qui me rend au moins conscient d'un problème?
EXT4 est notoirement mauvais sur ce point. Leur comportement par défaut N exécuté dans une erreur de cohérence interne consiste à marquer le système de fichiers pour vérifier le prochain remontage, puis continuez comme si rien n'est faux. J'ai perdu des systèmes entiers dans le passé à cause de ce comportement.
Plus de produits de manière générale, dans la plupart des cas, le mieux que vous puissiez espérer à partir d'un système de fichiers non spécifiquement conçu pour vérifier que ses données sont de remonter en lecture seule s'il s'inscrit dans une erreur interne avec ses propres structures de données ou des métadonnées de fichiers. La chose est cependant, à moins que le système de fichiers ne traite spécifiquement de vérification de ses propres structures internes au-delà de simples trucs comme la vérification des limites, cela ne va pas tout attraper, les choses vont simplement se tromper de manière étrange.
Pour obtenir quelque chose de plus, vous avez besoin du système de fichiers pour vérifier ses propres structures de données internes avec des checksums, des codes de correction des erreurs, un codage d'effacement ou une approche similaire. Même alors, à moins que cela ne correspond à la même chose pour les données de fichier, vous êtes toujours au risque de perte de données non négligeable.
Que se passe-t-il si l'un des lecteurs Madame-Raid1 détient différentes données en raison d'un lecteur ayant des secteurs défectueux? Est-ce que je pourrai toujours récupérer le fichier correct ou que le tableau sera-t-il incapable de décider quel fichier est le bon et le perdre entièrement?
Cela dépend du niveau RAID, de la mise en œuvre exacte du RAID, et de déterminer si vous l'avez ou non définie pour récupérer automatiquement. En supposant que vous avez une récupération automatique sur:
Pour raid1 et raid10:
Pour RAID4/5/6 et d'autres cas de codage d'effacement, presque tout se comporte de même en ce qui concerne la récupération, les données sont reconstruites des périphériques restants si cela peut être ou que la matrice est effectivement perdue. ZFS et BTRFS dans ce cas vous donnent simplement une solution plus rapide (en termes d'E/S totale) de vérifier si les données sont correctes ou non.
Notez qu'aucune de ces opérations ne fonctionne sur une base par fichier et la plupart ne vous permettent pas de choisir facilement le "correct", ils fonctionnent complètement, échouent complètement ou renvoyez alternativement bonne ou de mauvaises données pour la région de synchronisation.
Pour être complet, j'aimerais mentionner https://bcachefs.org , qui n'est certes pas encore dans le noyau, mais IMHO a érigé pour supplanter ZFS et BTRFS une fois qu'il fait.
Il est basé sur BCACHE, qui a déjà été dans le noyau depuis longtemps, le système de fichiers de construction dispose de son système B-Tree.
Le développeur isolé y travaille à temps plein, parrainé via Patreon et s'est concentré sur la fiabilité.
Pas pour les faibles de coeur pour le moment, mais comme ce commentaire vieillit, BCaChefs devrait s'améliorer :)