Adaptation française : Deny
Relecture de la version française : Deny
Copyright © 2008 January Weiner
Copyright © 2008 Deny
Article paru dans le n°151 de la Gazette Linux de juin 2008.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
J'ai une base de données sur laquelle je travaille, et quelquefois je dois la faire fonctionner sur mon portable. Cependant, la base de donnée est vraiment exigeante, et c'est simplement trop lent pour le disque dur de mon portable. J'ai rapidement trouvé que la limitation provenait de la vitesse du disque dur, et pas tant de l'unité centrale. Ce dont j'avais besoin était un disque dur externe rapide. De toute façon, j'ai toujours voulu expérimenter un RAID logiciel.
Il y a trois paramètres pour la vitesse du disque :
La vitesse de lecture
La vitesse d'écriture
Le temps d'accès—c'est le temps dont le disque a besoin pour trouver l'emplacement d'où il devrait lire l'information (ou l'écrire) avant de commencer à lire ou à écrire. Par exemple, pour votre disque dur normal, la tête doit se déplacer vers l'emplacement physique du disque magnétique
Je n'ai pas besoin d'une vitesse d'écriture ou de lecture rapide, puisque la quantité d'informations issue de la base de donnée est infime et que la base est presque entièrement en lecture seule. Cependant, j'ai besoin d'un temps d'accès rapide : la base de donnée est très grande et je dois retrouver très rapidement l'information depuis plusieurs emplacements dans la base de données. C'est-à-dire, j'ai besoin d'un temps d'accès très bas, d'une vitesse de lecture acceptable, et je ne me soucie pas de l'écriture.
Il est bien connu que les prétendus solid-state disks, (SSD, disque dur électronique) ont des temps d'accès très bas. j'aurais pu essayer d'acheter un SSD, mais étant curieux, j'ai opté pour un autre choix. On peut dire que les clés usb, les disques dur à mémoire flash, les pen drives© sont également des sortes de SSD— mais ils ont des mauvais taux de transfert. En fin de compte, j'ai décidé de créer un RAID logiciel en utilisant quatre clés USB de 2 Go. J'ai acheté
4 clés USB, de 2 Go chacune
1 concentrateur USB
Prèrequis : vous avez besoin de l'outil mdadm (pour debian©, exécutez simplement apt-get install mdadm).
Insérez la clé dans le concentrateur, et connectez le concentrateur à l'ordinateur.
Si GNOME ou autre monte les disques automatiquement, démontez-les avant de continuer.
Tout d'abord, il est nécessaire de trouver les noms des dispositifs qui sont attachés :
dmesg | grep "Attached SCSI" sd 56:0:0:0: [sde] Attached SCSI removable disk sd 57:0:0:0: [sdf] Attached SCSI removable disk sd 58:0:0:0: [sdg] Attached SCSI removable disk sd 59:0:0:0: [sdh] Attached SCSI removable disk
Bien, les dispositifs sont /dev/sde
, /dev/sdf
, /dev/sdg/
, /dev/sdh
. Je veux un RAID—0; c'est-à-dire, sans redondance et 4x2 Go=8 Go d'espace. Créer le RAID est simple :
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=4 /dev/sd{e,f,g,h}
De cette façon, on a un nouveau dispositif de bloc qui peut être formaté. J'emploie ext2, puisque la fiabilité ou la journalisation ne jouent aucun rôle :
mkfs.ext2 /dev/md0 tune2fs -c 0 -j 0 /dev/md0 mount /dev/md0 /mnt
La première commande crée le système de fichiers (« formate » le dispositif) ; la seconde désactive les vérifications régulières. Enfin, la troisième commande monte le RAID dans le système de fichiers de sorte qu'on peut y écrire des données et les lire.
Avant d'arrêter le tableau, exécutez ce qui suit (et enregistrez la sortie quelque part) :
mdadm --detail /dev/md0
Pour arrêter le tableau en cours d'exécution, démontez tout d'abord le répertoire (umount /mnt) et ensuite arrêtez le tableau :
mdadm --stop /dev/md0
À présent, vous pouvez sans risque retirer les disques et, par exemple, les connecter sur une autre machine.
Avant de pouvoir réutiliser votre RAID, vous devez l'« assembler ». C'est facile si vous n'avez pas retiré le disque et si vous essayez l'assemblage depuis la même machine. Dans ce cas, saisissez simplement :
mdadm --verbose -A /dev/md0 /dev/sd{e,f,g,h}
Cependant, que faire si les lettres du dispositif ont changé (c'est-à-dire, non e-h, mais i,j.k,l) ? Eh bien, on peut encore découvrir quelles sont les lettres. Mais il y a une meilleure solution. Souvenez-vous que je vous ai dit d'enregistrer la sortie de mdadm --detail ? Elle contient une ligne de ce genre :
UUID : d7ea744f:c3963d02:982f0012:7010779c
D'après cet UUID (Unique User IDentifier, identification d'un utilisateur de manière unique), on peut facilement « assembler le tableau » sur n'importe quel ordinateur :
mdadm --verbose -A /dev/md0 -u d7ea744f:c3963d02:982f0012:7010779c
On peut également écrire cette information dans le fichier de configuration /etc/mdadm/mdadm.conf
Test | Description | Résultats | Commentaire |
---|---|---|---|
hdparm | Lecture | 52 Mo/s | C'est deux fois aussi bon que sur mon portable, et pire que les 70Mo/s du disque SATA de ma station de travail |
dd | Écriture | 28 Mo/s | La moitié de ce que peut faire le disque de ma station de travail |
seeker | Accès aléatoire | 0.8-1ms | C'est de 10 à 20 fois meilleur qu'un disque dur ordinaire |
hdparm :c'est une application Linux
standard (sous Debian©, installez-la avec la commande apt-get install hdparm). La ligne de commande est la suivante :
hdparm -t /dev/md0
dd : La ligne de commande complète est :
dd if=/dev/zero of=/tmp/test2.bin bs=1M count=1024 conv=fsync
seeker: J'ai utilisé cette application depuis cette page pour des essais sur la performance des disques. Elle effectue des recherches purement aléatoires sur le dispositif, simulant de ce fait le pire scénario, quand de petits fragments de données dispersés doivent être lus. Voici la ligne de commande :
seeker /dev/md0
En outre, j'ai examiné la performance de l'installation entière avec mon application particulière. C'était impeccable ! Pas aussi bon que la mémoire vive du disque que j'emploie pour une partie de ce dernier, mais cependant très, très rapide.
Depuis que je l'ai installé il y a quelques jours, je l'ai constamment employé avec une importante charge en lecture et je n'ai pas rencontré de problèmes ou d'erreurs (tels que ceux notés ici).
Notez que la vitesse de connexion sera limitée par la vitesse maximale de connexion du concentrateur, puisque 480 mégabits par seconde (USB 2.0) correspondent à peu près à 60 mégabits par seconde au plus.
j'ai expliqué ici comment créer un RAID-0 depuis quatre clés USB. Cependant, la plupart de ce que j'ai expliqué ici s'applique également à d'autres types de RAID et d'autres lecteurs de disque. Et plus encore ! On peut combiner simplement n'importe quels dispositifs dans un RAID. Bien sûr, cela se conçoit seulement si les dispositifs sont de tailles semblables, mais on peut créer un RAID hors des RAIDs (c'est-à-dire, joindre deux clés USB de 2 Go dans un RAID0 /dev/md0
, ensuite joindre /dev/md0
avec une clé USB de 4 Go pour obtenir un RAID0 d'une taille de 8 Go...) et on peut combiner des dispositifs de différentes tailles en employant LVM (Logical Volume Manager,Gestionnaire de volumes logiques).
À part quelques erreurs commises parce que je ne connaissais pas mdadm, je n'ai pas rencontré de problème. Si il y en a, deux choses en général sont d'un grand secours :
Lire la documentation :-) en particulier man mdadm et les liens ci-dessous, et
Étudier les messages du noyau. Le mieux est de saisir
tail -f
/var/log/messages
LinuxInsight© publie cet excellent article sur le test de performance des disques durs
Il y eu une autre tentative de créer un tel tableau, mais avec des conclusions tout à fait différentes et peu d'explications.
Pour en apprendre plus à propos du RAID logiciel sous Linux
, veuillez consultez le HOWTO Linux
RAID et cette page du wiki d'Ubuntu©
Un autre bon HOWTO, avec d'autres astuces utiles.
Encore une autre expérience avec une clé USB.
January Weiner est un biologiste qui utilise des outils informatiques pour étudier des processus évolutionnaire. Il est postdoctorant dans un groupe bio-informatique.