Howtos GNU/Linux .: kozaki :. Howtos GNU/Linux

Optimiser les disques durs et l'espace de stockage sous GNU/Linux

Régler ses disques IDE et SATA avec hdparm

Bon à savoir

  • hdparm concerne à l'origine les disques : IDE / ATAPI (que ce soit des disques durs ou optiques). Il s'est depuis 2008 adapté en grande partie aux disques SATA.
  • Sinon il gère presque tout matériel construit après 2000
  • Ci-dessous, remplacez 'hdx' par votre disque : hda, sda, hdb, sdb, hdc, sdc...
  • Comme toujours :
      - Sauvegardez avant de commencer à optimiser ou modifier votre système !
      - Utilisez à vos risques et périls!
      - Si quelque-chose se passe mal, c'est VOUS qui etes responsables ! pas ce document.

configurationhdparm - Testez vos disques

Vous pouvez tester un disque avant de commencer en lançant en root :
hdparm -tT /dev/hdX
J'obtiens :

	Timing buffer-cache reads: bla bla = 914.29 MB/sec
	Timing buffered disk reads: bla bla = 3.24 MB/sec

 hmmmm... médiocre

Voir les réglages actuels

Les options sûres sont généralement sélectionnées par défaut pendant l'installation de nombreuses distributions Linux, sur un Disque IDE, y-compris pour le(s) lecteur(s) optique(s).

C'est pourquoi on va jetter un oeil curieux sur les réglages actuels avec (toujours en root):
hdparm /dev/hdX

	/dev/hda:
	multcount = 0 (off)
	I/O support = 0 (default 16-bit)
	unmaskirq = 0 (off)
	using_dma = 0 (off)
	keepsettings = 0 (off)
	nowerr = 0 (off)
	readonly = 0 (off)
	readahead = 8 (on)
	geometry = 24321/255/63, sectors = 390721968, start = 0
	busstate = 1 (on)

Et voilà le résultat sur un graveur DVD NEC 3520AW (firmware 3.06) :

hdparm /dev/hdc
	/dev/hdc:
	IO_support   =  0 (default 16-bit)
	unmaskirq    =  0 (off)
	using_dma    =  1 (on)
	keepsettings =  0 (off)
	readonly     =  0 (off)
	readahead    = 256 (on)
	HDIO_GETGEO failed: Invalid argument

hdparm - Options disponibles

On peut accélérer son système en configurant certaines options disponibles sur les (controleurs) de disques IDE

Voyez ces caractéristiques avec man hdparm.
Essentiellement le haut du paragraphe 4 :

  • multcount: Short for multiple sector count. This controls how many sectors are fetched from the disk in a single I/O interrupt. Almost all modern IDE drives support this.
  • I/O support: This is a big one. This flag controls how data is passed from the PCI bus to the controller. Almost all modern controller chipsets support mode 3, or 32-bit mode w/sync. Some even support 32-bit async. Turning this on will almost certainly double your throughput.
  • unmaskirq: Turning this on will allow Linux to unmask other interrupts while processing a disk interrupt. What does that mean? It lets Linux attend to other interrupt-related tasks (i.e., network traffic) while waiting for your disk to return with the data it asked for. It should improve overall system response time, but be warned: Not all hardware configurations will be able to handle it. See the manpage.
  • using_dma: DMA can be a tricky business. If you can get your controller and drive using a DMA mode, do it.

hdparm - Modifiez les paramètres

On peut discuter sans fin du "meilleur" réglage de tel ou tel disque. À juste raison, puisqu'on ne règlera pas un disque un peu ancien comme le tout dernier Raptor...

Privilégier l'économie d'énergie (et le silence ;) à la vitesse brute (Disques IDE comme SATA) :
hdparm -B 1 /dev/sdX

    -B 1 : économie maximale (permet le mode Veille jusqu'à 127)
    -B 128 : Privilégie la vitesse (de 128 à 254 ; pas de mise en veille)
    -B 255 : désactive la gestion de l'énergie (PC portables s'abstenir sur batterie :)

