18.4. RAID

18.4.1. RAID logiciel

18.4.1.1. Configuration du pilote de disque concaténé (CCD — “Concatenated Disk Driver”)

Travail original de Christopher Shumway. Révisé par Jim Brown.

Quand il est question du choix d'une solution de stockage de masse les critères de choix les plus importants à considérer sont la vitesse, la fiabilité, et le coût. Il est plutôt rare de pouvoir réunir ces trois critères; normalement un périphérique de stockage rapide et fiable est coûteux, et pour diminuer les coûts la vitesse ou la fiabilité doivent être sacrifiées.

A la conception du système décrit plus bas, le coût a été choisi comme facteur le plus important, suivi de la vitesse, et enfin la fiabilité. La vitesse de transfert des données est limitée par le réseau. Et tandis que la fiabilité est très importante, le disque CCD décrit ci-dessous est destiné au stockage de données en ligne qui sont déjà complètement sauvegardées sur CD-Rs et qui peuvent être facilement remplacées.

Définir vos propres besoins est la première étape dans le choix d'une solution de stockage de masse. Si vos critères de choix privilégient la vitesse ou la fiabilité par rapport au coût, votre solution diférera du système décrit dans cette section.

18.4.1.1.1. Installation du matériel

En plus du disque système IDE, trois disques Western Digital de 30Go, 5400 trs/min IDE forment le coeur du disque CCD décrit ci-dessous donnant approximativement 90Go de stockage en ligne. La solution idéale serait d'avoir pour chaque disque IDE son propre câble et contrôleur IDE, mais pour minimiser les coûts, des contrôleur IDE supplémentaires n'ont pas été utilisés. Aussi, les disques ont été configuré de telle façon que chaque contrôleur IDE ait un disque maître et un disque esclave.

Au redémarrage, le BIOS a été configuré pour détecter automatiquement les disques attachés. FreeBSD les a d'ailleurs détectés au redémarrage:

ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

Note : Si FreeBSD ne détecte pas les disques, assurez-vous que vous avez correctement placé les cavaliers. La plupart des disques IDE disposent également d'un cavalier “Cable Select”. Ce n'est pas le cavalier de configuration maître/esclave. Consultez la documentation du disque pour identifier le cavalier correct.

Ensuite, réfléchissez sur la manière de les intégrer au système de fichiers. Vous devriez faire des recherches sur vinum(8) (Chapitre 20) et ccd(4). Dans cette configuration particulière, ccd(4) a été choisi.

18.4.1.1.2. Configuration du CCD

Le pilote ccd(4) vous permet de prendre plusieurs disques identiques et les concaténer en un seul système de fichiers logique. Afin d'utiliser ccd(4), vous avez besoin d'un noyau avec le support ccd(4). Ajoutez la ligne suivante à votre fichier de configuration de noyau, recompilez, et installez le noyau:

device   ccd

Le support ccd(4) peut également chargé sous la forme d'un module noyau.

Pour configurer ccd(4), vous devez tout d'abord utiliser bsdlabel(8) pour labéliser les disques:

bsdlabel -w ad1 auto
bsdlabel -w ad2 auto
bsdlabel -w ad3 auto

Cela a créé un label de disque ad1c, ad2c et ad3c qui s'étend sur l'intégralité du disque.

L'étape suivante est de modifier le type de label de disque. Vous pouvez utiliser bsdlabel(8) pour éditer les disques:

bsdlabel -e ad1
bsdlabel -e ad2
bsdlabel -e ad3

Cela ouvre le label de disque actuel de chaque disque dans l'éditeur fixé par la variable d'environnement EDITOR, généralement, vi(1).

Un label de disque non modifié ressemblera à quelque chose comme ceci:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

Ajoutez une nouvelle partition e pour être utilisé par ccd(4). Cela peut être une copie de la partition c mais le type de système de fichiers (fstype) doit être 4.2BSD. Le label de disque devait ressembler à:

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
  e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

18.4.1.1.3. Création du système de fichiers

Maintenant que tous les disques sont labélisés, vous devez construire le ccd(4). Pour cela, utilisez ccdconfig(8), avec des options semblables à ce qui suit:

ccdconfig ccd0(1) 32(2) 0(3) /dev/ad1e(4) /dev/ad2e /dev/ad3e

L'utilisation et la signification de chaque option est données ci-dessous:

