Wednesday, March 10, 2010

Comment éviter la corruption de données sur un disque USB portatif

En février 2009, j'ai vu le contenu d'un disque portatif USB se corrompre de façon irrémédiable. Même un “fsck” n'a pas pu redresser le système de fichier EXT3. En fait, le “fsck” en mode automatique (une approche naïve, c'est vrai) a agravé la corruption encore plus au point de rendre toutes les données inutilisables. Curieusement, les trois partitions EXT3 du disque étaient toutes irréparables avec fsck mais la partition FAT32 était intacte. Aussi, ni le disque, ni le câble, n'était en cause lorsque j'ai constaté la corruption du système de fichiers (quelques fichiers avaient une taille de zéro octet et n'avaient ni date, ni permission).
En fait, j'ai fini par conclure que la corruption avait été introduite quelques semaines auparavant mais que c'est plus tard, lors d'un voyage, quand j'ai commencé à utiliser le disque pour sauvegarder des photos, que la corruption est devenue évidente.
Je ne vais pas essayer de résumer un processus d'enquête et de déduction rempli de fausses pistes et de tâtonnements. Je vais plutôt aller droit aux conclusions et aux observations de base.
Ces informations devraient vous être utiles pour vous éviter une mésaventure similaire.

Observations:
1. Si la connexion USB au disque externe est mauvaise et qu'elle est rompue, le message suivant apparait dans le log du système Linux, dans /var/log/messages :
Oct 9 01:38:16 host01 kernel: [4926072.796955] usb 7-2.4: reset high speed USB device using ehci_hcd and address 19
Oct 9 01:38:17 host01 kernel: [4926073.745971] usb 7-2.4: reset high speed USB device using ehci_hcd and address 19
Oct 9 01:38:18 host01 kernel: [4926074.695643] usb 7-2.4: reset high speed USB device using ehci_hcd and address 19
Oct 9 01:38:19 host01 kernel: [4926075.618293] usb 7-2.4: reset high speed USB device using ehci_hcd and address 19
Ce message indique qu'un ou plusieurs entrées-sorties ont échoué complètement. S'il s'agit d'un système de fichiers EXT3 ou EXT2, il est probablement corrompu, même si vous n'avez pas volontairement ajouté ou modifié des données sur le disque. Pourquoi? Parce que EXT3 écrit sur le disque même si l'usager ne fait que lire des données. Evidemment, si la partition était montée en lecture seulement (R/O), il n'y aurait pas de problèmes. Aussi, peut-être que le problème pourrait être mitigé si le système de fichier était monté avec l'option noatime.
Malgré ou grâce à son approche simple (voire primitive), le système de fichiers FAT32 a moins de chance de devenir corrompu au point d'être irrécupérable.
Donc, pour sauvegarder des photos d'une carte mémoire en voyage c'est un bon choix.
2. Les divers ports USB d'un ordinateur ne donnent pas tous autant de courant (mA). Souvent ceux qui sont à l'arrière d'un desktop (directement sur la carte mère) donnent plus de courant que ceux qui sont à l'avant du boitier.
3. Bien que le standard USB 2.0 dit qu'un port USB d'un ordi doit fournir 500 mA, ce n'est pas toujours le cas. Certains ordis portables donnent beaucoup moins que 500 mA sur leurs ports USB.
4. Les disques USB portatifs (disque 2.5 pouces) ont souvent une prise distincte pour pour y brancher une alimentation de courant supplémentaire. Ils viennent souvent avec un câble USB exprès pour cette alimentation. Avec un tel câble branché en plus, le disque portatif utilise alors le courant fourni par deux ports USB de l'ordi.
5. Les divers boitiers externes et disques portatifs 2.5 pouces ne consomment pas tous la même quantité de courant (mA). Ainsi, selon l'ordi et le disque portatif, il est parfois nécessaire d'utiliser le 2e câble USB qui sert pour amener l'alimentation supplémentaire mentionnée au point précedent.
6. Les hubs “passifs” (qui n'ont pas d'alimentation dédiée) consomment eux-même une certaine quantité de courant du port USB de l'ordi et ceci réduit d'autant le courant disponible pour un disque portatif qui est branché dans le hub. Ceci est le cas pour les claviers USB qui ont des ports USB.
7. Si un disque portatif ne reçoit pas assez de courant, il ne réussira pas à faire tourner son disque à 5400 (ou 4800 ou 7200) RPM. Vous entendrez alors des cliquetis qui viennent du déplacement répété de la tête du disque qui essaie de se placer pour le lancement du disque.
8. Le câble fourni avec un disque portatif est normalement tout à fait adéquat pour transférer les données avec un débit optimal et consommer le moins de courant possible.
9. Les câbles fournis avec des téléphones mobiles, des PDA ou des caméras numériques ne sont pas aussi efficaces. Ceux que j'ai essayés semblaient exiger plus de courant pour réussir à faire tourner un disque portatif ou ils réduisaient même le taux de transfer vers le disque (à reconfirmer).
10. Si un disque portatif est branché à un hub passif et qu'il fonctionne (avec un systèmes de fichiers monté en lecture-écriture) et que l'on branche un autre dispositif USB dans ce hub, il est possible que la quantité totale de courant exigé pour les dispositifs USB dépasse celle que le port USB de l'ordi fournit. Dans ce cas, il est probable qu'il y aura une erreur “reset” USB. Selon ce que j'ai pu constaté, la journalisation faite par le système de fichiers EXT3 ne réussit pas à prévenir la corruption de la structure de données du système de fichiers. (Je n'ai pas fait une série exhaustive d'expérimentations pour répéter systématiquement ce comportement).

Recommandations:
● Utiliser le câble USB 2.0 qui est fourni avec le disque portatif.
● Brancher le disque portatif directement à l'ordi, sans utiliser de hub.
● Si vous utilisez un hub parce que votre ordi n'a pas assez de ports USB, utilisez un hub actif (qui a une alimentation).
● N'utiliser un hub passif que pour un clavier, une souris ou une clé USB.
● Si vous utilisez le disque portatif pour sauvegarder des photos, alors vous devriez utiliser le système de fichiers FAT32 pour le disque portatif. Les cartes mémoire (SDHC ou CF) des appareils photo sont en format FAT32 et lors de la copie entre la carte mémoire et le disque portatif, il n'y aura pas d'incompatibilité causée par la taille des fichiers, leurs noms ou leurs attributs.
● Lors des déplacements et voyage, la probabilité qu'un disque soit débranché soudainement est plus grande. C'est d'autant plus important de se préparer à une erreur d'entré-sortie fatal (“reset” USB).

Je n'ai pas eu de problème avec le système de fichiers HFS+ journalisé de OS/X sur des disques externes USB car je n'en utilise pas. Sur un disque Firewire externe, je n'ai pas eu de problème même si j'ai déjà vu des déconnexions imprévues. (Oui, quelques observations ne peuvent pas servir à généraliser).

Avec Linux, j'ai des partitions Ext3 et XFS sur des disques SATA internes et un SATA externe et c'est très fiable (jusqu'à présent).

Vos commentaires et observations sont bienvenus.