Réglages permettant d'obtenir de bonnes performances sur des disques durs IDE construits après 2000 :
hdparm -m16 -c1 -u1 -d1 -X69 -W1 /dev/hdX

    -m16 -- Règle le nombre de secteurs à utiliser pour le block (multicount)
    -c1 -- Faire causer le disque en 32-bit au lieu de 16 (I/O Support)
    -u1 -- Active l'unmasking of interrupts. Augmente nettement les performances.(unmaskirq)
    -d1 -- Active le DMA
    -x69 -- Spécifie le mode de transfert UDMA (adaptez en fonction de votre matériel, cf notes)
    -W1 -- Active l'écriture en cache sur le disque

Testez à nouveau

 hdparm -tT /dev/hdX :

    Timing buffer-cache reads: bla bla =984.62 MB/sec
    Timing buffered disk reads: blabla = 56.14 MB/sec

Booon, ça me convient maintenant :)

Conserver les réglages

Les réglages faits en console ne sont pas sauvegardés ; ils servent à faire ses tests.

Pour les enregistrer et les appliquer à chaque démarrage, il faut les copier dans le fichier /etc/sysconfig/harddisks (sur les systèmes Redhat & basés sur Redhat comme Mandriva) au niveau de la ligne "EXTRA_PARAMS" (voir notes):
EXTRA_PARAMS="-m16 -c3 -u1 -d1 -X69 -W1"

Sur d'autres systèmes, on utilisera /etc/sysctl (Arch Linux), ... vous pouvez nous le préciser dans le forum (à gauche), merci !

hdparm - Notes

  • Vous pouvez trouver les capacités DMA de votre disque dur en lançant :
    hdparm -i /dev/hdx (Notez les modes DMA listés ; le * indique le mode activé si l'UDMA est configuré)
  • Pour activer l'UDMA, utlisez -Xxx où xx est le mode de transfert. Voici comment ça marche :
    	-X64 : UDMA 0 (ATA 16)
    	-X65 : UDMA 1 (ATA 25)
    	-X66 : UDMA 2 (ATA 33) >>> beaucoup de lecteurs/graveurs optiques
    	-X67 : UDMA 3 (ATA 44)
    	-X68 : UDMA 4 (ATA 66) >>> lecteurs/graveurs optiques très récents
    	-X69 : UDMA 5 (ATA 100)
    	-X70 : UDMA 6 (ATA 133) (seuls certains disques Maxtor)
  • Le fichier /etc/sysconfig/harddisks définit les réglages pour tous les disques durs
  • Vous pouvez déginir des réglages différents pour chaque disque en créant vos fichiers /etc/sysconfig/harddiskhda (hdb, hdc...)
  • Si vous ne parvenez pas à activer l'UDMA, sachez que de nouveaux pilotes de chipsets & carte-mères sont inclus dans chaque nouvelle version du noyau --> mettez ce dernier à jour vers la dernière version.
  • Vous pouvez indiquez SVP vos résultats sur disques SATA sur le forum.
  • Ce guide est essentiellement une traduction d'un résumé posté par kruhm sur contrib.org
  • J'ai testé, traduit & annoté mais je ne suis en aucun un expert de hdparm.
  • swap : Il est recommandé de disposer d'un (ou plusieurs) swap un brin plus important que sa RAM. Comme cela si vous désirez utiliser utiliser l'hibernation ce cera déjà ça de fait (détail ci-dessous)

hdparm - Liens

Optimisation des disques SATA ?

Les disques SATA remplacent les DD IDE depuis 2005, y-compris sur les PCs portables et pour les lecteurs ou graveurs. SATA & IDE sont 2 technos *différentes*. Celà étant dit, hdparm permet de gérer ses disques SATA depuis 2008.

Personnellement, je n'utilise plus sdparm depuis 2010. Il était présenté comme un remplaçant de hdparm mais pour les DD SATA. Beaucoup moins complet que ce dernier, par exemple, il ne permet aucune modification au niveau des performances (à mon humble connaissance).

Notez que c'est dans le Bios qu'on gère si le DD doit être reconnu en mode "IDE" ou "SATA". Coup de chance, c'est également dans le Bios qu'on peut optimiser les performances de disques SATA :

  • En désactivant la fonction S.M.A.R.T, si vous savez exactement ce que vous faites.
  • En réglant le DD SATA sur le plus haut niveau UDMA qu'il supporte (le maximim est UDMA6, mais tous les controleurs ne le gèrent pas)
  • En réglant le PIO au maximum pour les lecteurs/graveurs CD/DVD et les vieux DD : PIO4

L'article The sdparm utility présente les fonctionnalités de sdparm. Il s'adresse plutôt aux experts en hardware et support de libata, mais présente un tableau excellent qui liste les options hdparm et leur équivalent pour sdparm :)

