CCD – Concatenated Disk Drives sur BSD

Et voilà, j’ai craqué. J’ai réinstallé une openbsd 🙂
Quel plaisir, quelle joie, quelle simplicité … bref c’est dlaballe !
Le but de CCD est de pouvoir utiliser du mirroring, du stripping ou autre de manière très simple sur OpenBSD. Grossièrement ca reprend le fonctionnement du RAID 0 et 1 et JBOD, ou d’un LVM sous linux.
Personnellement j’ai déjà configuré, installé et utilisé du RAID 0 et 5 chez moi et au taff, et à chaque fois de manière matérielle. Jamais encore de RAID logiciel, ou de LVM.
Avec quelques petits disques (entre 2 et 4 fois 40Go) sous la main, je voulais faire un espace de partage unique de taille globale. C’est la que je suis tombé sur CCD sous OpenBSD.
J’étais loin de me faire berner par la manpage de CCD qui avait l’air de présenter ca comme un outil qui se met en place en quelques secondes. En réalité j’ai bien passé une bonne heure dessus avant de comprendre ce qui ne fonctionnait pas (bug ou feature ? La question reste en suspens).

Je vais présenter la mise en place sous forme de tuto/retour d’expérience rapide:
Il faut donc avoir plusieurs disques (apparement si les disques sont de même taille et de même géométrie il y aurait un gain de performance), et openbsd (la 4.6 est sortie récemment)

Pan ! on attaque direct dans le « peut-être ». Je m’explique, j’avais commencé par installer le système de manière tout ce qu’il y a de plus classique. Tout le disque (wd0) utilisé par OBSD, 7 partitions, /, swap, /tmp, /usr, /var, /home et « CCD » (qu’il faut mettre en type ‘ccd’). Avec les lettres suivantes : a, b, d, e, f, g, h. Je l’avais dit, tout ce qu’il y a de plus normal.
Ensuite le deuxième disque avec lequel je voulais le concaténer, wd1, possédant une seule partition, wd1a de type ‘ccd’ aussi, car utilisé en entier par CCD.

Pour activer CCD et lui donner les partition que l’on veut merger, il faut éditer /etc/ccd.conf. Dans mon cas cela a donc donné :
# ccd ileave flags component devices
ccd0 0 none /dev/wd0h /dev/wd1a

Plus qu’à initialiser CCD pour que la magie s’opère, avec ccdconfig -C. Et effectivement, magie : kernel panic
Donc ! Pour l’histoire, et surtout pour la faire brève, en tout cas sur mon système, il a fallu que je modifie mes disklabels pour arriver à ce résultat :
# ccd ileave flags component devices
ccd0 16 none /dev/wd0e /dev/wd1e

Et oui, ça n’a l’air de fonctionner qu’avec les partitions ‘e’ de chaque disque. Heureusement que je pouvais réinstaller le système pour réserver la partition ‘e’ à CCD, je pense que c’était plus simple que de bidouiller les disklabels.

Les deux messages d’erreurs que j’ai eu le plus souvent :
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
disklabel: ioctl DIOCGDINFO: Device not configured
Une fois cette douloureuse étape passée, il ne reste plus qu’à faire un disklabel sur ccd0 et executer newfs /dev/rccd0a

Et voilà le travail :
Avant :
# dmesg |grep wd
wd0 at pciide0 channel 0 drive 0:
wd0: 16-sector PIO, LBA, 38166MB, 78165360 sectors
wd1 at pciide0 channel 0 drive 1:
wd1: 16-sector PIO, LBA, 38166MB, 78165360 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5
wd1(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 5

Après :
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd0a 1007M 42.1M 915M 4% /
/dev/wd0g 1007M 38.0K 957M 0% /home
/dev/wd0d 2.5G 6.0K 2.3G 0% /tmp
/dev/wd0f 3.9G 628M 3.1G 16% /usr
/dev/wd0h 2.7G 7.2M 2.6G 0% /var
/dev/ccd0a 61.3G 21.4G 36.9G 37% /mnt/datas

Par contre je n’ai pas encore testé de rajouter un disque « à la volée » voir si ca détruit tout le volume ou pas …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.