(1)
Le premier argument est le périphérique à configurer, dans ce cas, /dev/ccd0c. La partie /dev/ est optionnelle.
(2)
L'entrelacement (“interleave”) du système de fichiers. L'entrelacement définit la taille d'une bande de blocs disque, de 512 octets chacune normalement. Donc un entrelacement de 32 serait d'une largeur de 16384 octets.
(3)
Paramètres pour ccdconfig(8). Si vous désirez activer les miroirs disque, vous pouvez spécifier un indicateur à cet endroit. Cette configuration ne fournit pas de miroir pour ccd(4), aussi l'indicateur est a 0 (zéro).
(4)
Les derniers arguments de ccdconfig(8) sont les périphériques à placer dans le disque concaténé. Utilisez le chemin complet pour chaque périphérique.

Après avoir utilisé ccdconfig(8) le ccd(4) est configuré. Un système de fichiers peut être créé. Consultez la page de manuel de newfs(8) pour les options disponibles, ou lancez simplement:

newfs /dev/ccd0c

18.4.1.1.4. Automatiser la procédure

Généralement, vous voudrez monter le ccd(4) à chaque redémarrage. Pour cela, vous devez le configurer avant toute chose. Ecrivez votre configuration actuelle dans /etc/ccd.conf en utilisant la commande suivante:

ccdconfig -g > /etc/ccd.conf

Lors du démarrage, la procédure /etc/rc exécute ccdconfig -C si /etc/ccd.conf existe. Cela configure automatiquement le ccd(4) de façon à pouvoir être monté.

Note : Si vous démarrez en mode mono-utilisateur, avant que vous ne puissiez monter le ccd(4), vous devez utiliser la commande suivante pour configurer l'unité:

ccdconfig -C

Pour monter automatiquement le ccd(4) placez une entrées pour le ccd(4) dans /etc/fstab, il sera ainsi monté au démarrage:

/dev/ccd0c              /media       ufs     rw      2       2

18.4.1.2. Le gestionnaire de volume Vinum

Le gestionnaire de volume Vinum est un pilote de périphérique de gestion de disques virtuels. Il sépare le disque matériel de l'interface de périphérique bloc et organise les données de telle façon qu'il en résulte une amélioration de la flexibilité, des performances et de la fiabilité, comparé à la vision traditionnelle sous forme partitionnée du stockage disque. vinum(8) implémente les modèles RAID-0, RAID-1 et RAID-5, individuellement ou combinés.

Voir le Chapitre 20 pour plus d'information au sujet de vinum(8).

18.4.2. RAID Matériel

FreeBSD supporte également de nombreux contrôleurs RAID. Ces périphériques peuvent contrôler un système RAID sans nécessiter l'utilisation d'un logiciel spécifique pour FreeBSD pour gérer l'unité.

En utilisant son propre BIOS, la carte contrôle la plupart des opérations disque. Ce qui suit est une description rapide d'une configuration utilisant un contrôleur Promise IDE RAID. Quand cette carte est installée et le système redémarré, une invite s'affichera posant quelques questions. Suivez les instructions à l'écran pour atteindre l'écran de configuration de la carte. A partir de là, vous avez la possibilité de combiner tous les disques attachés. En faisant cela, les disques apparaîtront sous la forme d'un unique disque sous FreeBSD. D'autres niveaux RAID peuvent être configurés en conséquence.

18.4.3. Reconstruire une unité ATA RAID1

FreeBSD vous permet de remplacer à chaud un disque défectueux dans une unité. Cela doit être fait avant redémarrage.

Vous verrez probablement dans /var/log/messages ou dans la sortie de dmesg(8) quelque chose comme:

ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)
status=59 error=40
ar0: WARNING - mirror lost

En utilisant atacontrol(8), recherchez de plus amples informations:

# atacontrol list
ATA channel 0:
	Master:      no device present
	Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

ATA channel 1:
	Master:      no device present
	Slave:       no device present

ATA channel 2:
	Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

ATA channel 3:
	Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
	Slave:       no device present

# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED
  1. Vous devrez détacher le canal ATA avec le disque défectueux de façon à pouvoir le retirer sans risque:

    # atacontrol detach ata3
    
  2. Remplacer le disque.

  3. Rattacher le canal ATA:

    # atacontrol attach ata3
    Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
    Slave:   no device present
    
  4. Rajouter le disque de rechange à l'unité:

    # atacontrol addspare ar0 ad6
    
  5. Recontruire l'unité:

    # atacontrol rebuild ar0
    
  6. Il est possible de contrôler l'avancée de la procédure en utilisant la commande suivante:

    # dmesg | tail -10
    [output removed]
    ad6: removed from configuration
    ad6: deleted from ar0 disk1
    ad6: inserted into ar0 disk1 as spare
    
    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed
    
  7. Attendre jusqu'à la fin de cette opération.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <[email protected]>.
Pour les questions sur cette documentation, contactez <[email protected]>.