Surveiller l'état des disques durs

Optimisation des disques SSD ?

Heureux possesseur d'un netbook, ou de toute machine équipée d'un disque SSD / Flash, vous cherchez à améliorer les performances de Linux sur ce type de disque ? Les 4 réglages suivants pourraient vous ^etre utiles.

Ah bon pourquoi, ça se règle ? Suffit pas de l'acheter et le brancher heu, comme un grille-pain ?

Quel système de fichier "killer" pour les stockages SSD ?

Maintenant que certains "disques" SSD sont aussi rapides qu'une Formule 1 voire qu'un Jet, je vous laisse imaginer le rôle qui incombe au "point de contact" avec les données : le système de fichier a intéret de suivre le potentiel hardware ! (ceux qui choisissent attentivement les pneus de leur bagnole, moto ou vélo comprendrons LoL)

Btrfs

Le système de fichiers Btrfs doit encore être stabilisé dans sa version 0.19 avec son formatage disque non finalisé. Btrfs supporte déjà la défragmentation en ligne, un mode SSD optimisé, la compression zlib, le "copy-on-write logging", "object-level mirroring and stripping", les "sub-volumes", et des "writable snapshots".

Sources, benchmarks

Réparer une ou des partitions

Il arrive qu'un système de fichier soit corrompu (par un arrêt brutal du système par ex.), et qu'une partition ne puisse plus être montée ni réparée comme d'habitude. Comment faire alors pour retrouver ses données ? Utiliser les fonctionnalités de récupération propres à chaque système de fichie. Exemple avec des partitions EXT3.

Réparer une partition formatée en ext2/3

Contexte : la partition ne se monte pas. S'il s'agit d'une partition de données, par exemple /home, elle ne peut plus être montée, ce qui empêche de se loguer en tant qu'utilisateur : pas de /home = impossible de lancer une interface graphique pour l'utilisateur dont les données sont stockées dans /home/utilisateur... Il faut donc identifier la (ou les) partition abîmées, et les réparer en mode console.

S'il s'agit de la partition système, le chargeur de démarrage (type GRUB) ne peut passer la main au kernel Linux (situé sur la partition abîmée) :

24 : "Cannot boot without kernel loaded"

Cette erreur est retournée si GRUB est lancé sans pouvoir passer la main à un noyau : forcément, puisqu'il est sur la partition abîmée. Dans ce cas, il est possible de réparer la partition de la même façon que pour une partition de données, en bootant sur un autre système, notamment un live-CD.

Données ou système, essayer de monter normalement la partition ext échoue :
# mount /dev/hda6
EXT3-fs: hda6: couldn't mount because of unsupported optional features (1000100).

On vérifie que la partition est bien formatée en ext3 :
# parted -s /dev/hda print

Warning: Unable to align partition properly.
This probably means that another partitioning tool generated an incorrect partition table,
because it didn't have the correct BIOS geometry.
It is safe to ignore, but ignoring may cause (fixable) problems with some boot loaders.
Disk geometry for /UNIONFS/dev/hda: 0.000-78167,250 megabytes
Disk label type: msdos
Minor    Start       End     Type      Filesystem  Flags
1          0,031  10432,836  primary   ntfs
2      10432,868  66895,664  primary   fat32       lba
3      66895,664  72998,481  primary               boot
4      72998,481  78159,990  extended
6      72998,543  77006,887  logical

