Bonjour
J'ai enfin monté mon serveur NAS, et je vais vous décrire comment.
Le Matériel
Un gros boitier, (http://forum.hardware.fr/hardwaref [...] 0513-1.htm, dernière page pour les photos), le CoolerMaster Stacker. Celui-ci utilise des sous-boitiers "HDD 4 en 3" qui permettent de monter 4 disques 3,5" dans 3 emplacements 5"1/4 avec un ventilateur 12cm pour les ventiler, ce boitier est vendu séparément, et un est déjà inclus avec le CoolerMaster Stacker, j'en ai donc acheté un supplémentaire.
En effet, j'ai mis un disque de boot récupéré (8Go de bâse) pour le boot, et 8 disques Serial ATA Maxtor MAXLINE III 300Go (garantis 5ans) chacun pour le stockage des données... Oui, ça en fait...
Pour connecter ça, après une recherche assez longue, j'ai trouvé la carte ASUS K8N4-E Deluxe qui dispose de 8 ports Serial ATA groupés en 2 contrôleurs, un nVidia et un Silicon Image. Les deux permettent un certain niveau de RAID, mais je ne voulais pas devoir tout pêter le jour où je change de carte mère... Done le RAID sera rêglé en logiciel. J'ai changé son ventirad en un radiateur bien qu'aujourd'hui si c'étair à refaire je m'en dispenserais, c'est le CPU qui est le plus bruyant.
Cette carte n'a pas de carte vidéo intégrée, j'ai donc pris du bas de gamme (le serveur ne tourne en graphique que marginalement).
J'ai pris 1Go de RAM parce qu'on est en 2006.
Et un Sempron 2600+ parce que j'ai pas besoin d'un CPU puissant. Si j'avais su je n'aurais pas pris son ventirad qui est la principale source de bruit de mon installation. Merci AMD!
Alimentation: 600W (ASUS parle de 350W, j'ajoute 8 disques de 25W max chacun, ça fait 550), la mienne est une Enermax Noisetaker 600W.
L'OS
Je modifierai cette partie lorsque j'aurai changé ma config en x86_64: il semble qu'on gagne 30% de temps CPU, et le RAID5 est "réputé consommer". C'est un kernel 2.6.15...
<edit date="20060303">Le 64 bits est maintenane installé, no problem</edit>
J'ai choisi une distribution Fedora Core 4. Elle a l'avantage d'être dans la famille RedHat, puisqu'il faut choisir son camp, ça me désole, mais ce que j'en ai fait ne diffère pas en debian...
J'ai expliqué que je souhaitais faire du RAID5 logiciel : un stripping sur 7 disques avec un disque Spare pour survivre au crash d'un disque et se remettre de lui-même en mode nominal après moins de 2h (en mode dégradé : mêmes fonctionnalités mais un peu plus lent) en cas de perte d'un disque. Je ne veux pas un RAID matériel parce que les cartes qui font ça de manière sérieuse (avec plus de 4 disques) sont inabordables, PCI donc lentes, et pas à l'abri d'une défaillance. Je veux bien remplacer une CM à 80, mais remplacer une carte RAID à 700 est une autre histoire...
Une réflexion sur mes besoin m'a mené à la conclusion que je n'ai pas besoin que TOUT mon espace soit en RAID5... Je décide donc de partitionner chaque disque et 38% non RAID, 62% RAID pour avoir 1To en RAID et 800Go en non RAID.
Mon linux boote sur un /dev/hda, le disque dur standard, pas de mystère, la partie RAID et autre sera traitée après l'installation.
Un fichier Excel donne les détails: http://demedj.free.fr/share/ServeurFichiers.xls
La configuration
J'ai décidé d'utiliser fdisk alors que LVM permet de s'en passer totalement, mais les tests de perfs que j'ai faits avec LVM me font un peu douter de ses performances...
Logical Volume Management doit être installé, mdadm aussi. Selon la distrib, ces mackages existent surement.
Par ailleurs, ayant entendu du mal de ext3 en reprise sur arrêt forcé, je lui préfère ReiserFS, J'ai aussi installé xfs, mais je n'ai pas benché les différences. ReiserFS m'a paru moins performant que ext2 mais pas que ext3... ReiserFS n'est pas inclus dans la distrib FC4, un coup de yum et c'est fait.
Les Partitions
Chaque disque /dev/sd[a-h] est donc partitionné en deux partitions primaires
Périphérique Amorce Début Fin Blocs Id Système
/dev/sd[a-h]1 1 13863 111354516 83 Linux
/dev/sd[a-h]2 13864 36483 181695150 83 Linux
|
J'ai fait ça à la main, c'est pas très compliqué, avec fdisk. Par la suite j'ai fait un script qui fait ça, mais il n'est pas très malin, si fdisk ajoute une confirmation dans une version ultérieure, mon script aveugle se plante, j'ai honte, je ne le livre pas .
Le RAID5 device
Pour configurer le RAID device, j'étais tellement impressionné par la simplicité de la commande que je vous la livre :
mdadm --create /dev/md0 --level=5 --raid-devices=7 --spare-devices=1 --parity=left-symmetric /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2 /dev/sdf2 /dev/sdg2 /dev/sdh2 |
Bon OK: j'explique :
--create : création initiale du device /dev/md0 qui sera le disque RAID5, mon disque réputé indestructible.
--level=5 : je crée un RAID5, pour info le RAID6 est supporté par Linux, mais ça me semblait un excès de zèle, couteux, et pas mieux que RAID5 + 1spare, enfin ça existe : on ne va pas se plaindre.
--raid-devices=7 : j'utilise 7 disques (les 7 premiers de la liste qui suit) pour le RAID5, donc la capacité de 6; plus un disque pour la parité (XOR).
--spare-devices=1 : j'utilise un 8ème disque pour relayer toute défaillance de disque. C'est le huitième disque de ma liste.
--parity=left-symmetric : est l'algo par défaut, c'est technique et franchement j'ai pas creusé.
/dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2 /dev/sdf2 /dev/sdg2 : les 7 disques du RAID5
/dev/sdh2 : le disque spare
Une fois que c'est fait, on n'arrête pas la machine avant que l'array soit constitué, 1h30 environ, mais l'array peut être utilisé, on est simplement en mode dégradé. (Rappel : C'est un kernel 2.6.15...)
/proc/mdstat indique la progression de la construction de l'array :
[b]cat /proc/mdstat[/b]
Personalities : [raid0] [raid5]
md0 : active raid5 sdg2[7] sdh2[8] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1] sda2[0]
1090170240 blocks level 5, 64k chunk, algorithm 2 [7/6] [UUUUUU_]
[============>........] recovery = 64.4% (117100800/181695040) finish=41.7min speed=25777K/sec
unused devices: <none> |
Quand c'est fait :
cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sda2[0] sdg2[7] sdh2[6] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1]
1090170240 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
unused devices: <none>
|
Maintenant pour que ça marche au reboot, il faut créer un fichier /etc/mdadm.conf
DEVICE /dev/sd[abcdefgh]2
ARRAY /dev/md0 level=raid5 num-devices=7 UUID=xxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxxx
devices=/dev/sda2,/dev/sdb2,/dev/sdc2,/dev/sdd2,/dev/sde2,/dev/sdf2,/dev/sdg2,/dev/sdh2
|
Et puis il faut que le service mdmpd tourne dans le runlevel de votre système, là ça peut dépendre de votre distribution.
Logical Volume Management
J'utilise le LVM sur chaque partition non RAID /dev/sd[a-h]1, mais le RAID est bâti sur les devices /dev/sd[a-h]2 directement, il me semblait inutile de baser le RAID sur une surcouche qui aurait pu coûter des perfs sans ajouter de réelle valeur.
Pour moi LVM et RAID devraient être intégrés... Et ReiserFS aussi C'est un autre sujet...
Donc chaque /dev/sd[a-h]1 est un Physical Volume, et le /dev/md0, le disque RAID5 "indestructible".
Par dessus, un volume group "" pour les /dev/sd[a-h]1, et volume group "safeVG" pour le /dev/md0.
En fait j'ai pas mis tous les /dev/sd[a-h]1 dans unsafeVG: rien ne presse, je l'étends quand je veux.
Je crée un LogicalVolume "safeLV" dir "safeVG", et un "unsafeLV" sur "unsafeVG"...
"safeVG" fait 1To et des poussières, "unsafe" ça dépend de ce que j'ai mis dedans, j'ai commencé avec 200Go.
Je fais un mkreiserfs sur /dev/mapper/safeVG-safeLV.
Je fais un mkext2fs sur /dev/mapper/unsafeVG-unsafeLV.
En effet pour les données non critiques, je me moque d'avoir un fs journalisé. J'assume.
/etc/fstab
/dev/mapper/safeVG-safeLV /data/safe reiserfs defaults 0 2
/dev/mapper/unsafeVG-unsafeLV /data/unsafe ext2 defaults 0 2 |
...rien de bien compliqué...
Samba
Ben là c'est un peu comme on veut, c'est pas compliqué de configurer, j'ai juste créé des scripts pour Windows qui connectent facilement le poste à mon serveur :
net use s: \\<serveur>\<ressource_partagee> /user:<utilisateur_samba> <mot_de_passe> /persistent:no |
C'est tout pour aujourd'hui, merci de me fournir vos commentaire.
A++
--
Wile
Message édité par WileECoyote le 03-03-2006 à 10:06:08