Name{number} snapraid - Sauvegarde SnapRAID pour baies de disques Synopsis :snapraid [-c, --conf CONFIG] : [-f, --filter PATTERN] [-d, --filter-disk NAME] : [-m, --filter-missing] [-e, --filter-error] : [-a, --audit-only] [-h, --pre-hash] [-i, --import DIR] : [-p, --plan PERC|bad|new|full] : [-o, --older-than DAYS] [-l, --log FILE] : [-s, --spin-down-on-error] [-w, --bw-limit RATE] : [-t, --tail] : [-Z, --force-zero] [-E, --force-empty] : [-U, --force-uuid] [-D, --force-device] : [-N, --force-nocopy] [-F, --force-full] : [-R, --force-realloc] [-W, --force-realloc-tail] : [-S, --start BLKSTART] [-B, --count BLKCOUNT] : [-L, --error-limit NUMBER] : [-A, --stats] : [-v, --verbose] [-q, --quiet] : status|smart|probe|up|down|diff|sync|scrub|fix|check : |list|dup|pool|devices|touch|rehash|locate :snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT] Description SnapRAID est un programme de sauvegarde conçu pour les baies de disques, stockant les informations de parité pour la récupération des données en cas de défaillance de six disques maximum. Principalement destiné aux centres multimédia domestiques avec des fichiers volumineux et peu souvent modifiés, SnapRAID offre plusieurs fonctionnalités : * Vous pouvez utiliser des disques déjà remplis de fichiers sans avoir besoin de les reformater, en y accédant comme d'habitude. * Toutes vos données sont hachées pour garantir l'intégrité des données et prévenir la corruption silencieuse. * Lorsque le nombre de disques défaillants dépasse le nombre de parités, la perte de données est limitée aux disques affectés ; les données sur les autres disques restent accessibles. * Si vous supprimez accidentellement des fichiers sur un disque, la récupération est possible. * Les disques peuvent avoir des tailles différentes. * Vous pouvez ajouter des disques à tout moment. * SnapRAID ne verrouille pas vos données ; vous pouvez arrêter de l'utiliser à tout moment sans reformater ni déplacer de données. * Pour accéder à un fichier, un seul disque doit tourner, ce qui économise de l'énergie et réduit le bruit. Pour plus d'informations, veuillez visiter le site officiel de SnapRAID : :https://www.snapraid.it/ Limitations SnapRAID est un hybride entre un RAID et un programme de sauvegarde, visant à combiner les meilleurs avantages des deux. Cependant, il présente certaines limitations que vous devriez prendre en compte avant de l'utiliser. La principale limitation est que si un disque tombe en panne, vous ne pouvez récupérer les données que jusqu'à l'état du dernier processus `sync`. Toutes les données ajoutées ou modifications effectuées depuis la dernière synchronisation situées sur le disque défectueux seront perdues. Par conséquent, SnapRAID est principalement adapté aux données qui changent rarement. Pour les données qui existaient déjà lors de la dernière synchronisation, la fiabilité de la récupération dépend de l'utilisation ou non de l'option `snapshot` : * Avec la prise en charge des instantanés (disponible sur Btrfs, ZFS, Bcachefs et NTFS), SnapRAID peut maintenir automatiquement une référence figée indépendante de chaque système de fichiers de données pris en charge. Cela garantit que même si vous modifiez ou supprimez des fichiers sur votre système de fichiers actif pendant ou après une synchronisation, le processus de récupération reste cohérent et fiable. * Sans la prise en charge des instantanés, la suppression ou la modification de fichiers après un `sync` peut empêcher la récupération complète d'autres disques en panne. Cela se produit parce que la parité ne correspond plus aux fichiers modifiés, même si ces fichiers ne se trouvent pas sur le disque défectueux. D'un autre côté, les fichiers nouvellement ajoutés n'empêchent pas la récupération des fichiers déjà existants. Les autres limitations de SnapRAID sont : * Avec SnapRAID, vous avez toujours des systèmes de fichiers séparés pour chaque disque. Avec le RAID, vous obtenez un seul grand système de fichiers. * SnapRAID ne fait pas de striping (entrelacement) des données. Avec le RAID, vous obtenez un gain de vitesse avec le striping. * SnapRAID ne prend pas en charge la récupération en temps réel. Avec le RAID, vous n'avez pas à arrêter de travailler lorsqu'un disque tombe en panne. * SnapRAID ne peut récupérer des données que pour un nombre limité de défaillances de disques. Avec une sauvegarde, vous pouvez récupérer d'une défaillance complète de toute la baie de disques. * Seuls les noms de fichiers, les horodatages, les liens symboliques et les liens physiques sont sauvegardés. Les permissions, la propriété et les attributs étendus ne sont pas sauvegardés. Démarrer (Getting Started) Pour utiliser SnapRAID, vous devez d'abord sélectionner un disque dans votre baie de disques pour le dédier aux informations de `parité`. Avec un disque pour la parité, vous pourrez récupérer d'une seule défaillance de disque, similaire au RAID5. Si vous souhaitez récupérer de plus de défaillances de disques, similaire au RAID6, vous devez réserver des disques supplémentaires pour la parité. Chaque disque de parité supplémentaire permet la récupération d'une défaillance de disque de plus. Comme disques de parité, vous devez choisir les plus grands disques de la baie, car les informations de parité peuvent atteindre la taille du plus grand disque de données de la baie. Ces disques seront dédiés au stockage des fichiers de `parité`. Vous ne devriez pas y stocker vos données. Ensuite, vous devez définir les disques de `données` que vous souhaitez protéger avec SnapRAID. La protection est plus efficace si ces disques contiennent des données qui changent rarement. Pour cette raison, il est préférable de NE PAS inclure le disque C:\ de Windows ou les répertoires /home, /var et /tmp d'Unix. La liste des fichiers est enregistrée dans les fichiers `content` (contenu), généralement stockés sur les disques de données, de parité ou de démarrage. Ce fichier contient les détails de votre sauvegarde, y compris toutes les sommes de contrôle pour vérifier son intégrité. Le fichier `content` est stocké en plusieurs copies, et chaque copie doit se trouver sur un disque différent pour garantir qu'au moins une copie soit disponible, même en cas de défaillances de disques multiples. Par exemple, supposons que vous ne soyez intéressé que par un seul niveau de protection de parité, et que vos disques se trouvent à : :/mnt/diskp <- disque sélectionné pour la parité :/mnt/disk1 <- premier disque à protéger :/mnt/disk2 <- deuxième disque à protéger :/mnt/disk3 <- troisième disque à protéger Vous devez créer le fichier de configuration /etc/snapraid.conf avec les options suivantes : :parity /mnt/diskp/snapraid.parity :content /var/snapraid/snapraid.content :content /mnt/disk1/snapraid.content :content /mnt/disk2/snapraid.content :data d1 /mnt/disk1/ :data d2 /mnt/disk2/ :data d3 /mnt/disk3/ Si vous êtes sous Windows, vous devez utiliser le format de chemin Windows, avec des lettres de lecteur et des barres obliques inverses au lieu de barres obliques. :parity E:\snapraid.parity :content C:\snapraid\snapraid.content :content F:\array\snapraid.content :content G:\array\snapraid.content :data d1 F:\array\ :data d2 G:\array\ :data d3 H:\array\ Si vous avez de nombreux disques et manquez de lettres de lecteur, vous pouvez monter les disques directement dans des sous-dossiers. Voir : :https://www.google.com/search?q=Windows+mount+point À ce stade, vous êtes prêt à exécuter la commande `sync` (synchroniser) pour construire les informations de parité. :snapraid sync Ce processus peut prendre plusieurs heures la première fois, en fonction de la taille des données déjà présentes sur les disques. Si les disques sont vides, le processus est immédiat. Vous pouvez l'arrêter à tout moment en appuyant sur Ctrl+C, et lors de la prochaine exécution, il reprendra là où il a été interrompu. Lorsque cette commande est terminée, vos données sont EN SÉCURITÉ. Vous pouvez maintenant commencer à utiliser votre baie comme vous le souhaitez et mettre à jour périodiquement les informations de parité en exécutant la commande `sync`. Nettoyage (Scrubbing) Pour vérifier périodiquement les données et la parité à la recherche d'erreurs, vous pouvez exécuter la commande `scrub`. :snapraid scrub Cette commande compare les données de votre baie avec le hachage calculé lors de la commande `sync` pour vérifier l'intégrité. Chaque exécution de la commande vérifie environ 8 % de la baie, en excluant les données déjà nettoyées au cours des 10 jours précédents. Vous pouvez utiliser l'option -p, --plan pour spécifier une quantité différente et l'option -o, --older-than pour spécifier un âge différent en jours. Par exemple, pour vérifier 5 % de la baie pour les blocs de plus de 20 jours, utilisez : :snapraid -p 5 -o 20 scrub Si des erreurs silencieuses ou d'entrée/sortie sont trouvées pendant le processus, les blocs correspondants sont marqués comme mauvais dans le fichier `content` et listés dans la commande `status`. :snapraid status Pour les corriger, vous pouvez utiliser la commande `fix`, en filtrant les mauvais blocs avec l'option -e, --filter-error : :snapraid -e fix Lors du prochain `scrub`, les erreurs disparaîtront du rapport `status` si elles sont réellement corrigées. Pour accélérer, vous pouvez utiliser -p bad pour nettoyer uniquement les blocs marqués comme mauvais. :snapraid -p bad scrub L'exécution de `scrub` sur une baie non synchronisée peut signaler des erreurs causées par des fichiers supprimés ou modifiés. Ces erreurs sont signalées dans la sortie de `scrub`, mais les blocs associés ne sont pas marqués comme mauvais. Mise en commun (Pooling) Note : La fonctionnalité de mise en commun décrite ci-dessous a été remplacée par l'outil mergerfs, qui est désormais l'option recommandée pour les utilisateurs Linux de la communauté SnapRAID. Mergerfs offre un moyen plus flexible et efficace de regrouper plusieurs disques dans un seul point de montage unifié, permettant un accès transparent aux fichiers sur toute votre baie sans dépendre de liens symboliques. Il s'intègre bien avec SnapRAID pour la protection par parité et est couramment utilisé dans des configurations comme OpenMediaVault (OMV) ou des configurations NAS personnalisées. Pour que tous les fichiers de votre baie apparaissent dans la même arborescence de répertoires, vous pouvez activer la fonctionnalité de `pooling`. Elle crée une vue virtuelle en lecture seule de tous les fichiers de votre baie à l'aide de liens symboliques. Vous pouvez configurer le répertoire de `pooling` dans le fichier de configuration avec : :pool /pool ou, si vous êtes sous Windows, avec : :pool C:\pool puis exécutez la commande `pool` pour créer ou mettre à jour la vue virtuelle. :snapraid pool Si vous utilisez une plateforme Unix et souhaitez partager ce répertoire sur le réseau avec des machines Windows ou Unix, vous devez ajouter les options suivantes à votre /etc/samba/smb.conf : :# Dans la section globale de smb.conf :unix extensions = no :# Dans la section de partage de smb.conf :[pool] :comment = Pool :path = /pool :read only = yes :guest ok = yes :wide links = yes :follow symlinks = yes Sous Windows, le partage de liens symboliques sur un réseau nécessite que les clients les résolvent à distance. Pour activer cela, en plus de partager le répertoire du pool, vous devez également partager tous les disques indépendamment, en utilisant les noms de disques définis dans le fichier de configuration comme points de partage. Vous devez également spécifier dans l'option `share` du fichier de configuration le chemin UNC Windows que les clients distants doivent utiliser pour accéder à ces disques partagés. Par exemple, en opérant à partir d'un serveur nommé `darkstar`, vous pouvez utiliser les options : :data d1 F:\array\ :data d2 G:\array\ :data d3 H:\array\ :pool C:\pool :share \\darkstar et partager les répertoires suivants sur le réseau : :\\darkstar\pool -> C:\pool :\\darkstar\d1 -> F:\array :\\darkstar\d2 -> G:\array :\\darkstar\d3 -> H:\array pour permettre aux clients distants d'accéder à tous les fichiers à \\darkstar\pool. Vous pourriez également avoir besoin de configurer les clients distants pour activer l'accès aux liens symboliques distants avec la commande : :fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1 Restauration (Undeleting) SnapRAID fonctionne davantage comme un programme de sauvegarde qu'un système RAID, et il peut être utilisé pour restaurer ou récupérer des fichiers dans leur état précédent à l'aide de l'option -f, --filter : :snapraid fix -f FILE ou pour un répertoire : :snapraid fix -f DIR/ Vous pouvez également l'utiliser pour récupérer uniquement les fichiers accidentellement supprimés à l'intérieur d'un répertoire en utilisant l'option -m, --filter-missing, qui ne restaure que les fichiers manquants, laissant tous les autres intacts. :snapraid fix -m -f DIR/ Ou pour récupérer tous les fichiers supprimés sur tous les lecteurs avec : :snapraid fix -m Récupération (Recovering) Le pire est arrivé, et vous avez perdu un ou plusieurs disques ! NE PANIQUEZ PAS ! Vous pourrez les récupérer ! La première chose à faire est d'éviter d'autres modifications sur votre baie de disques. Désactivez toute connexion à distance et tout processus planifié, y compris toute synchronisation ou nettoyage SnapRAID nocturne planifié. Procédez ensuite aux étapes suivantes. ÉTAPE 1 -> Reconfigurer Vous avez besoin d'espace pour récupérer, idéalement sur des disques de rechange supplémentaires, mais un disque USB externe ou un disque distant suffira. Modifiez le fichier de configuration SnapRAID pour que l'option `data` ou `parity` du disque défaillant pointe vers un emplacement avec suffisamment d'espace vide pour récupérer les fichiers. Par exemple, si le disque `d1` a échoué, passez de : :data d1 /mnt/disk1/ à : :data d1 /mnt/new_spare_disk/ Si le disque à récupérer est un disque de parité, mettez à jour l'option `parity` appropriée. Si vous avez plusieurs disques défaillants, mettez à jour toutes leurs options de configuration. ÉTAPE 2 -> Corriger (Fix) Exécutez la commande fix, en stockant le journal dans un fichier externe avec : :snapraid -d NAME -l fix.log fix Où NAME est le nom du disque, tel que `d1` dans notre exemple précédent. Si le disque à récupérer est un disque de parité, utilisez les noms `parity`, `2-parity`, etc. Si vous avez plusieurs disques défaillants, utilisez plusieurs options -d pour les spécifier tous. Cette commande prendra beaucoup de temps. Assurez-vous d'avoir quelques gigaoctets libres pour stocker le fichier fix.log. Exécutez-la à partir d'un disque avec suffisamment d'espace libre. Vous avez maintenant récupéré tout ce qui est récupérable. Si certains fichiers sont partiellement ou totalement irrécupérables, ils seront renommés en ajoutant l'extension `.unrecoverable`. Vous pouvez trouver une liste détaillée de tous les blocs irrécupérables dans le fichier fix.log en vérifiant toutes les lignes commençant par `unrecoverable:`. Si la récupération ne vous satisfait pas, vous pouvez réessayer autant de fois que vous le souhaitez. Par exemple, si vous avez supprimé des fichiers de la baie après le dernier `sync`, cela peut entraîner la non-récupération de certains fichiers. Dans ce cas, vous pouvez réessayer le `fix` en utilisant l'option -i, --import, en spécifiant où se trouvent maintenant ces fichiers pour les inclure à nouveau dans le processus de récupération. Si vous êtes satisfait de la récupération, vous pouvez continuer, mais notez qu'après la synchronisation, vous ne pouvez plus réessayer la commande `fix` ! ÉTAPE 3 -> Vérifier (Check) Par précaution, vous pouvez maintenant exécuter une commande `check` pour vous assurer que tout est correct sur le disque récupéré. :snapraid -d NAME -a check Où NAME est le nom du disque, tel que `d1` dans notre exemple précédent. Les options -d et -a indiquent à SnapRAID de vérifier uniquement le disque spécifié et d'ignorer toutes les données de parité. Cette commande prendra beaucoup de temps, mais si vous n'êtes pas trop prudent, vous pouvez la sauter. ÉTAPE 4 -> Synchroniser (Sync) Exécutez la commande `sync` pour resynchroniser la baie avec le nouveau disque. :snapraid sync Si tout est récupéré, cette commande est immédiate. Commandes (Commands) SnapRAID fournit quelques commandes simples qui vous permettent de : * Afficher l'état de la grappe -> `status` * Contrôler les disques -> `smart`, `probe`, `up`, `down` * Créer un point de sauvegarde/récupération -> `sync` * Vérifier périodiquement les données -> `scrub` * Restaurer le dernier point de sauvegarde/récupération -> `fix`. Les commandes doivent être écrites en minuscules. status Affiche un résumé de l'état de la baie de disques. Il comprend des informations sur la fragmentation de la parité, l'âge des blocs sans vérification, et toutes les erreurs silencieuses enregistrées rencontrées lors du nettoyage. Les informations présentées se réfèrent au dernier moment où vous avez exécuté `sync`. Les modifications ultérieures ne sont pas prises en compte. Si des mauvais blocs ont été détectés, leurs numéros de blocs sont listés. Pour les corriger, vous pouvez utiliser la commande `fix -e`. Il montre également un graphique représentant la dernière fois que chaque bloc a été nettoyé ou synchronisé. Les blocs nettoyés sont affichés avec `*`, les blocs synchronisés mais pas encore nettoyés avec `o`. Rien n'est modifié. smart Affiche un rapport SMART de tous les disques du système. Il comprend une estimation de la probabilité de défaillance au cours de la prochaine année, vous permettant de planifier les remplacements de maintenance des disques qui présentent des attributs suspects. Cette estimation de probabilité est obtenue en corrélant les attributs SMART des disques avec les données Backblaze disponibles à : :https://www.backblaze.com/hard-drive-test-data.html Si SMART signale qu'un disque est en panne, `FAIL` ou `PREFAIL` est affiché pour ce disque, et SnapRAID retourne une erreur. Dans ce cas, le remplacement immédiat du disque est fortement recommandé. Les autres chaînes d'état possibles sont : logfail - Dans le passé, certains attributs étaient inférieurs au seuil. logerr - Le journal d'erreurs du périphérique contient des erreurs. selferr - Le journal d'auto-test du périphérique contient des erreurs. Si l'option `-v, --verbose` est spécifiée, une analyse statistique plus approfondie est fournie. Cette analyse peut vous aider à décider si vous avez besoin de plus ou moins de parité. Cette commande utilise l'outil `smartctl` et équivaut à exécuter `smartctl -a` sur tous les périphériques. Si vos périphériques ne sont pas détectés automatiquement correctement, vous pouvez spécifier une commande personnalisée en utilisant l'option `smartctl` dans le fichier de configuration. Rien n'est modifié. probe Affiche l'état d'ALIMENTATION de tous les disques du système. `Standby` signifie que le disque ne tourne pas. `Active` signifie que le disque tourne. Cette commande utilise l'outil `smartctl` et équivaut à exécuter `smartctl -n standby -i` sur tous les périphériques. Si vos périphériques ne sont pas détectés automatiquement correctement, vous pouvez spécifier une commande personnalisée en utilisant l'option `smartctl` dans le fichier de configuration. Rien n'est modifié. up Fait tourner (spin up) tous les disques de la baie. Vous pouvez faire tourner uniquement des disques spécifiques en utilisant l'option -d, --filter-disk. Faire tourner tous les disques en même temps nécessite beaucoup d'énergie. Assurez-vous que votre alimentation peut le supporter. Rien n'est modifié. down Arrête (spin down) tous les disques de la baie. Cette commande utilise l'outil `smartctl` et équivaut à exécuter `smartctl -s standby,now` sur tous les périphériques. Vous pouvez arrêter uniquement des disques spécifiques en utilisant l'option -d, --filter-disk. Pour arrêter automatiquement en cas d'erreur, vous pouvez utiliser l'option -s, --spin-down-on-error avec toute autre commande, ce qui équivaut à exécuter `down` manuellement lorsqu'une erreur se produit. Rien n'est modifié. diff Liste tous les fichiers modifiés depuis le dernier `sync` qui nécessitent la recomputation de leurs données de parité. Cette commande ne vérifie pas les données des fichiers, mais uniquement l'horodatage, la taille et l'inode du fichier. Après avoir listé tous les fichiers modifiés, un résumé des modifications est présenté, regroupé par : equal - Fichiers inchangés par rapport à avant. added - Fichiers ajoutés qui n'étaient pas présents auparavant. removed - Fichiers supprimés. updated - Fichiers avec une taille ou un horodatage différent, signifiant qu'ils ont été modifiés. moved - Fichiers déplacés ou renommés sur le même disque tout en conservant le même inode. Ils sont identifiés par le fait d'avoir le même inode, la même taille et le même horodatage, mais un chemin différent. Le nom du fichier peut également être différent. copied - Fichiers copiés sur le même disque ou sur un disque différent où le fichier original existe toujours. Ils sont identifiés par le fait qu'ils ont le même nom, la même taille et le même horodatage. Si l'horodatage à la sous-seconde est nul, le chemin complet doit correspondre pour être identifié, pas seulement le nom. relocated - Fichiers déplacés vers un répertoire différent ou un autre disque où le fichier original a disparu et l'inode n'est pas conservé. Ils sont identifiés par le fait d'avoir le même nom, la même taille et le même horodatage. Si l'horodatage à la sous-seconde est nul, le chemin complet doit correspondre pour être identifié. Contrairement aux fichiers 'moved', les fichiers relocalisés nécessitent que le nom du fichier reste le même. restored - Fichiers avec un inode différent mais dont le répertoire, le nom, la taille et l'horodatage correspondent. Il s'agit généralement de fichiers restaurés après avoir été supprimés. Si un `sync` est requis, le code de retour du processus est 2, au lieu du 0 par défaut. Le code de retour 1 est utilisé pour une condition d'erreur générique. Rien n'est modifié. sync Met à jour les informations de parité. Tous les fichiers modifiés dans la baie de disques sont lus, et les données de parité correspondantes sont mises à jour. Vous pouvez arrêter ce processus à tout moment en appuyant sur Ctrl+C, sans perdre le travail déjà effectué. Lors de la prochaine exécution, le processus `sync` reprendra là où il a été interrompu. Si des erreurs silencieuses ou d'entrée/sortie sont trouvées pendant le processus, les blocs correspondants sont marqués comme mauvais. Les fichiers sont identifiés par chemin et/ou inode et vérifiés par taille et horodatage. Si la taille ou l'horodatage du fichier diffère, les données de parité sont recomptées pour l'ensemble du fichier. Si le fichier est déplacé ou renommé sur le même disque, en gardant le même inode, la parité n'est pas recomptée. Si le fichier est déplacé vers un autre disque, la parité est recomptée, mais les informations de hachage précédemment calculées sont conservées. Les fichiers `content` et `parity` sont modifiés si nécessaire. Les fichiers dans la baie NE SONT PAS modifiés. scrub Nettoie la baie, vérifiant les erreurs silencieuses ou d'entrée/sortie dans les disques de données et de parité. Chaque invocation vérifie environ 8 % de la baie, en excluant les données déjà nettoyées au cours des 10 derniers jours. Cela signifie qu'un nettoyage une fois par semaine garantit que chaque bit de données est vérifié au moins une fois tous les trois mois. Vous pouvez définir un plan de nettoyage ou une quantité différente en utilisant l'option -p, --plan, qui accepte : bad - Nettoyer les blocs marqués mauvais. new - Nettoyer les blocs juste synchronisés qui n'ont pas encore été nettoyés. full - Nettoyer tout. 0-100 - Nettoyer le pourcentage spécifié de blocs. Si vous spécifiez un pourcentage, vous pouvez également utiliser l'option -o, --older-than pour définir l'âge que le bloc doit avoir. Les blocs les plus anciens sont nettoyés en premier, assurant une vérification optimale. Si vous souhaitez nettoyer uniquement les blocs juste synchronisés qui n'ont pas encore été nettoyés, utilisez l'option `-p new`. Pour obtenir des détails sur l'état du nettoyage, utilisez la commande `status`. Pour toute erreur silencieuse ou d'entrée/sortie trouvée, les blocs correspondants sont marqués comme mauvais dans le fichier `content`. Ces mauvais blocs sont listés dans `status` et peuvent être corrigés avec `fix -e`. Après la correction, lors du prochain nettoyage, ils seront revérifiés, et s'ils sont jugés corrigés, la marque "mauvais" sera supprimée. Pour nettoyer uniquement les mauvais blocs, vous pouvez utiliser la commande `scrub -p bad`. Il est recommandé d'exécuter `scrub` uniquement sur une baie synchronisée pour éviter les erreurs signalées causées par des données non synchronisées. Ces erreurs sont reconnues comme n'étant pas des erreurs silencieuses, et les blocs ne sont pas marqués comme mauvais, mais de telles erreurs sont signalées dans la sortie de la commande. Le fichier `content` est modifié pour mettre à jour l'heure de la dernière vérification de chaque bloc et pour marquer les mauvais blocs. Les fichiers `parity` NE SONT PAS modifiés. Les fichiers dans la baie NE SONT PAS modifiés. fix Répare tous les fichiers et les données de parité. Tous les fichiers et les données de parité sont comparés à l'état sauvegardé lors du dernier `sync`. Si une différence est trouvée, elle est restaurée à l'état enregistré. AVERTISSEMENT ! La commande `fix` ne fait pas de différence entre les erreurs et les modifications intentionnelles. Elle rétablit inconditionnellement l'état des fichiers tel qu'il était lors du dernier `sync`. Si aucune autre option n'est spécifiée, l'intégralité de la baie est traitée. Utilisez les options de filtre pour sélectionner un sous-ensemble de fichiers ou de disques sur lesquels opérer. Pour corriger uniquement les blocs marqués mauvais pendant `sync` et `scrub`, utilisez l'option -e, --filter-error. Contrairement aux autres options de filtre, celle-ci applique des corrections uniquement aux fichiers qui sont inchangés depuis le dernier `sync`. SnapRAID renomme tous les fichiers qui ne peuvent pas être corrigés en ajoutant l'extension `.unrecoverable`. Avant de corriger, l'intégralité de la baie est scannée pour trouver tout fichier déplacé depuis la dernière opération `sync`. Ces fichiers sont identifiés par leur horodatage, ignorant leur nom et leur répertoire, et sont utilisés dans le processus de récupération si nécessaire. Si vous en avez déplacé certains en dehors de la baie, vous pouvez utiliser l'option -i, --import pour spécifier des répertoires supplémentaires à scanner. Les fichiers sont identifiés uniquement par chemin, pas par inode. Le fichier `content` N'EST PAS modifié. Les fichiers `parity` sont modifiés si nécessaire. Les fichiers dans la baie sont modifiés si nécessaire. check Vérifie tous les fichiers et les données de parité. Il fonctionne comme `fix`, mais il simule seulement une récupération et aucune modification n'est écrite sur la baie. Cette commande est principalement destinée à la vérification manuelle, comme après un processus de récupération ou dans d'autres conditions spéciales. Pour les vérifications périodiques et planifiées, utilisez `scrub`. Si vous utilisez l'option -a, --audit-only, seules les données des fichiers sont vérifiées, et les données de parité sont ignorées pour une exécution plus rapide. Les fichiers sont identifiés uniquement par chemin, pas par inode. Rien n'est modifié. list Liste tous les fichiers contenus dans la baie au moment du dernier `sync`. Avec -v ou --verbose, l'heure en sous-seconde est également affichée. Rien n'est modifié. dup Liste tous les fichiers en double. Deux fichiers sont considérés comme égaux si leurs hachages correspondent. Les données des fichiers ne sont pas lues ; seuls les hachages précalculés sont utilisés. Rien n'est modifié. pool Crée ou met à jour une vue virtuelle de tous les fichiers de votre baie de disques dans le répertoire `pooling`. Les fichiers ne sont pas copiés mais liés à l'aide de liens symboliques. Lors de la mise à jour, tous les liens symboliques et les sous-répertoires vides existants sont supprimés et remplacés par la nouvelle vue de la baie. Tout autre fichier ordinaire est laissé en place. Rien n'est modifié en dehors du répertoire du pool. devices Affiche les périphériques de bas niveau utilisés par la baie. Cette commande affiche les associations de périphériques dans la baie et est principalement destinée à être une interface de script. Les deux premières colonnes sont l'ID et le chemin du périphérique de bas niveau. Les deux colonnes suivantes sont l'ID et le chemin du périphérique de haut niveau. La dernière colonne est le nom du disque dans la baie. Dans la plupart des cas, vous avez un périphérique de bas niveau pour chaque disque de la baie, mais dans certaines configurations plus complexes, vous pouvez avoir plusieurs périphériques de bas niveau utilisés par un seul disque de la baie. Rien n'est modifié. touch Définit un horodatage arbitraire en sous-seconde pour tous les fichiers qui l'ont défini à zéro. Cela améliore la capacité de SnapRAID à reconnaître les fichiers déplacés et copiés, car cela rend l'horodatage presque unique, réduisant les doublons possibles. Plus précisément, si l'horodatage en sous-seconde n'est pas zéro, un fichier déplacé ou copié est identifié comme tel s'il correspond au nom, à la taille et à l'horodatage. Si l'horodatage en sous-seconde est zéro, il est considéré comme une copie uniquement si le chemin complet, la taille et l'horodatage correspondent tous. L'horodatage à la seconde près n'est pas modifié, de sorte que toutes les dates et heures de vos fichiers seront préservées. rehash Planifie un nouveau hachage de toute la baie. Cette commande change le type de hachage utilisé, généralement lors de la mise à niveau d'un système 32 bits vers un système 64 bits, pour passer de MurmurHash3 au plus rapide SpookyHash. Si vous utilisez déjà le hachage optimal, cette commande ne fait rien et vous informe qu'aucune action n'est nécessaire. Le nouveau hachage n'est pas effectué immédiatement, mais a lieu progressivement pendant `sync` et `scrub`. Vous pouvez vérifier l'état du nouveau hachage en utilisant `status`. Pendant le nouveau hachage, SnapRAID conserve toutes ses fonctionnalités, à la seule exception que `dup` ne peut pas détecter les fichiers en double utilisant un hachage différent. locate Localise les fichiers stockés sur les disques de parité. Pour chaque fichier correspondant, il affiche son emplacement dans le fichier de parité et le nombre de fragments qu'il occupe. Vous pouvez utiliser l'option -t, --tail pour restreindre l'opération aux fichiers occupant la partie terminale spécifiée de la parité. Si vous souhaitez réallouer ces fichiers, vous pouvez alors utiliser l'option -W, --force-realloc-tail. Sachez que ces fichiers ne seront pas protégés par la parité pendant le processus de réallocation. Options SnapRAID fournit les options suivantes : -c, --conf CONFIG Sélectionne le fichier de configuration à utiliser. S'il n'est pas spécifié, sous Unix, il utilise le fichier `/usr/local/etc/snapraid.conf` s'il existe, sinon `/etc/snapraid.conf`. Sous Windows, il utilise le fichier `snapraid.conf` dans le même répertoire que `snapraid.exe`. -f, --filter PATTERN Filtre les fichiers à traiter dans `check` et `fix`. Seuls les fichiers correspondant au motif spécifié sont traités. Cette option peut être utilisée plusieurs fois. Voir la section PATTERN pour plus de détails sur les spécifications de motifs. Sous Unix, assurez-vous que les caractères de globbing sont entre guillemets s'ils sont utilisés. Cette option ne peut être utilisée qu'avec `check` et `fix`. Elle ne peut pas être utilisée avec `sync` et `scrub`, car ils traitent toujours l'intégralité de la baie. -d, --filter-disk NAME Filtre les disques à traiter dans `check`, `fix`, `up` et `down`. Vous devez spécifier un nom de disque tel que défini dans le fichier de configuration. Vous pouvez également spécifier des disques de parité avec les noms : `parity`, `2-parity`, `3-parity`, etc., pour limiter les opérations à un disque de parité spécifique. Si vous combinez plusieurs options --filter, --filter-disk et --filter-missing, seuls les fichiers correspondant à tous les filtres sont sélectionnés. Cette option peut être utilisée plusieurs fois. Cette option ne peut être utilisée qu'avec `check`, `fix`, `up` et `down`. Elle ne peut pas être utilisée avec `sync` et `scrub`, car ils traitent toujours l'intégralité de la baie. -m, --filter-missing Filtre les fichiers à traiter dans `check` et `fix`. Seuls les fichiers manquants ou supprimés de la baie sont traités. Lorsqu'elle est utilisée avec `fix`, cela agit comme une commande `undelete` (restaurer). Si vous combinez plusieurs options --filter, --filter-disk et --filter-missing, seuls les fichiers correspondant à tous les filtres sont sélectionnés. Cette option ne peut être utilisée qu'avec `check` et `fix`. Elle ne peut pas être utilisée avec `sync` et `scrub`, car ils traitent toujours l'intégralité de la baie. -e, --filter-error Traite les fichiers avec des erreurs dans `check` et `fix`. Il ne traite que les fichiers qui ont des blocs marqués avec des erreurs silencieuses ou d'entrée/sortie pendant `sync` et `scrub`, tels que listés dans `status`. Cette option ne peut être utilisée qu'avec `check` et `fix`. -p, --plan PERC|bad|new|full Sélectionne le plan de nettoyage. Si PERC est une valeur numérique de 0 à 100, elle est interprétée comme le pourcentage de blocs à nettoyer. Au lieu d'un pourcentage, vous pouvez spécifier un plan : `bad` nettoie les mauvais blocs, `new` nettoie les blocs qui n'ont pas encore été nettoyés, et `full` nettoie tout. Cette option ne peut être utilisée qu'avec `scrub`. -o, --older-than DAYS Sélectionne la partie la plus ancienne de la baie à traiter dans `scrub`. DAYS est l'âge minimum en jours pour qu'un bloc soit nettoyé ; la valeur par défaut est 10. Les blocs marqués comme mauvais sont toujours nettoyés, quelle que soit cette option. Cette option ne peut être utilisée qu'avec `scrub`. -a, --audit-only Dans `check`, vérifie le hachage des fichiers sans vérifier les données de parité. Si vous êtes intéressé uniquement par la vérification des données des fichiers, cette option peut accélérer considérablement le processus de vérification. Cette option ne peut être utilisée qu'avec `check`. -h, --pre-hash Dans `sync`, exécute une phase de hachage préliminaire de toutes les nouvelles données pour une vérification supplémentaire avant le calcul de la parité. Habituellement, dans `sync`, aucun hachage préliminaire n'est effectué, et les nouvelles données sont hachées juste avant le calcul de la parité lorsqu'elles sont lues pour la première fois. Ce processus se produit lorsque le système est soumis à une lourde charge, avec tous les disques en rotation et un processeur occupé. Il s'agit d'une condition extrême pour la machine, et si elle présente un problème matériel latent, des erreurs silencieuses peuvent passer inaperçues car les données ne sont pas encore hachées. Pour éviter ce risque, vous pouvez activer le mode `pre-hash` pour que toutes les données soient lues deux fois afin de garantir leur intégrité. Cette option vérifie également les fichiers déplacés au sein de la baie pour s'assurer que l'opération de déplacement a réussi et, si nécessaire, vous permet d'exécuter une opération fix avant de continuer. Cette option ne peut être utilisée qu'avec `sync`. -i, --import DIR Importe à partir du répertoire spécifié tous les fichiers supprimés de la baie après le dernier `sync`. Si vous avez toujours de tels fichiers, ils peuvent être utilisés par `check` et `fix` pour améliorer le processus de récupération. Les fichiers sont lus, y compris dans les sous-répertoires, et sont identifiés quel que soit leur nom. Cette option ne peut être utilisée qu'avec `check` et `fix`. -s, --spin-down-on-error En cas d'erreur, arrête (spin down) tous les disques gérés avant de quitter avec un code d'état non nul. Cela empêche les lecteurs de rester actifs et en rotation après une opération interrompue, aidant à éviter une accumulation inutile de chaleur et une consommation d'énergie. Utilisez cette option pour vous assurer que les disques sont arrêtés en toute sécurité même lorsqu'une commande échoue. -w, --bw-limit RATE Applique une limite de bande passante globale pour tous les disques. Le RATE est le nombre d'octets par seconde. Vous pouvez spécifier un multiplicateur tel que K, M, G ou T (par exemple, --bw-limit 1G). -t, --tail SIZE Limite la liste des fichiers à ceux n'utilisant pas plus que la taille de queue spécifiée des disques de parité. Vous pouvez utiliser des multiplicateurs tels que K, M, G ou T (ex: --tail 1G). Cette option n'est valide que lorsqu'elle est utilisée avec la commande `locate`. -A, --stats Active une vue d'état étendue qui affiche des informations supplémentaires. L'écran affiche deux graphiques : Le premier graphique montre le nombre de bandes mises en mémoire tampon pour chaque disque, ainsi que le chemin d'accès au fichier en cours d'accès sur ce disque. Généralement, le disque le plus lent n'aura pas de tampon disponible, ce qui détermine la bande passante maximale réalisable. Le deuxième graphique montre le pourcentage de temps passé en attente au cours des 100 dernières secondes. Le disque le plus lent est censé causer la majeure partie du temps d'attente, tandis que les autres disques devraient avoir peu ou pas de temps d'attente car ils peuvent utiliser leurs bandes mises en mémoire tampon. Ce graphique montre également le temps passé en attente pour les calculs de hachage et les calculs RAID. Tous les calculs s'exécutent en parallèle avec les opérations de disque. Par conséquent, tant qu'il y a un temps d'attente mesurable pour au moins un disque, cela indique que le processeur est suffisamment rapide pour suivre la charge de travail. -Z, --force-zero Force l'opération non sécurisée de synchronisation d'un fichier de taille zéro qui était auparavant non nul. Si SnapRAID détecte une telle condition, il arrête de procéder à moins que vous ne spécifiiez cette option. Cela vous permet de détecter facilement quand, après un plantage du système, certains fichiers accédés ont été tronqués. C'est une condition possible sous Linux avec les systèmes de fichiers ext3/ext4. Cette option ne peut être utilisée qu'avec `sync`. -E, --force-empty Force l'opération non sécurisée de synchronisation d'un disque avec tous les fichiers originaux manquants. Si SnapRAID détecte que tous les fichiers initialement présents sur le disque sont manquants ou réécrits, il arrête de procéder à moins que vous ne spécifiiez cette option. Cela vous permet de détecter facilement lorsqu'un système de fichiers de données n'est pas monté. Cette option ne peut être utilisée qu'avec `sync`. -U, --force-uuid Force l'opération non sécurisée de synchronisation, vérification et correction avec des disques qui ont changé leur UUID. Si SnapRAID détecte que certains disques ont changé d'UUID, il arrête de procéder à moins que vous ne spécifiiez cette option. Cela vous permet de détecter lorsque vos disques sont montés aux mauvais points de montage. Il est cependant autorisé d'avoir un seul changement d'UUID avec une seule parité, et plus avec une parité multiple, car c'est le cas normal lors du remplacement des disques après une récupération. Cette option ne peut être utilisée qu'avec `sync`, `check` ou `fix`. -D, --force-device Force l'opération non sécurisée de correction avec des disques inaccessibles ou avec des disques sur le même périphérique physique. Par exemple, si vous avez perdu deux disques de données et que vous avez un disque de rechange pour ne récupérer que le premier, vous pouvez ignorer le deuxième disque inaccessible. Ou, si vous souhaitez récupérer un disque dans l'espace libre restant sur un disque déjà utilisé, partageant le même périphérique physique. Cette option ne peut être utilisée qu'avec `fix`. -N, --force-nocopy Dans `sync`, `check` et `fix`, désactive l'heuristique de détection de copie. Sans cette option, SnapRAID suppose que les fichiers ayant les mêmes attributs, tels que le nom, la taille et l'horodatage, sont des copies avec les mêmes données. Cela permet d'identifier les fichiers copiés ou déplacés d'un disque à un autre et réutilise les informations de hachage déjà calculées pour détecter les erreurs silencieuses ou pour récupérer les fichiers manquants. Dans de rares cas, ce comportement peut entraîner des faux positifs ou un processus lent en raison de nombreuses vérifications de hachage, et cette option vous permet de résoudre de tels problèmes. Cette option ne peut être utilisée qu'avec `sync`, `check` et `fix`. -F, --force-full Dans `sync`, force un recomptage complet de la parité. Cette option peut être utilisée lorsque vous ajoutez un nouveau niveau de parité ou si vous êtes revenu à un ancien fichier de contenu utilisant des données de parité plus récentes. Au lieu de recréer la parité à partir de zéro, cela vous permet de réutiliser les hachages présents dans le fichier de contenu pour valider les données et maintenir la protection des données pendant le processus `sync` en utilisant les données de parité existantes. Cette option ne peut être utilisée qu'avec `sync`. -R, --force-realloc Dans `sync`, force une réallocation complète des fichiers et une reconstruction de la parité. Cette option peut être utilisée pour réallouer complètement tous les fichiers, en supprimant la fragmentation, tout en réutilisant les hachages présents dans le fichier de contenu pour valider les données. Cette option ne peut être utilisée qu'avec `sync`. AVERTISSEMENT ! Cette option est réservée aux experts, et il est fortement recommandé de ne pas l'utiliser. Vous N'AVEZ AUCUNE protection des données pendant l'opération `sync`. -W, --force-realloc-tail SIZE Fonctionne comme -R, --force-realloc, mais limité à la partie terminale spécifiée (les derniers SIZE octets) de chaque fichier de parité. Force la réallocation (déplacement) de tout fragment/bloc de fichier actuellement stocké dans cette section terminale, leur permettant d'être placés n'importe où dans le(s) fichier(s) de parité où de l'espace libre est disponible (y compris les trous existants). Le but principal de cette option est de réduire la taille sur disque du fichier de parité. Si la réallocation réussit à vider toute la section terminale (plus aucun bloc ne l'utilise), le fichier de parité est tronqué, récupérant l'espace terminal inutilisé. Vous pouvez utiliser des multiplicateurs tels que K, M, G ou T (ex: --force-realloc-tail 1G). Vous pouvez utiliser locate -t, --tail pour connaître à l'avance les fichiers affectés. AVERTISSEMENT ! Cette option est réservée aux experts et il est fortement recommandé de ne pas l'utiliser. Vous n'avez PAS de protection des données pendant l'opération `sync` pour les fichiers affectés. -l, --log FILE Écrit un journal détaillé dans le fichier spécifié. Si cette option n'est pas spécifiée, les erreurs inattendues sont imprimées à l'écran, ce qui peut entraîner une sortie excessive en cas de nombreuses erreurs. Lorsque -l, --log est spécifié, seules les erreurs fatales qui entraînent l'arrêt de SnapRAID sont imprimées à l'écran. Si le chemin commence par `>>`, le fichier est ouvert en mode ajout. Les occurrences de `%D` et `%T` dans le nom sont remplacées par la date et l'heure au format YYYYMMDD et HHMMSS. Dans les fichiers batch Windows, vous devez doubler le caractère `%`, par exemple, result-%%D.log. Pour utiliser `>>`, vous devez encadrer le nom de guillemets, par exemple, `">>result.log"`. Pour sortir le journal sur la sortie standard ou l'erreur standard, vous pouvez utiliser `">&1"` et `">&2"`, respectivement. Consultez le fichier ou la page de manuel snapraid_log.txt pour les descriptions des balises de journal. -L, --error-limit NUMBER Définit une nouvelle limite d'erreurs avant d'arrêter l'exécution. Par défaut, SnapRAID s'arrête s'il rencontre plus de 100 erreurs d'entrée/sortie, indiquant qu'un disque est probablement en panne. Cette option affecte `sync` et `scrub`, qui sont autorisés à continuer après le premier ensemble d'erreurs de disque pour essayer de terminer leurs opérations. Cependant, `check` et `fix` s'arrêtent toujours à la première erreur. -S, --start BLKSTART Commence le traitement à partir du numéro de bloc spécifié. Cela peut être utile pour réessayer de vérifier ou de corriger des blocs spécifiques en cas de disque endommagé. Cette option est principalement destinée à la récupération manuelle avancée et n'est prise en charge que par `check` et `fix`. -B, --count BLKCOUNT Ne traite que le nombre de blocs spécifié. Cette option est principalement destinée à la récupération manuelle avancée et n'est prise en charge que par `check` et `fix`. -C, --gen-conf CONTENT Génère un fichier de configuration factice à partir d'un fichier de contenu existant. Le fichier de configuration est écrit sur la sortie standard et n'écrase pas un fichier existant. Ce fichier de configuration contient également les informations nécessaires pour reconstruire les points de montage du disque au cas où vous perdriez l'intégralité du système. -v, --verbose Affiche plus d'informations à l'écran. S'il est spécifié une fois, il affiche les fichiers exclus et des statistiques supplémentaires. Cette option n'a aucun effet sur les fichiers journaux. -q, --quiet Affiche moins d'informations à l'écran. S'il est spécifié une fois, il supprime la barre de progression ; deux fois, les opérations en cours ; trois fois, les messages d'information ; quatre fois, les messages d'état. Les erreurs fatales sont toujours imprimées à l'écran. Cette option n'a aucun effet sur les fichiers journaux. -H, --help Affiche un écran d'aide court. -V, --version Affiche la version du programme. Configuration SnapRAID nécessite un fichier de configuration pour savoir où se trouve votre baie de disques et où stocker les informations de parité. Sous Unix, il utilise le fichier `/usr/local/etc/snapraid.conf` s'il existe, sinon `/etc/snapraid.conf`. Sous Windows, il utilise le fichier `snapraid.conf` dans le même répertoire que `snapraid.exe`. Il doit contenir les options suivantes (sensibles à la casse) : parity FILE [,FILE] ... Définit les fichiers à utiliser pour stocker les informations de parité. La parité permet une protection contre une seule défaillance de disque, similaire au RAID5. Vous pouvez spécifier plusieurs fichiers, qui doivent se trouver sur des disques différents. Lorsqu'un fichier ne peut plus grandir, le suivant est utilisé. L'espace total disponible doit être au moins aussi grand que le plus grand disque de données de la baie. Vous pouvez ajouter des fichiers de parité supplémentaires plus tard, mais vous ne pouvez pas les réorganiser ni les supprimer. Garder les disques de parité réservés à la parité garantit qu'ils ne deviennent pas fragmentés, améliorant les performances. Sous Windows, 256 Mo sont laissés inutilisés sur chaque disque pour éviter l'avertissement concernant les disques pleins. Cette option est obligatoire et ne peut être utilisée qu'une seule fois. (2,3,4,5,6)-parity FILE [,FILE] ... Définit les fichiers à utiliser pour stocker les informations de parité supplémentaires. Pour chaque niveau de parité spécifié, un niveau de protection supplémentaire est activé : * 2-parity active la double parité RAID6. * 3-parity active la triple parité. * 4-parity active la quadruple (quatre) parité. * 5-parity active la penta (cinq) parité. * 6-parity active l'hexa (six) parité. Chaque niveau de parité nécessite la présence de tous les niveaux de parité précédents. Les mêmes considérations que pour l'option `parity` s'appliquent. Ces options sont facultatives et ne peuvent être utilisées qu'une seule fois. z-parity FILE [,FILE] ... Définit un fichier et un format alternatifs pour stocker la triple parité. Cette option est une alternative à `3-parity`, principalement destinée aux processeurs bas de gamme comme ARM ou AMD Phenom, Athlon et Opteron qui ne prennent pas en charge l'ensemble d'instructions SSSE3. Dans de tels cas, elle offre de meilleures performances. Ce format est similaire mais plus rapide que celui utilisé par ZFS RAIDZ3. Comme ZFS, il ne fonctionne pas au-delà de la triple parité. Lors de l'utilisation de `3-parity`, vous serez averti s'il est recommandé d'utiliser le format `z-parity` pour une amélioration des performances. Il est possible de convertir d'un format à l'autre en ajustant le fichier de configuration avec le fichier z-parity ou 3-parity souhaité et en utilisant `fix` pour le recréer. content FILE Définit le fichier à utiliser pour stocker la liste et les sommes de contrôle de tous les fichiers présents dans votre baie de disques. Il peut être placé sur un disque utilisé pour les données, la parité, ou tout autre disque disponible. Si vous utilisez un disque de données, ce fichier est automatiquement exclu du processus `sync`. Cette option est obligatoire et peut être utilisée plusieurs fois pour enregistrer plusieurs copies du même fichier. Vous devez stocker au moins une copie pour chaque disque de parité utilisé plus un. L'utilisation de copies supplémentaires ne nuit pas. data NAME DIR Définit le nom et le point de montage des disques de données dans la baie. NAME est utilisé pour identifier le disque et doit être unique. DIR est le point de montage du disque dans le système de fichiers. Vous pouvez modifier le point de montage au besoin, tant que vous gardez le NAME fixe. Cependant, le chemin configuré doit pointer de manière cohérente vers les mêmes données sous-jacentes. Si le chemin contient des liens symboliques, leurs cibles doivent rester stables. La modification de ces liens symboliques pour changer le répertoire de données à la volée n'est pas prise en charge. Vous devriez utiliser une option pour chaque disque de données de la baie. Vous pouvez renommer un disque plus tard en changeant le NAME directement dans le fichier de configuration, puis en exécutant une commande `sync`. Dans le cas d'un renommage, l'association est faite en utilisant l'UUID stocké des disques. extra NAME DIR Définit le nom et le point de montage de disques supplémentaires à surveiller avec les commandes `smart` et `probe`. Ceci est utile pour surveiller des disques qui ne font pas partie de la grappe mais qui sont nécessaires au fonctionnement du système, comme le disque de démarrage. Notez que ces disques ne sont pas affectés par les commandes `up` et `down` car ils sont censés toujours être en rotation. snapshot Active l'utilisation des instantanés du système de fichiers pour les commandes `sync`, `scrub`, `check` et `fix`. Lorsqu'elle est activée, SnapRAID crée un instantané en lecture seule de chaque système de fichiers de données pris en charge au début d'un 'sync'. Cela fournit une vue stable de chaque système de fichiers, empêchant les modifications ultérieures de modifier les données utilisées pour le calcul de la parité. Cela améliore considérablement la récupération : si un fichier est supprimé du système de fichiers actif, il reste préservé dans l'instantané. Cela évite que la parité ne devienne "rompue" pour ce bloc, garantissant que vous pouvez toujours récupérer les données avec succès si un autre disque tombe en panne. Cette option s'applique exclusivement aux disques de données formatés avec les systèmes de fichiers Btrfs, Bcachefs ou ZFS sous Linux et NTFS sous Windows. Les disques de parité, ou les disques de données utilisant d'autres systèmes de fichiers, utiliseront toujours la version active du système de fichiers. La création et la suppression d'instantanés nécessitent des privilèges d'administration. Assurez-vous que SnapRAID est exécuté avec les autorisations nécessaires (par exemple, sudo) lorsque cette option est activée. Consultez la section SNAPSHOTS pour une explication détaillée du cycle de vie des instantanés. nohidden Exclut tous les fichiers et répertoires cachés. Sous Unix, les fichiers cachés sont ceux commençant par `.`. Sous Windows, ce sont ceux avec l'attribut caché. exclude/include PATTERN Définit les motifs de fichiers ou de répertoires à exclure ou à inclure dans le processus de synchronisation. Tous les motifs sont traités dans l'ordre spécifié. Si le premier motif qui correspond est un `exclude` (exclure), le fichier est exclu. S'il s'agit d'un `include` (inclure), le fichier est inclus. Si aucun motif ne correspond, le fichier est exclu si le dernier motif spécifié est un `include`, ou inclus si le dernier motif spécifié est un `exclude`. Notez que le filtrage s'effectue de manière hiérarchique lors du parcours des répertoires. Si un répertoire correspond à une règle `exclude`, l'ensemble du répertoire est ignoré (élagué), et aucune règle `include` pour les fichiers ou sous-répertoires qu'il contient ne sera évaluée. Voir la section PATTERN pour plus de détails sur les spécifications de motifs. Cette option peut être utilisée plusieurs fois. blocksize SIZE_IN_KIBIBYTES Définit la taille de bloc de base en kibioctets pour la parité. Un kibioctet est de 1024 octets. La taille de bloc par défaut est de 256, ce qui devrait fonctionner dans la plupart des cas. AVERTISSEMENT ! Cette option est réservée aux experts, et il est fortement recommandé de ne pas modifier cette valeur. Pour modifier cette valeur à l'avenir, vous devrez recréer l'intégralité de la parité ! Une raison d'utiliser une taille de bloc différente est si vous avez beaucoup de petits fichiers, de l'ordre de millions. Pour chaque fichier, même s'il ne contient que quelques octets, un bloc entier de parité est alloué, et avec de nombreux fichiers, cela peut entraîner un espace de parité inutilisé important. Lorsque vous remplissez complètement le disque de parité, vous n'êtes pas autorisé à ajouter plus de fichiers aux disques de données. Cependant, la parité gaspillée ne s'accumule pas sur les disques de données. L'espace gaspillé résultant d'un grand nombre de fichiers sur un disque de données limite uniquement la quantité de données sur ce disque de données, pas les autres. À titre d'approximation, vous pouvez supposer que la moitié de la taille de bloc est gaspillée pour chaque fichier. Par exemple, avec 100 000 fichiers et une taille de bloc de 256 Kio, vous gaspillerez 12,8 Go de parité, ce qui peut entraîner 12,8 Go d'espace en moins disponible sur le disque de données. Vous pouvez vérifier la quantité d'espace gaspillé sur chaque disque en utilisant `status`. C'est la quantité d'espace que vous devez laisser libre sur les disques de données ou utiliser pour les fichiers non inclus dans la baie. Si cette valeur est négative, cela signifie que vous êtes près de remplir la parité, et cela représente l'espace que vous pouvez encore gaspiller. Pour éviter ce problème, vous pouvez utiliser une partition plus grande pour la parité. Par exemple, si la partition de parité est 12,8 Go plus grande que les disques de données, vous avez suffisamment d'espace supplémentaire pour gérer jusqu'à 100 000 fichiers sur chaque disque de données sans aucun espace gaspillé. Une astuce pour obtenir une partition de parité plus grande sous Linux est de la formater avec la commande : :mkfs.ext4 -m 0 -T largefile4 DEVICE Cela se traduit par environ 1,5 % d'espace supplémentaire, environ 60 Go pour un disque de 4 To, ce qui permet environ 460 000 fichiers sur chaque disque de données sans aucun espace gaspillé. hashsize SIZE_IN_BYTES Définit la taille du hachage en octets pour les blocs enregistrés. La taille de hachage par défaut est de 16 octets (128 bits), ce qui devrait fonctionner dans la plupart des cas. AVERTISSEMENT ! Cette option est réservée aux experts, et il est fortement recommandé de ne pas modifier cette valeur. Pour modifier cette valeur à l'avenir, vous devrez recréer l'intégralité de la parité ! Une raison d'utiliser une taille de hachage différente est si votre système a une mémoire limitée. En règle générale, SnapRAID nécessite 1 Gio de RAM pour chaque 16 To de données dans la baie. Plus précisément, pour stocker les hachages des données, SnapRAID nécessite environ TS*(1+HS)/BS octets de RAM, où TS est la taille totale en octets de votre baie de disques, BS est la taille de bloc en octets, et HS est la taille de hachage en octets. Par exemple, avec 8 disques de 4 To, une taille de bloc de 256 Kio (1 Kio = 1024 octets) et une taille de hachage de 16, vous obtenez : :RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1,93 Gio En passant à une taille de hachage de 8, vous obtenez : :RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1,02 Gio En passant à une taille de bloc de 512, vous obtenez : :RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0,96 Gio En passant à la fois à une taille de hachage de 8 et à une taille de bloc de 512, vous obtenez : :RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0,51 Gio autosave SIZE_IN_GIGABYTES Enregistre automatiquement l'état lors de la synchronisation ou du nettoyage après la quantité spécifiée de Go traités. Cette option est utile pour éviter de redémarrer de longues commandes `sync` à partir de zéro si elles sont interrompues par un plantage de la machine ou tout autre événement. temp_limit TEMPERATURE_CELSIUS Définit la température maximale autorisée du disque en Celsius. Lorsqu'elle est spécifiée, SnapRAID vérifie périodiquement la température de tous les disques à l'aide de l'outil smartctl. Les températures actuelles des disques sont affichées pendant que SnapRAID fonctionne. Si un disque dépasse cette limite, toutes les opérations s'arrêtent et les disques sont arrêtés (mis en veille) pendant la durée définie par l'option `temp_sleep`. Après la période de veille, les opérations reprennent, pouvant s'arrêter à nouveau si la limite de température est de nouveau atteinte. Pendant le fonctionnement, SnapRAID analyse également la courbe de chauffe de chaque disque et estime la température stable à long terme qu'ils sont censés atteindre si l'activité continue. L'estimation n'est effectuée qu'après que la température du disque a augmenté quatre fois, garantissant que suffisamment de points de données sont disponibles pour établir une tendance fiable. Cette température stable prédite est affichée entre parenthèses à côté de la valeur actuelle et aide à évaluer si le refroidissement du système est adéquat. Cette température estimée est uniquement à titre informatif et n'a aucun effet sur le comportement de SnapRAID. Les actions du programme sont basées uniquement sur les températures réelles mesurées des disques. Pour effectuer cette analyse, SnapRAID a besoin d'une référence pour la température du système. Il tente d'abord de la lire à partir des capteurs matériels disponibles. Si aucun capteur système n'est accessible, il utilise la température de disque la plus basse mesurée au début de l'exécution comme référence de secours. Normalement, SnapRAID n'affiche que la température du disque le plus chaud. Pour afficher la température de tous les disques, utilisez l'option `-A, --stats`. temp_sleep TIME_IN_MINUTES Définit le temps de veille, en minutes, lorsque la limite de température est atteinte. Pendant cette période, les disques restent arrêtés. La valeur par défaut est de 5 minutes. pool DIR Définit le répertoire de mise en commun où la vue virtuelle de la baie de disques est créée à l'aide de la commande `pool`. Le répertoire doit déjà exister. share UNC_DIR Définit le chemin UNC Windows requis pour accéder aux disques à distance. Si cette option est spécifiée, les liens symboliques créés dans le répertoire du pool utilisent ce chemin UNC pour accéder aux disques. Sans cette option, les liens symboliques générés utilisent uniquement des chemins locaux, ce qui ne permet pas de partager le répertoire du pool sur le réseau. Les liens symboliques sont formés en utilisant le chemin UNC spécifié, en ajoutant le nom du disque tel que spécifié dans l'option `data`, et en ajoutant enfin le répertoire et le nom du fichier. Cette option est requise uniquement pour Windows. smartctl DISK/PARITY OPTIONS... Définit les options smartctl personnalisées pour obtenir les attributs SMART de chaque disque. Cela peut être nécessaire pour les contrôleurs RAID et certains disques USB qui ne peuvent pas être détectés automatiquement. Le placeholder %s est remplacé par le nom du périphérique, mais il est facultatif pour les périphériques fixes comme les contrôleurs RAID. DISK est le même nom de disque spécifié dans l'option `data`. PARITY est l'un des noms de parité : `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` ou `z-parity`. Dans les OPTIONS spécifiées, la chaîne `%s` est remplacée par le nom du périphérique. Pour les contrôleurs RAID, le périphérique est probablement fixe, et vous n'aurez peut-être pas besoin d'utiliser `%s`. Vous pouvez également spécifier une chaîne d'options d'information personnalisée à l'aide de la balise `[info: ...]` pour remplacer l'option `-a` par défaut. Consultez la documentation smartmontools pour les options possibles : :https://www.smartmontools.org/wiki/Supported_RAID-Controllers :https://www.smartmontools.org/wiki/Supported_USB-Devices Par exemple : :smartctl d1 [info: -H -i -c -A] -d sat %s :smartctl parity -d sat %s smartignore DISK/PARITY ATTR [ATTR...] Ignore l'attribut SMART spécifié lors du calcul de la probabilité de défaillance du disque. Cette option est utile si un disque signale des valeurs inhabituelles ou trompeuses pour un attribut particulier. DISK est le même nom de disque spécifié dans l'option `data`. PARITY est l'un des noms de parité : `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` ou `z-parity`. La valeur spéciale * peut être utilisée pour ignorer l'attribut sur tous les disques. Plusieurs attributs peuvent être spécifiés séparés par des espaces. Chaque attribut peut être spécifié sous forme de nombre de 1 à 255, ou sous forme de nom insensible à la casse (par exemple `Current_Pending_Sector`). Par exemple, pour ignorer les attributs `Current Pending Sector Count` et `Reallocated Sectors Count` sur tous les disques par leur numéro ou leur nom : :smartignore * 197 5 :smartignore * Current_Pending_Sector Reallocated_Sector_Ct Pour les ignorer uniquement sur le premier disque de parité : :smartignore parity 197 5 Exemples (Examples) Un exemple de configuration typique pour Unix est : :parity /mnt/diskp/snapraid.parity :content /mnt/diskp/snapraid.content :content /var/snapraid/snapraid.content :data d1 /mnt/disk1/ :data d2 /mnt/disk2/ :data d3 /mnt/disk3/ :exclude /lost+found/ :exclude /tmp/ :smartctl d1 [info: -H -i -c -A] -d sat %s :smartctl d2 -d usbjmicron %s :smartctl parity -d areca,1/1 /dev/sg0 :smartctl 2-parity -d areca,2/1 /dev/sg0 Un exemple de configuration typique pour Windows est : :parity E:\snapraid.parity :content E:\snapraid.content :content C:\snapraid\snapraid.content :data d1 G:\array\ :data d2 H:\array\ :data d3 I:\array\ :exclude Thumbs.db :exclude \$RECYCLE.BIN :exclude \System Volume Information :smartctl d1 [info: -H -i -c -A] -d sat %s :smartctl d2 -d usbjmicron %s :smartctl parity -d areca,1/1 /dev/arcmsr0 :smartctl 2-parity -d areca,2/1 /dev/arcmsr0 Snapshots Si l'option snapshot est activée dans la configuration, SnapRAID utilise les instantanés du système de fichiers pour maintenir stables les données lues pendant une opération, même si des fichiers sur les systèmes de fichiers actifs sont ultérieurement modifiés ou supprimés. La gestion des instantanés est entièrement automatique et transparente. Vous pouvez continuer à utiliser SnapRAID exactement comme avant, avec la protection supplémentaire fournie par les instantanés gérés entièrement en arrière-plan. Cela offre deux avantages principaux : Cohérence - Les fichiers modifiés sur le système de fichiers actif pendant un sync ou un scrub de longue durée ne provoqueront pas de déséquilibres de parité ni d'opérations abandonnées, car chaque système de fichiers avec instantané reste inchangé pendant toute la durée de l'opération. Récupération - Si un fichier est mis à jour ou supprimé du système de fichiers actif, il reste préservé dans l'instantané. Si une panne de disque survient avant l'exécution du prochain sync, SnapRAID utilise les données préservées dans l'instantané pour reconstruire le disque défaillant. En cas de panne de disque pendant un processus de sync actif, SnapRAID est également capable de lire automatiquement à la fois l'instantané du calcul de parité précédent et celui en cours. Cela maximise la probabilité d'une récupération complète en fournissant un accès aux blocs de données exacts requis pour résoudre les équations de parité, même si ces blocs ont été modifiés ou supprimés entre les syncs. Sans instantanés, un fichier mis à jour ou supprimé sur un disque sain entraîne des blocs de données manquants qui pourraient être nécessaires pour réparer d'autres disques défaillants. Les instantanés sont créés uniquement pour les disques de données et uniquement si le système de fichiers sous-jacent prend en charge cette fonctionnalité. Les disques de parité utilisent toujours le système de fichiers actif. Actuellement, cela est pris en charge sur Btrfs, Bcachefs et ZFS sous Linux et sur NTFS sous Windows. Vous pouvez mélanger des disques de données avec différents systèmes de fichiers. Seuls ceux qui prennent en charge les instantanés les utiliseront, tandis que les autres disques continueront à fonctionner directement sur le système de fichiers actif. La création et la suppression d'instantanés nécessitent des privilèges d'administration. Assurez-vous que SnapRAID est exécuté avec les autorisations nécessaires (par exemple, sudo) lorsque les instantanés sont activés. Comportement des commandes avec les instantanés (Command Behavior with Snapshots) Les commandes `sync` et `scrub` utilisent des instantanés pour les disques de données dont les systèmes de fichiers les prennent en charge. Sur un disque avec instantané, la commande voit une image stable du système de fichiers non affectée par les modifications simultanées sur le système de fichiers actif. Pendant un `sync`, un nouvel instantané est créé indépendamment pour chaque système de fichiers de données pris en charge. Ces instantanés fournissent collectivement les données utilisées pour le calcul de la parité. En contrepartie, la commande `scrub` utilise le dernier instantané, celui créé lors du sync le plus récent, pour maintenir un point de référence fiable qui correspond à la parité existante. Pour les commandes `check` et `fix`, l'utilisation du dernier instantané dépend du ciblage ou non de disques spécifiques à l'aide de l'option -d, --filter-disk. Un disque explicitement sélectionné via -d (la "cible" de l'opération) utilise toujours le système de fichiers actif. Pour `fix`, cela permet de restaurer les données sur le disque de remplacement actif. Pour `check`, cela permet de simuler l'opération `fix` dans les mêmes conditions. Tous les autres disques de données (les disques de "référence") seront accessibles via leurs instantanés. Cela garantit que même si vous modifiez des fichiers sur vos disques sains pendant qu'une récupération est en cours, SnapRAID dispose d'une référence stable et figée pour résoudre les équations de parité. Si aucune option -d n'est fournie, SnapRAID suppose que l'opération s'applique à l'ensemble de la grappe, dans ce cas, `check` et `fix` utiliseront exclusivement les systèmes de fichiers actifs. Toutes les autres commandes fonctionnent exclusivement sur le système de fichiers actif. Cycle de vie des instantanés (Snapshots Lifecycle) SnapRAID gère trois instantanés spécifiques, `stable`, `pending` et `scan`, dans un répertoire caché à la racine de chaque sous-volume de données. Dans Btrfs, Bcachefs et NTFS, le répertoire `.snapraid/` est utilisé, dans ZFS, le répertoire standard `.zfs/snapshot/`. L'instantané `stable` représente l'état du dernier `sync` terminé avec succès, contenant les données exactes utilisées pour calculer la parité actuelle. Il sert de source de données principale pour les commandes `scrub`, `check` et `fix`. L'instantané `scan` est une image temporaire créée au début d'un `sync` pour fournir un état figé pour le balayage et le calcul de la parité. Après le balayage et l'enregistrement du nouvel état du contenu, il remplace l'instantané `pending` précédent. L'instantané `pending` est l'image utilisée par un `sync` interrompu. Une fois l'opération terminée avec succès, l'instantané `stable` précédent est supprimé, et l'instantané `pending` est promu pour prendre sa place en tant que nouvelle référence stable. Si un `sync` est interrompu, l'instantané `pending` est préservé. Les commandes ultérieures `scrub`, `check` et `fix` utiliseront cet instantané en attente car il correspond à l'état du système de fichiers enregistré dans le fichier .content, même si la parité n'est que partiellement synchronisée. En cas d'interruption de `sync`, les commandes `check` et `fix` lisent également à partir de l'instantané `stable` pour récupérer les blocs de données des fichiers qui ont été mis à jour ou supprimés pendant le sync. Cela est possible car le fichier .content conserve les métadonnées de tous les fichiers modifiés ou supprimés tout au long du processus de sync. Ces informations historiques ne sont effacées qu'une fois qu'un sync se termine avec succès et que la version finale du fichier .content est enregistrée. Si un `sync` est redémarré après une interruption, l'instantané pending existant est supprimé et un nouveau est créé pour capturer l'état actuel du système de fichiers actif. Cependant, si un `sync` est interrompu, évitez de modifier, supprimer, remplacer ou déplacer des fichiers jusqu'à ce qu'un `sync` ultérieur se termine avec succès. La parité peut encore contenir des blocs calculés à partir de l'instantané utilisé par le sync interrompu. Un sync ultérieur peut remplacer cet instantané, rendant les versions intermédiaires des fichiers indisponibles pour la récupération. Sauvegardes externes avec les instantanés de système de fichiers (External backups with filesystem snapshots) Lorsque les instantanés de système de fichiers sont activés, SnapRAID accède aux instantanés ou les crée à la racine de chaque sous-volume, volume ou jeu de données (dataset). Un moyen simple d'éviter toute interférence avec les outils externes consiste à faire pointer la configuration `data` vers un sous-répertoire ordinaire au sein du sous-volume ou du volume (par exemple `/mnt/subvol/data` au lieu de `/mnt/subvol`). SnapRAID crée toujours le répertoire d'instantanés à la racine du sous-volume (par exemple `/mnt/subvol/.snapraid/`), laissant le sous-répertoire de données propre de sorte que les instantanés restent à l'extérieur et invisibles pour les outils de sauvegarde opérant à l'intérieur. Sinon, si votre répertoire `data` configuré est lui-même la racine du sous-volume ou du volume, SnapRAID crée un répertoire `.snapraid/` directement à l'intérieur (sur Btrfs, Bcachefs et NTFS). Bien que SnapRAID exclue automatiquement ce répertoire de ses propres analyses, les outils de sauvegarde externes ou les synchroniseurs de fichiers le rencontreront. S'il n'est pas exclu, ils peuvent traverser les instantanés ou les liens de répertoires et copier l'ensemble de l'arborescence figée, dupliquant les données et risquant d'épuiser l'espace de sauvegarde. Configurez toujours les outils de sauvegarde externes pour exclure le répertoire `.snapraid/`. Sur ZFS, les instantanés sont exposés via le répertoire virtuel standard `.zfs/snapshot/` plutôt que `.snapraid/`. Par défaut (`snapdir=hidden`), ZFS masque ce répertoire des listes de fichiers, de sorte que les outils de sauvegarde externes ne le parcourront pas. Si vous avez activé `snapdir=visible`, veillez à ce que vos outils de sauvegarde excluent le répertoire `.zfs/`. Motif (Pattern) Les motifs offrent un moyen flexible de filtrer les fichiers à inclure ou à exclure. En utilisant des caractères de "globbing", vous pouvez définir des règles qui correspondent à des noms de fichiers spécifiques ou à des structures de répertoires entières sans lister chaque chemin manuellement. Le point d'interrogation `?` correspond à n'importe quel caractère unique, sauf le séparateur de répertoire. Cela le rend utile pour faire correspondre des noms de fichiers avec des caractères variables tout en limitant le motif à un seul niveau de répertoire. L'étoile simple `*` correspond à n'importe quelle séquence de caractères, mais comme le point d'interrogation, elle ne traverse jamais les frontières des répertoires. Elle s'arrête à la barre oblique, ce qui la rend adaptée à la recherche de correspondances au sein d'un seul composant de chemin. Il s'agit du comportement standard des jokers familier du "globbing" shell. Le caractère générique double étoile `**` ne correspond à travers les séparateurs de répertoires que lorsqu'il est adjacent à un séparateur de répertoires (précédé ou suivi d'une barre oblique). Sous cette forme, il correspond à zéro ou plusieurs caractères sur plusieurs niveaux de répertoires. Par exemple, `foo/**/bar` correspond à `foo/bar`, `foo/a/bar` et `foo/a/b/bar` ; `**/build` correspond à `build` et `foo/bar/build` ; et `src/**.js` correspond à `src/main.js` et `src/ui/components/main.js`. La forme autonome `/**/` n'est pas acceptée comme un motif complet. Lorsque `**` n'est pas adjacent à une barre oblique, il se comporte comme `*` et ne correspond pas aux séparateurs de répertoires. Par exemple, `**.jpg` correspond à `photo.jpg` dans le répertoire actuel, mais ne correspond pas à `dir/photo.jpg`. Utilisez `**/*.jpg` à cette fin. Les classes de caractères utilisant des crochets `[]` correspondent à un seul caractère d'un ensemble ou d'une plage spécifiés. Comme les autres motifs à caractère unique, elles ne correspondent pas aux séparateurs de répertoires. Les classes supportent les plages et la négation à l'aide d'un point d'exclamation. La distinction fondamentale à retenir est que `*`, `?` et les classes de caractères respectent tous les limites des répertoires et ne correspondent qu'au sein d'un seul composant de chemin, alors que `**` ne peut correspondre à travers les séparateurs de répertoires que lorsqu'il est adjacent à une barre oblique. Il existe quatre types de motifs différents : =FILE Sélectionne n'importe quel fichier nommé FILE. Ce motif s'applique uniquement aux fichiers, pas aux répertoires. =DIR/ Sélectionne n'importe quel répertoire nommé DIR et tout son contenu. Ce motif s'applique uniquement aux répertoires, pas aux fichiers. =/PATH/FILE Sélectionne le chemin exact du fichier spécifié. Ce motif s'applique uniquement aux fichiers, pas aux répertoires. =/PATH/DIR/ Sélectionne le chemin exact du répertoire spécifié et tout son contenu. Ce motif s'applique uniquement aux répertoires, pas aux fichiers. Lorsque vous spécifiez un chemin absolu commençant par /, il est appliqué à la racine de la baie, et non à la racine du système de fichiers local. Sous Windows, vous pouvez utiliser la barre oblique inverse \ au lieu de la barre oblique /. Les répertoires système Windows, les jonctions, les points de montage et les autres répertoires spéciaux Windows sont traités comme des fichiers, ce qui signifie que pour les exclure, vous devez utiliser une règle de fichier, pas une règle de répertoire. Si le nom de fichier contient un caractère `*`, `?`, `[`, ou `]`, vous devez l'échapper pour éviter qu'il ne soit interprété comme un caractère de globbing. Sous Unix, le caractère d'échappement est `\` ; sous Windows, c'est `^`. Lorsque le motif est sur la ligne de commande, vous devez doubler le caractère d'échappement pour éviter qu'il ne soit interprété par le shell de commande. Dans le fichier de configuration, vous pouvez utiliser différentes stratégies pour filtrer les fichiers à traiter. L'approche la plus simple consiste à n'utiliser que des règles `exclude` pour supprimer tous les fichiers et répertoires que vous ne voulez pas traiter. Par exemple : :# Exclut tout fichier nommé `*.unrecoverable` :exclude *.unrecoverable :# Exclut le répertoire racine `/lost+found` :exclude /lost+found/ :# Exclut tout sous-répertoire nommé `tmp` :exclude tmp/ L'approche opposée consiste à ne définir que les fichiers que vous souhaitez traiter, en n'utilisant que des règles `include`. Par exemple : :# Inclut uniquement certains répertoires :include /movies/ :include /musics/ :include /pictures/ L'approche finale consiste à mélanger les règles `exclude` et `include`. Dans ce cas, l'ordre des règles est important. Les règles antérieures ont préséance sur les règles ultérieures. Pour simplifier, vous pouvez lister toutes les règles `exclude` d'abord, puis toutes les règles `include`. Par exemple : :# Exclut tout fichier nommé `*.unrecoverable` :exclude *.unrecoverable :# Exclut tout sous-répertoire nommé `tmp` :exclude tmp/ :# Inclut uniquement certains répertoires :include /movies/ :include /musics/ :include /pictures/ Notez que l'exclusion d'un répertoire (en utilisant DIR/ ou /CHEMIN/DIR/) empêche SnapRAID d'entrer et de parcourir ce répertoire. Par conséquent, il n'est pas possible de réinclure un fichier ou un sous-répertoire situé dans un répertoire parent exclu, car le scanner ne le parcourt jamais. Par exemple, la configuration suivante n'inclura PAS `file.dat` car `/keep/` est élagué avant que `file.dat` ne puisse être examiné : :# Ne fonctionne PAS : /keep/ est entièrement ignoré :include /keep/file.dat :exclude /keep/ Pour exclure les fichiers d'un répertoire tout en conservant certains fichiers spécifiques, appliquez le motif d'exclusion aux fichiers du répertoire plutôt que d'exclure le répertoire lui-même : :# Fonctionne : /keep/ est parcouru, mais les autres fichiers qu'il contient sont exclus :include /keep/file.dat :exclude /keep/* Sur la ligne de commande, en utilisant l'option -f, vous ne pouvez utiliser que des motifs `include`. Par exemple : :# Vérifie uniquement les fichiers .mp3. :# Sous Unix, utilisez des guillemets pour éviter l'expansion :# du globbing par le shell. :snapraid -f "*.mp3" check Sous Unix, lorsque vous utilisez des caractères de globbing sur la ligne de commande, vous devez les mettre entre guillemets pour empêcher le shell de les développer. Ignorer des Fichiers (Ignore File) En plus des règles globales du fichier de configuration, vous pouvez placer des fichiers `.snapraidignore` dans n'importe quel répertoire de la grappe pour définir des règles d'exclusion décentralisées. Les règles définies dans `.snapraidignore` sont appliquées après les règles du fichier de configuration. Cela signifie qu'elles ont une priorité plus élevée et peuvent être utilisées pour exclure des fichiers qui étaient précédemment inclus par la configuration globale. En pratique, si une règle locale correspond, le fichier est exclu quels que soient les paramètres d'inclusion globaux. La logique des motifs dans `.snapraidignore` reflète la configuration globale mais ancre les motifs au répertoire où se trouve le fichier : =FILE Sélectionne n'importe quel fichier nommé FILE dans ce répertoire ou en dessous. Cela suit les mêmes règles de globbing que le motif global. =DIR/ Sélectionne n'importe quel répertoire nommé DIR et tout son contenu, résidant dans ce répertoire ou en dessous. =/PATH/FILE Sélectionne le fichier exact spécifié par rapport à l'emplacement du fichier `.snapraidignore`. =/PATH/DIR/ Sélectionne le répertoire exact spécifié et tout son contenu, par rapport à l'emplacement du fichier `.snapraidignore`. Contrairement à la configuration globale, les fichiers `.snapraidignore` ne prennent en charge que les règles d'exclusion ; vous ne pouvez pas utiliser de motifs `include` ou de négation (!). Par exemple, si vous avez un `.snapraidignore` dans `/mnt/disk1/projects/` : :# Exclut UNIQUEMENT /mnt/disk1/projects/output.bin :/output.bin :# Exclut tout répertoire nommé `build` dans projects/ :build/ :# Exclut tout fichier .tmp dans projects/ ou ses sous-dossiers :*.tmp Contenu (Content) SnapRAID stocke la liste et les sommes de contrôle de vos fichiers dans le fichier de contenu. Il s'agit d'un fichier binaire qui répertorie tous les fichiers présents dans votre baie de disques, ainsi que toutes les sommes de contrôle pour vérifier leur intégrité. Le fichier de contenu est lu et écrit par les commandes `sync`, `scrub`, `touch` et `rehash`. Il est lu par les commandes `status`, `diff`, `check`, `fix`, `list`, `dup`, `locate` et `pool`, et il est complètement ignoré par les commandes `smart`, `probe`, `up`, `down` et `devices`. Parité (Parity) SnapRAID stocke les informations de parité de votre baie dans les fichiers de parité. Ce sont des fichiers binaires contenant la parité calculée de tous les blocs définis dans le fichier `content`. Ces fichiers sont lus et écrits par les commandes `sync` et `fix` et lus uniquement par les commandes `scrub` et `check`. Encodage (Encoding) SnapRAID sous Unix ignore tout encodage. Il lit et stocke les noms de fichiers avec le même encodage utilisé par le système de fichiers. Sous Windows, tous les noms lus à partir du système de fichiers sont convertis et traités au format UTF-8. Pour que les noms de fichiers soient imprimés correctement, vous devez définir la console Windows en mode UTF-8 avec la commande `chcp 65001` et utiliser une police TrueType comme `Lucida Console` comme police de console. Cela n'affecte que les noms de fichiers imprimés ; si vous redirigez la sortie de la console vers un fichier, le fichier résultant est toujours au format UTF-8. Code de sortie (Exit Code) SnapRAID se termine avec les codes d'erreur suivants : 0 - Tout est OK. 1 - La commande a rencontré des erreurs. 2 - La commande `diff` a trouvé que tout est OK, mais un `sync` est requis. 3 - Une commande de disque (`probe`, `smart`, `devices`, `up`, `down`) s'est terminée, mais au moins un système de fichiers fonctionne en mode dégradé avec des périphériques manquants. Problèmes connus (Known Issues) Limites du système de fichiers SnapRAID ne franchit pas les limites de système de fichiers, de point de montage ou de sous-volume lors de l'analyse d'un disque de données. Lorsqu'une telle limite est détectée, SnapRAID signale un AVERTISSEMENT et n'analyse pas au-delà. Les fichiers situés au-delà de ces limites ne sont pas inclus dans le disque de données et doivent être configurés séparément s'ils doivent être protégés. Points de montage avec instantanés du système de fichiers Lorsque les instantanés du système de fichiers sont activés, les points de montage imbriqués et les montages bind à l'intérieur d'un disque de données ne sont pas pris en charge. Les points de montage font partie de l'espace de noms de montage du système en direct et ne sont pas conservés dans les instantanés du système de fichiers. Par conséquent, lors de l'analyse d'un instantané, un répertoire masqué par un point de montage dans le système de fichiers en direct peut devenir visible. Ne placez pas de points de montage imbriqués ou de montages bind dans les disques de données lorsque les instantanés du système de fichiers sont activés. Plusieurs configurations avec instantanés du système de fichiers La prise en charge des instantanés ne peut pas être partagée en toute sécurité par plusieurs configurations SnapRAID indépendantes utilisant le même espace de noms d'instantanés du système de fichiers. Sur Btrfs et Bcachefs, une seule configuration SnapRAID avec prise en charge des instantanés activée peut utiliser des répertoires de données au sein du même sous-volume. Sur ZFS, la même restriction s'applique à un dataset, et sur NTFS à un volume. Plusieurs configurations partageant le même espace de noms d'instantanés utilisent les mêmes instantanés `stable`, `pending` et `scan`. L'exécution d'une configuration peut donc remplacer ou supprimer les instantanés de récupération requis par une autre. Modifications de fichiers sur place sans changement d'horodatage SnapRAID détecte les modifications de fichiers en comparant la taille des fichiers et les horodatages de modification (mtime). Si une application modifie un fichier sur place sans modifier sa taille ni mettre à jour son horodatage de modification, "diff" et "sync" ne détecteront pas que le fichier a changé et sa parité ne sera pas mise à jour. Pour vous assurer que SnapRAID reconnaît ces modifications, mettez à jour l'horodatage de modification du fichier (par exemple avec l'utilitaire "touch"). Sinon, la différence ne sera détectée que sous la forme d'une non-concordance de hachage lors d'un "scrub" ou "check" ultérieur. Correspondance de casse non-ASCII sous Windows SnapRAID utilise un encodage UTF-8 standard et prévisible sur toutes les plates-formes, limitant la correspondance insensible à la casse aux caractères ASCII. Les systèmes de fichiers Windows souffrent d'une conception héritée du passé qui impose l'insensibilité à la casse sur les noms de fichiers Unicode via des tables de correspondance arbitraires et dépendantes du système. Par conséquent, Windows masque la réalité du système de fichiers en traitant des séquences d'octets Unicode complètement différentes comme s'il s'agissait du même fichier. Par exemple, `À.txt` et `à.txt` sont des noms Unicode distincts, pourtant Windows les traite illogiquement comme identiques, tandis que SnapRAID préserve leur véritable distinction. Cette limitation est causée par la gestion incohérente des noms de fichiers Unicode par Windows et son insistance sur l'aliasement insensible à la casse. Pour éviter les écarts causés par le repliement de casse de Windows, spécifiez toujours la casse exacte de tous les caractères non-ASCII dans les chemins de configuration et les filtres. Récupération avec fix partiel Lorsque `fix` est restreint avec `-S, --start` ou `-B, --count`, SnapRAID opère uniquement sur les blocs sélectionnés et n'effectue pas de finalisation au niveau du fichier ni de mise en quarantaine. Si la récupération produit des données au mieux (best-effort) qui ne peuvent pas être certifiées comme représentant le contenu actuel, ces blocs peuvent tout de même être écrits sous le nom de fichier normal. L'incertitude associée à ces blocs récupérés n'est pas conservée après la fin de l'exécution de la commande. Par conséquent, un `fix` ultérieur considérera ces blocs lisibles comme des données de fichier valides et ne tentera pas de les récupérer à nouveau. Cela peut conduire une récupération ultérieure à signaler un succès tout en laissant des données incomplètes ou obsolètes dans le fichier. Les options `-S` et `-B` ne sont destinées qu'à une récupération manuelle avancée, généralement après l'échec d'un `fix` normal. Si un `fix` partiel signale des données irrécupérables, supprimez ou renommez les fichiers concernés avant de tenter une nouvelle récupération, ou vérifiez manuellement leur contenu. Liens matériels NTFS et chemins exclus Sur NTFS, les entrées de répertoire mettent en cache la taille du fichier et les horodatages indépendamment pour chaque lien matériel. Lorsqu'un fichier est modifié via un lien, les entrées de répertoire des autres liens pointant vers le même fichier peuvent conserver des métadonnées obsolètes jusqu'à ce qu'on y accède. SnapRAID détecte et normalise automatiquement cette condition chaque fois qu'au moins deux liens matériels vers le même fichier sont rencontrés lors d'une analyse. Cependant, si un seul lien matériel est analysé alors que les autres sont exclus par des filtres ou résident en dehors du chemin du disque de données, SnapRAID ne peut pas détecter la collision d'inodes et s'appuie sur les métadonnées en cache du seul lien visible. Par conséquent, les modifications apportées via un lien matériel exclu ou externe peuvent passer inaperçues pour SnapRAID jusqu'à ce que les métadonnées du lien inclus soient actualisées par le système d'exploitation (par exemple lorsque le fichier est accédé ou ouvert via ce chemin). Pour éviter cette limitation, évitez de modifier les fichiers protégés via des liens matériels exclus de SnapRAID, ou assurez-vous que tous les liens matériels vers un fichier sont inclus dans l'analyse afin que SnapRAID puisse les normaliser. Récupération après un sync multi-parité interrompu Dans une grappe avec plusieurs disques de parité, un `sync` interrompu peut laisser les niveaux de parité temporairement désynchronisés entre eux. Par exemple, la parité 1 peut déjà contenir les données nouvellement mises à jour, tandis que la parité 2 contient encore les anciennes données. Lors d'un `check` ou d'un `fix`, SnapRAID teste différentes combinaisons de parités et valide les données reconstruites par rapport aux hachages de bloc connus (qui couvrent l'intégralité du bloc, généralement 256 Kio). Si SnapRAID tente une reconstruction en utilisant un mélange incohérent d'ancienne et de nouvelle parité, les équations linéaires du RAID produiront des données incorrectes. Pour qu'une telle combinaison invalide soit acceptée par erreur, il faudrait que les équations reconstruisent accidentellement au moins un bloc complet de 256 Kio de manière si parfaite que son hachage corresponde, tandis que d'autres blocs non synchronisés de la même bande sont reconstruits avec des données erronées. Ce scénario ne dépend pas d'une collision de hachage ; il faudrait plutôt que les équations de parité mixte produisent elles-mêmes par coïncidence le contenu exact du bloc original de 256 Kio. Bien que mathématiquement envisageable avec des données spécialement conçues ou très répétitives, c'est pratiquement impossible avec des données réelles. Si tous les disques sont sains, achever le `sync` interrompu avant d'apporter d'autres modifications élimine cette ambiguïté. Si un disque est tombé en panne et qu'une récupération est requise, évitez de modifier les disques de données avant d'exécuter `check` ou `fix`. Noms de fichiers et de répertoires réservés SnapRAID réserve certains noms de fichiers, répertoires et instantanés pour son fonctionnement interne. N'utilisez pas ces noms pour des données utilisateur : .snapraidignore - Fichier local de règles d'exclusion. .snapraid - Répertoire conteneur d'instantanés. snapraid-* - Noms d'instantanés ZFS gérés par SnapRAID. *.unrecoverable - Fichiers endommagés mis en quarantaine lors de la récupération. CONTENT.tmp - Fichier temporaire pour les mises à jour du fichier content. CONTENT.lock - Fichier de verrouillage du fichier content. PARITY.spaceholder - Fichier temporaire réservant de l'espace lors de l'allocation de parité sous Windows. L'utilisation de ces noms pour des données non liées peut entraîner l'ignorance, une mauvaise interprétation en tant que métadonnées, l'écrasement, le renommage ou la suppression de fichiers ou d'instantanés. Sous Windows, toutes les variantes de casse sont également réservées, même dans les répertoires NTFS configurés pour respecter la casse (par exemple, .SNAPRAIDIGNORE, .SnapRaid, CONTENT.TMP et CONTENT.Lock). Traduction (Translation) Ce document est une traduction automatique du manuel en anglais. Veuillez vous référer au manuel en anglais pour la version officielle. Droits d'auteur (Copyright) Ce fichier est Copyright (C) 2026 Andrea Mazzoleni Voir aussi (See Also) snapraid_log(1), snapraidd(1), rsync(1)