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.

Wednesday, December 2, 2009

Linux sur un Micro-Client Sr


Installation de Linux sur un PC minimaliste

Le "MicroClient Sr" de Nortech a un processeur VIA UV 500Mhz et 512 Mo de RAM (ou 1 Go, pour $40 de plus, voir Norhtec.com,). Le processeur consomme 1 Watt de puissance. Le bloc d' alimentation consomme au plus 15 Watts. Cette machine a le format SFF (Small Form Factor) PC et est plus petite qu' une pile de 4 boites de DC.

Le système d'exploitation peut démarrer d'une carte CF (la machine a une fente CF) ou d'un disque IDE 2.5 pouces interne (en option). Il y a trois ports USB 2.0 qui sont pratiques pour connecter un disque externe ou un lecteur optique.

Bien que la puissance du processeur soit modeste, ce petit PC peut rouler une version récente de Linux Ubuntu. Ce n'est pas nécessaire de compiler un kernel sur mesure. Bien au contraire, de nombreuses distributions communes Linux pour i386 fonctionnent.

Il est facile de démarrer Linux à partir d'un lecteur optique CD/DVD externe et d'installer le système sur une carte CF (ou sur un disque interne). Ce qui est moins évident est de choisir une distribution Linux qui peut rouler confortablement dans 480 Mo de mémoire vive (car 32 Mo sont réservés pour la mémoire vidéo) sur un processeur à 512 MHz.

Ce type de PC miniature ("SFF PC") est typiquement utilisé dans une voiture, ou encore monté à l'arrière d'un moniteur LCD muni de quatre vis VESA, pour servir de serveur de surveillance de réseau ou de serveur de fichiers multimédia (MP3, MP4). Néanmoins, si la configuration du système Linux qui est installé est fignolée un peu, alors le système est capable de jouer des vidéos MP4 sur un moniteur LCD de bonne taille, jusqu'à 1920 x 1440, selon spećification sur le site de Norhtec. Avec quelques réglages simples, j'ai réussi à obtenir un visionnement relativement correct d'un vidéo MP4 (MP4 Part2, pas H264 qui est trop gourmand en processeur) à une résolution de 1920x1080.
Après avoir essayé plusieurs distributions Linux, incluant quelques moutures d'Ubuntu et de Linux Mint (un descendant d'Ubuntu) en juin 2008, je suis parvenu à une configuration assez satisfaisante après avoir installé "Linux Mint 5.0 Fluxbox Community Edition". Puisque cette distribution est basée sur Ubuntu 8.04 LTS, on peut espérer des mises à jour logicielles pendant 3 années.

Voici les notes que j'ai prises lorsque j'ai faits mes expérimentations avec cette version de Linux Mint en juin 2008 (oui, le temps passe trop vite).

Pré-requis :
MicroClient Sr. avec 512Mo ou 1Go RAM
clavier PS/2 (ou USB)
souris USB
moniteur avec connecteur VGA
carte de mémoire flash CF de 4GB (ou plus)
lecteur optique CD/DVD externe
CD de démarrage "Linux Mint 5.0 Fluxbox Community Edition"

Comment installer "Linux Mint 5.0 Fluxbox" :
1. Télécharger "LinuxMint-5-Fluxbox.iso" de http://www.linuxmint.com/edition.php?id=29 (vérifier le MD5 avant de graver)
2. graver cette image ISO sur un CD-R
3. Au démarrage du MicroClient Sr, appuyer sur [F11] pour avoir le "Boot Device menu". Choisir de démarrer du lecteur optique.
4. Attendre que Linux Mint 5.0 Fluxbox complète son démarrage. Il y a un moment où la jauge de démarrage semble bloquée (à 10%), soyez patient, attendez quelques minutes. Allez chercher un thé, un café, un verre de jus...
5. Essayer le système un peu... l'environnement graphique Fluxbox affiche un menu quand on clique sur le bureau. Ce menu est très complet et donne accès à toutes les fonctions requises.
6. Choisissez "Install" dans le menu et suivez les étapes habituelles pour installer Ubuntu. On peut probablement choisir la langue francaise, mais, je n'ai pas testé cela moi-même.
7. Redémarrez... Attendez que le système soit démarré à nouveau... Identifiez-vous avec le code usager et mot de passe que vous aviez choisis lors de l'installation.
8. Si vous voulez que le système soit assez rapide pour regarder des vidéos, il faut désactiver le démarrage de certains processus "démons". Vous devez éditer le fichier ~/.fluxbox/startup et mettre en commentaire les lignes suivantes:
volwheel # prend 40MB de RAM, juste pour régler le volume
mintupdate # peut etre demarrer du menu
scrollkeeper # quand il indexe la doc, ca bouffe le CPU
wicd # inutile car c'est pour le Wifi.
Comment jouer des videos :
Il faut installer "VLC", qui joue des vidéos et presque tous les formats multimédia. "Linux Mint 5.0 Fluxbox" a déjà configuré le dépôt de paquets "Medibuntu" pour apt-get, donc, c'est très facile. Il suffit de taper les lignes de commandes suivantes :
$ sudo apt-get update
$ sudo apt-get install vlc
Ensuite, supposons que vous connectez une clé USB qui contient un fichier .mp4 ... Vous verrez que le gestionnaire de fichiers Thunar démarrera automatiquement et qu'il vous montrera le contenu de la clé USB. Il suffit de faire un clique-droit sur le fichier .mp4 et de choisir de l'ouvrir avec VLC.