Si le superbloc principal (nécessaire pour monter une partition ext) est illisible, on peut le réparer avec testdisk (le plus sûr mais pas toujours disponible/installé, essayer en priorité), ou avec e2fsck grâce aux superblocs de secours stockés par le système de fichiers. Pour les trouver :
# mke2fs -n /dev/hda6

mke2fs 1.38 (30-Jun-2005)
Étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=1024 (log=0)
[snip-snip]
Archive du superbloc stockée sur les blocs:
        8193, 24577, 40961, 57345, 73729

On lance ensuite e2fsck sur le premier de ces superblocs "de secours", pour réparer le système de fichier ext3 :
# e2fsck -b 8193 /dev/hda6

e2fsck 1.41.2 (02-Oct-2008)
Le drapeau ext3 recovery n'est pas activé, mais le journal contient des données.
Le drapeau de récupération n'est pas activé dans le superbloc de secours,
 le journal sera donc quand même exécuté.
[nom de la partition]: récupération du journal
Passe 1 : vérification des i-noeuds, des blocs et des tailles
[snip-snip]
... Corriger<o>? oui
Passe 2 [snip]
Passe 3 [snip]
Passe 4 [snip]
Passe 5 [snip]
[nom de la partition]: ***** LE SYSTÈME DE FICHIERS A ÉTÉ MODIFIÉ *****
[snip-snip]

Si tout s'est bien passé, remonter ensuite le système de fichiers réparé, ou redémarrer le système et tester / vérifier qu'on a pas perdu (trop) de données.

Source(s)

Sytèmes de fichiers courants sous Linux

  • ext2
  • ext3
  • ext4. Le remplaçant de l'Extended file Systems 2 & 3 n'est plus labellisé "expérimentale" depuis le 11 octobre 2008. Qu'apporte-t'il ? ext4 File System: Introduction and Benchmarks par Jeffrey B. Layton, Linux Magazine, mars 2009. First benchmarks of the ext4 file system sur LinuxInsight, octobre 2006..
    Plus récemment, Phoronix a publié un test complet du système de fichiers Ext4 : Real World Benchmarks Of The EXT4 File-System compared to Ext3, XFS and ReiserFS (3 déc 2008). Les composants testés sont un dual Intel Xeon E5320 Quad-Core "Clovertown", la carte-mère Tyan Tempest i5400XT, une mémoire 2GB Kingston DDR2 FB-DIMM et un disque 160GB Western Digital WD1600YS-01SHB1. Des performances pures en net progrès, mais qui ne se traduisent pas dans les applications réelles (compression, encodage, encryptage). Ce qui motive peut-être les ressources significatives qui sont investies dans le système de fichiers btrfs.

RAID, LVM

Le RAID

fiche RAID @ cases.public.luRAID permet de combiner plusieurs disques ensembles afin qu'ils aient l'air d'un unique disque logique. Ce qui aide à fournir la redondance des données ou une vitesse améliorée en répartissant les données entre les différents plateaux des disques --physiques.
Linux supporte aussi bien les RAID logiciel que matériel. Le RAID matériel est géré par le contrôleur de disques RAID sans aucune assistance du noyau. Le RAID logiciel est contrôlé directement par le noyau.