Et voilà !

Pour garder votre système à jour :
Il suffit de démarrer MintUpdate relativement régulièrement (1 fois par semaine ou par mois) et de mettre à jour tous les paquets suggérés.
NOTE: Généralement, ce n'est pas trop une bonne idée de mettre à niveau l'ensemble de la distribution du système d'exploitation sans avoir très bien planifié ce changement majeur.

Si vous voyez des oublis ou si vous avez un commentaire, écrivez-moi.

Tuesday, December 1, 2009

Linux on the Micro-Client Sr

Linux on a small power efficient PC

The MicroClient Sr has a VIA UV 500Mhz processor and 512MB of RAM (or 1 GB, for $40 more, see Norhtec.com,). The CPU uses 1 Watt of power. The PSU block uses 15 Watts, at most.
This computer is a SFF (Small Form Factor) PC, and, it is smaller than a stack of 4 CD cases. It can boot from a CF card (the CF card slot is built-in) or from an (optional) internal 2.5 inches hard disk. It has three USB 2.0 ports which are convenient for adding external USB disks, if required.

Even though its CPU has modest power, this small PC can run recent versions of Ubuntu Linux. No need to build a custom kernel, off-the-shelf i386 Linux distros can be run.

It's easy to boot a Linux distro from an external USB CD/DVD unit and install it on a CF card (or on an internal hard disk). What is less obvious is to choose a light enough distro so that it will run comfortably within 480 MB of RAM (32MB are used for the video memory) on a low-power 512 MHz CPU.

That type of SFF PC would typically be used in a car or, bolted to a LCD monitor with VESA screw holes, for some specific applications, such has as monitoring or as a small file server or multimedia server (MP3, MP4). Yet, if the Linux installation is tuned a little bit, it can even play MP4 or AVI videos on a large LCD monitor -- "up to 1920 x 1440" according to the specs from Norhtec. With some simple tweaking, I have had Ok results at 1920x1080 (MP4 Part 2 video, not H264 which is too CPU-intensive).

After trying many Linux distros, including a few versions of Ubuntu, and, of Linux Mint (a descendant of Ubuntu) in June 2008, I managed to get a satisfying install with "Linux Mint 5.0 Fluxbox Community Edition". Since it's based on Ubuntu 8.04 LTS, it's supported for 3 years.

These are the notes from my experimentation in June 2008 (yes, time flies).

Required:
  • MicroClient Sr. with 512MB or 1GB RAM
  • PS/2 (or USB) keyboard
  • USB mouse
  • monitor with VGA connector
  • 4GB CF card (or larger)
  • external USB CD or DVD drive
  • bootable CD "Linux Mint 5.0 Fluxbox Community Edition"
How to install "Linux Mint 5.0 Fluxbox":
1. Download "LinuxMint-5-Fluxbox.iso" from http://www.linuxmint.com/edition.php?id=29 (after download check the MD5 checksum)
2. Burn it on a CD-R
3. When booting the MicroClient Sr, press [F11] to get the Boot Device menu.
Choose to boot from the external CD drive
4. Wait for Linux Mint 5.0 Fluxbox to finish booting. There is a moment when the "boot gauge" might seem stuck (10% roughly), be patient, give it a few minutes, get a cup of tea or coffee or juice.
5. Play with the desktop a little... Fluxbox shows a menu when you click on the desktop. The menu is quite complete.
6. Choose the "Install" menu item and follow the usual Ubuntu install procedures.
7. Reboot... wait for the system to be ready again... login with your userid and password.
8. If you want the system to be fast enough to play video, you need to disable the startup of some "daemon" processes. Edit the file ~/.fluxbox/startup and comment out the following lines:
volwheel # it sucks 40MB of RAM, just to control the volume
mintupdate # you can start it manually from the menu
scrollkeeper # when it indexes the man pages, the CPU slows to a crawl
wicd # useless if you do not have Wifi on that machine.

How to play video files :
You need to install "VLC", a free video and multimedia player. "Linux Mint 5.0 Fluxbox" already defines the "Medibuntu" repository in its apt-get configuration, so it's very easy. You can install VLC from the command line :
$ sudo apt-get update
$ sudo apt-get install vlc

Then, let's say you plug in a USB key with a .mp4 file on it. The Thunar file browser will start automatically. You can see the .mp4 file and right-click on it, and, and choose VLC to Open it.

Et voilà !

Keeping your system up-to-date :
You should regularly run MintUpdate and update all the packages suggested.
NOTE: You do not need to "upgrade" to the new version of the distribution even if MintUpdate suggests it.

If you find some details missing or if you have comments, please write me an email.