En fonction du type (ou niveau) de RAID choisi, on améliorera la tolérance aux pannes (et donc l'intégrité des données), ou les performances (au détriment de la tolérance aux pannes !) de l'ensemble :
Finalement le RAID c'est :

  • soit un système de redondance qui donne au stockage des données une certaine tolérance aux pannes matérielles (ex : RAID-1)
  • soit un système de répartition qui améliore ses performances (ex : RAID-0 ou "stripping"). NB : Permet de dépasser le palier de vitesse atteint par les disques durs depuis des années (la vitesse culmine à 7200 trs/min depuis 2001 ; comparez les progrès des processeurs ou des mémoires...)
  • soit les deux à la fois (ex : RAID-5)

À côté du RAID logiciel et du RAID matériel, on trouve un RAID de type pseudo-matériel sur de nombreuses cartes-mères. C'est un RAID logiciel camouflé. Il faut savoir qu'un contrôleur RAID matériel coûte 100 € minimum.

mdadm est l'outil sous GNU/Linux permettant de créer, gérer et surveiller les matrices ("arrays") de périphériques disques à l'aide du pilote "md" sous Linux, aussi connu comme matrice RAID logicielle.

Ici on s'intéresse au seul RAID logiciel.
Les guides ci-dessous présentent l'ensemble des RAID & leur configuration.

Raid-0 : caractéristiques et avantages vs désavantages (cf lien "Arnofear" ci-dessous)
Le RAID 0 (striping)

Découpe les données en blocs et les disperse linéairement.
2 Disques au minimum.

  • Utilisation de disques de taille différentes ou non.
  • 100% de l'espace disque est disponible.
  • Amélioration des performances en lecture/écriture.
schéma 6 disques dur en mode Raid-0
  • En cas de perte d'un disque, toutes les données de l'ensemble des disques composant le RAID sont perdues.
  • Pas de disque "Spare" (de secours).
schéma 6 disques dur en mode Raid-0 en cas de perte d'un seul disque.
Vérifier le support du RAID sur sa distribution Linux

Le support RAID est presque systématiquement activé dans la configuration du noyau par défaut. Pour le vérifier :

  1. $ grep RAID /boot/config`uname -r` qui renvoit ici :
    # Multi-device support (RAID and LVM)
        CONFIG_MD_RAID0=m
        CONFIG_MD_RAID1=m
    Supporte le RAID !
  2. cd /usr/src/linux-<version>/
      make menuconfig et vérifier la section comme ci-dessous :
      Device Drivers
        Multi-device support (RAID and LVM)
        [*] Multiple devices driver support (RAID and LVM)
        [*]  RAID support
    Supporte le RAID !

Gestion par volumes logiques / LVM

La gestion par volumes logiques (anglais: logical volume management ou LVM) est une méthode d'allocation de l'espace disponible sur des périphériques de stockage de masse qui est plus flexible que les schémas de partitionnement conventionnels. Elle permet de gérer, sécuriser et optimiser de manière souple les espaces de stockage en ligne dans les systèmes d'exploitation de type UNIX/Linux.

  • Volumes physiques
    Les disques durs, partitions de disques durs, volumes RAID ou unités logiques provenant d'un SAN forment des « volumes physiques » (physical volumes ou PV).
  • Groupes de volumes
    On concatène ces volumes physiques dans des « groupes de volumes » (volume groups ou VG).
    Ces groupes de volume constituent autant de disques logiques. Leur avantage No1 est la souplesse qu'ils apportent pour tout ce qui touche la gestion de l'espace disque :)
  • Volumes logiques
    Des « volumes logiques » (logical volumes ou LV) sont alors découpés dans les groupes de volumes, puis formatés et montés dans des systèmes de fichiers (ou utilisés en tant que raw devices).

"Un groupe de volumes « volume group » est un ensemble de disques physiques ou de volumes physiques. Il rend aisé l'ajout et le retrait d'un volume physique.
L'espace total d'un groupe de volumes est constitué d'un ensemble d'unités (granules) d'allocation physique (« physical extent », « physical partition ») allouées à des disques logiques ou volumes logiques."
(extrait du défunt guide slyunix)

Guides Raid (matrice de disques)

Guides LVM

Guides RAID avec LVM

Liens pratiques sur les RAID, LVM et les dépanner en cas de pépin logiciel comme matériel.

Chiffrer (crypter) ses données et/ou ses disques

Guides LUKS dm-crypt, Ecryptfs à venir

  • L'encryptage : Introduction « L’encryptage, et par conséquent le décryptage, est un concept très ancien puisqu’il a été utilisé par les plus antiques civilisations : (...)" : Pose les choses à plat ; très bon avant de se perdre dans les termes et solutions techniques, sans toujours comprendre ce qu'elles recouvrent ;)
  • Heu, ça consiste à quoi exactement, chiffrer (crypter) et déchiffrer (décrypter) ?. Seb Sauvage démysthifie ça très bien en 10 ligne et un exemple. Avant de présenter les caractéristiques des principaux algorithmes de chiffrement --qui sont aussi les meilleurs.

Gestion des disques physiques & logiques : Astuces

Les informations / précisions ci-dessous sont presque toutes tirées des guides indiqués plus haut, auxquels on vous renvoit pour toute précision.

Redimensionner une partition classique

Optimisation du swap

Quelle taille pour le swap ?

Mieux que la vielle règle "SWAP = 2 x RAM" : Il est préférable d'avoir un swap un peu plus grand que la quantité de RAM ; ça permet entre autres d'utiliser la fonction suspend2 (càd l'hibernation du système après enregistrement dans le swap de toutes les informations contenues dans la mémoire --RAM + swap-- pour redémarrer instantanément dessus).

D'après le Guide Gentoo (& tom.blaireau de la communauté Arch Linux) :
  - Si vous souhaitez plus de stabilité, préférez l'utilisation du mode RAID-1 (ou RAID-5) pour vos partitions d'échange de façon à ce qu'un plantage du disque ne corrompe pas votre espace d'échange, ce qui évitera de planter les applications qui l'utilisent.
  - Si vous voulez plus de performances, laissez simplement le noyau utiliser des partitions d'échange séparées comme il le fait par défaut en mode striping. C'est la fonctionnalité round robin du kernel, qui supporte nativement plusieurs partitions de swap pour en accroître la rapidité. En clair, 2 partitions /swp de 256 Mo sur 2 disques durs sont + rapides qu'1 partition /swp de 512 Mo sur un seul disque.

2 partitions swap performantes

avec la fonction "swapping in parallel" intégrée au noyau
on l'active dans /etc/fstab. Voici un exemple pour 2 partitions swap, placées idéalement sur 2 disques durs différents :

/dev/hdb2 none swap sw,pri=0 0 0 /dev/hdc2 none swap sw,pri=0 0 0

Et bien sûr : man fstab
Source : www.enterprisestorageforum.com

En cas de catastrophe ?

Comment réagir en cas de corruption de partition, formatage accidentel d'une partition et autres problèmes avec le disque dur : super-bloc & blocs défectueux. Par linux-france.org

Raid pseudo-matériel ou "raid logiciel camouflé"

C'est le type de Raid inclu dans de nombreuses cartes mères récentes, qui le présentent comme un raid "matériel", ce qu'il n'est pas.

Les échanges ci-dessous expliquent pourquoi (en anglais pour le moment).
Voyez absolument les précisions à ce sujet sur wikipedia.

I've got a NForce4 mainborad with RAID support, and two RAID 0 arrays configured on it. Windows can read the partitions on the arrays well, but my Arch failed to do so.
You still need a specific driver on top of your hardware if you want RAID (that's what is done under Windows).
The nforce4 RAID is purely a software raid (often used for "fake" RAID) and getting both windows and linux to play nicely with the partitions is a difficult task (if not impossible). You need to get a real Hardware RAID controller like the 3ware 8506-4LP (for SATA drives). Works flawlessly and recognizes partitions in both linux and windows. The drivers for the 3ware are built into the kernel by the way.
I suggest you use Linux's Software RAID; and if you need your RAID array both under Windows *and* Linux, you should consider buying a real controller.
You may also try to use a device mapper such as `dmraid'.
Running Linux on an AMD AM2 nVidia chip ser that supports Raid 0 striping on the motherboard. Just wondering if it was hardware raid ? Is it going to be faster that software raid and why?
Beeing a consumer type board (AM2), the "raid on the motherboard" is in 99.999% of the cases just software raid implemented in their Windows drivers, a bootup setup screen plus some BIOS magic to get the OS booting.
Yeah, they're all software RAID. Also, there isn't much to be gained from making RAID0/1 hardware. The software overhead isn't that big. For RAID5, having XOR done in hardware helps.
Thanks - I suspected that Raid 0 didn't gain anything in hardware unless they provided additional buffering or something but I just thought I'd ask in case there was something I was overlooking.
A Hardware RAID-Controller is faster then Software-RAID ?
Depends on what form of raid you are using. RAID 0 & 1 do not perform better on a real hardware RAID controller. The operations are so simple that it doesn't matter. However when you use parity (for example RAID 5) then yes, a real hardware controller performing the RAID operations is a lot faster. And, one of the most striking arguments I heard about software RAID is, when the controller fails, you don't lose your RAID setup. Maybe today that isn't a problem anymore, with stuff like RAID migration, but I haven't tested features like that.
A hardware raid controller can buy you a battery backed write cache, so there are potentially some performance/safety benefits potentially.
We have a mix of software raid and 3ware based hardware raid subsystems.
For the applications we support, in general I can say that performance was not the discriminating reason to choose one over the other.

Performance réelle du RAID sur un PC personnel

Software RAID Performance with the Linux Operating System

Cet article répond aux questions suivantes :

  • Is a RAID 1 System too slow ?
  • Is Software RAID slower than a simple hard disk ?
  • Is RAID1 slower than RAID5?

Sur un PC relativement récent avec 3 disques SATA II 160GB. Les résultats sont basés sur un benchmark mixte (écritures/lectures). Il en ressort un ordre de performance croissant :
simple disque Sata2 < Raid-5 < Raid-1
Source http://laitsas.com/archlinux/55/sata2-raid-performance/

Taille des segments / block size / chunk size

Extrait du guide Raid / LVM du Labo-Linux (cf Liens) : "Pour répartir les données sur l’ensemble des disques de la façon la plus optimisée, la carte RAID (ou le système d’exploitation dans le cas d’un RAID logiciel) doit les découper en petites unités appelées segments (ou block size, et parfois nommé chunk size). Lorsque l’on met en place un niveau RAID 0, on doit spécifier la taille de ces segments. Cette taille est un multiple de la capacité d’un secteur de disque dur (soit 512 octets). La plus petite taille possible pour un segment est donc de 512 octets, et peut attendre plusieurs Méga-octets (jusqu'à plus de 4Mo).

La taille sélectionnée va influencer sur les performances en lecture et en écriture. Pour le stockage de gros fichiers, il est recommandé de choisir une taille élevée (256Ko ou plus) alors que pour les petits fichiers une petite taille est à privilégier (ex. : 512octets, 1024 octets, ...). Il ne faut surtout pas mettre une taille de 2048 Ko pour stocker des petits fichiers de 4Ko chacun car cela occuperait énormément d’espace disque inutilement et les performances seraient désastreuses."

La taille des blocks joue un role majeur sur le temps d'accès et d'écriture aléatoire. Cf cette citation de Bernd Paysan ;) sur le blog de Linus Torvald (octobre 2008) :
What really sucks is that Linux (and all other competing offers) still use 4k pages on rotating disks. The rule of thumb for random accesses is that the transfer time should take about as long as the latency. For current hard disks and RAID arrays, this would be somewhere between 512k and 2M.
When the 4k page size was decided (1986), it was about right. And with the current SSDs, it's again about right
"

Expériences personnelles

J'ai monté quelques machines en Raid logiciel, dont une sous Mandriva (débuté avec la 2007) et une avec Archlinux 0.8 x86_64.

La première machine est un Sempron 2600+ avec carte mère ASrock et 2 disques durs Sata II achetés en juin 2006 pour moins de 500€ l'ensemble. L'installation de Mandriva 2007 64-bit n'a pas posé de problème particulier : On peut activer le RAID en cliquant sur "expert" lors de l'étape du partitionnement. Tout le reste correspond à une installation standard.
Le temps de démarrage de la distro est réduit d'environ 20%. Mais le bonheur a été de découvrir la rapidité avec laquelle tous les logiciels démarrent et réagissent :-) Par exemple, OpenOffice.org se lance en 3 à 5 secondes, soit 2 fois moins que sur un PC plus puissant avec un seul disque dur --et plus cher !

Suite à cette "découverte" j'ai acquis un second disque dur Hitachi Sata II 80Gb (42€) que j'ai installé dans ma machine (AMD Athlon 3200, ASrock 939 Dual Sata2, 1024Mo RAM), et y ait installé Archlinux x86_64 (version que j'utilisais avec bonheur sur l'unique disque dur interne original), Mandriva x86_64, et laissé une partition libre sur le LVM système (raid 0) pour tester d'autres distros.
Le principal changement est le temps de lancement des grosses applications : OpenOffice.org 2.1 met 5 secondes, pour Opera 9.1 c'est quasi instanné... Le temps requis pour installer des apps est nettement réduit : 26 secondes au total pour installer kdebase avec dépendances et les paquets nécessaires à kdewebdev (77Mo), 19 secondes pour les 99Mo des paquets d'OpenOffice.org-2.1 fr, ou 3,8 secondes pour Mozilla Firefox fr (18Mo) zuper !

Précisons qu'un tel environnement en Raid-0 est quitte ou double. Qu'un des disques vienne à lâcher brutalement, et la totalité des données sont perdues ! Ce n'est envisageable que pour se "faire plaisir", pour un travail en réseau (les données sont sur le réseau ou sur un disque externe), et/ou avec un schéma de sauvegardes automatiques très fréquentes...

Création des partitions RAID

Lorsqu'on a créé toutes les partitions physiques, on est prêt à installer le RAID. L'utilitaire qui permet de créer des partitions RAID s'appelle mdadm.

:w adm est donc un outil pour créer, gérer et monitorer device arrays using the "md" driver in Linux, also known as Software RAID arrays.

Activer des array (1) RAID pré-éxistantes

Au cas vous bootez sur une machine où le Raid est déjà configuré, mais que les array raid ne sont pas actives car absentes de /dev/md[N], il faut créer leurs nodes (noeuds de périphériques). Pour celà, tapez cette commande (tirée du Gentoo wiki qui ne contient plus la doc Raid/LVM2) :
  mknod /dev/md1 b 9 1 pour l'array Raid /dev/md1,
  mknod /dev/md2 b 9 2 pour l'array Raid /dev/md2 par exemple
Activez-les avec : mdadm -A -s, puis suivez le howto de Richard Bullington-McGuir (qui ne le mentionne pas ; Merci au Gentoo wiki !).

Gestion des volumes / LVM

"Have you considered using LVM2? It really *does* provide you with that extra flexibility. You can shrink or grow partitions on the fly (Provided your FS supports resizing) allowing you to adjust your partitioning scheme whenever you feel it's necessary." Il y a un guide sur le wiki ArchLinux appelé "Installer avec Raid Logiciel et LVM" qui t'aidera à démarrer rapidement.

Un cas concret d'utilisation de LVM
En réponse à un utilisateur ArchLinux embêté par la nécessité de redimmensionner une de ses partoches :
"As-tu considéré l'utilisation de LVM2 ? Il te procure vraiment une flexibilité supplémentaire. Tu peux diminuer ou agrandir les partitions au vol (du moment que ton système de fichiers supporte le redimmensionnement) te permettant d'ajuster ton partitionnement chaque fois que tu le jugera nécessaire.
Je recommanderais un schéma ressemblant à celà :
"

/boot (25MB)
swap (1024MB)
LVM2 Volume (Rest of the disk):
  /home (10GB - depends what you're planning to store here)
  /var (5GB - if it's a server & you have the space, why not?)
  /tmp (512MB)

Of course, you could easily add whatever other partition you wanted to and observe how they start filling up. If they require more space, grow them.
In addition, don't feel like you "have" to partition the entire disk initially, you can always grow partitions later. This adds to the flexibility of LVM2.
Even on my desktop I use LVM2, just so I never have to worry about partition sizes again.
Furthermore, Ext3 and ReiserFS both support resizing. XFS only supports growing.

Notes

  1. array : En informatique, un tableau est une structure de données de base qui est un ensemble d'éléments (des variables ou autres entités contenant des données), auquel on a accès à travers un numéro d'index (ou indice). Voir Wikipedia
Trop cool pour Internet Explorer