logo       

Les NBD (Was Re: [LN] Graver sur un /dev/ distant): msg#00308

org.user-group.linux.france.nantes

Subject: Les NBD (Was Re: [LN] Graver sur un /dev/ distant)

Baptiste SIMON a écrit :

Serge Noiraud a écrit :

Est-il possible d'utiliser un *device* distant sous Linux ?

A ma connaissance OUI, mais non testé. voir : nbd : The Network Block Device ( modification noyau, ... )
mount : option _netdev

Il vaut mieux utiliser des commandes remote ( ssh, ... )


cela est surtout intéressant pour imaginer du RAID via le réseau ou ce
genre de chose... mais ca ne doit pas être non plus impossible de
l'utiliser pour des opérations de gravure, même si je me permets de dire
que je suis inquiet en cas de pépin réseau (ce qui est "fréquent" par
rapport aux exigeances de la gravure :p)


j'ai mis en place les NBD pour me prouver que c'était beau.
Cela a consisté à lancer un nbd-server sur 32 machines (des belles machines), qui "mettait à disposition" une partition de 160 Go chacune.
Ca donnait quelque chose comme ça :
# Script "/etc/rc.d/nbd-server", à appeler dans /etc/rc.local, par exemple.
#!/bin/sh
#
# this script starts NBD Server on partiton /dev/hda7, port 5000
/opt/nbd/bin/nbd-server 5000 /dev/hda7



Depuis une 33ème machine, j'ai lancé les 32 nbd-client se connectantsur mes 32 "nodes".
# script "start-nbd.sh" : à lancer dans /etc/rc.local, par exemple
#!/bin/sh
modprobe nbd
for node in `seq 0 31`; do
/usr/local/sbin/nbd-client node$node 5000 /dev/nbd$node
done

On disposait alors de 32 volumes de 160 Go.

J'ai alors voulo fabriquer un beau raid avec tout ce petit monde :

Script "mk-big-raid5.sh' :

mdadm --stop /dev/md[3-6]
sleep 1
mdadm --remove /dev/md[3-6]
sleep 1
mdadm --create /dev/md3 --level=5 \
--raid-devices=7 --spare-devices=1 --chunk=256 \
/dev/nbd0 \
/dev/nbd1 \
/dev/nbd2 \
/dev/nbd3 \
/dev/nbd4 \
/dev/nbd5 \
/dev/nbd6 \
/dev/nbd7 \

mdadm --create /dev/md4 --level=5 \
--raid-devices=7 --spare-devices=1 --chunk=256 \
/dev/nbd8 \
/dev/nbd9 \
/dev/nbd10 \
/dev/nbd11 \
/dev/nbd12 \
/dev/nbd13 \
/dev/nbd14 \
/dev/nbd15

mdadm --create /dev/md5 --level=5 \
--raid-devices=7 --spare-devices=1 --chunk=256 \
/dev/nbd16 \
/dev/nbd17 \
/dev/nbd18 \
/dev/nbd19 \
/dev/nbd20 \
/dev/nbd21 \
/dev/nbd22 \
/dev/nbd23 \

mdadm --create /dev/md6 --level=5 \
--raid-devices=7 --spare-devices=1 --chunk=256 \
/dev/nbd24 \
/dev/nbd25 \
/dev/nbd26 \
/dev/nbd27 \
/dev/nbd28 \
/dev/nbd29 \
/dev/nbd30 \
/dev/nbd31

Je disposais alors de 4 volumes RAID 5 de 7 disques chacun + 1 spare, donc de 5*160 Go utilisables par volume.

J'ai alors voulu faire deux RAID0 avec tout ce petit monde :
mdadm --stop /dev/md7
mdadm --remove /dev/md7
mdadm --create /dev/md7 --chunk=256 --level=0 --raid-devices=2 /dev/md3 /dev/md4


mdadm --stop /dev/md8
mdadm --remove /dev/md8
mdadm --create /dev/md8 --chunk=256 --level=0 --raid-devices=2 /dev/md5 /dev/md6

Ca a bien marché, et je disposais de 2 volumes de 2 To. (la machine qui a monté ces RAID est en Linux 2.4, donc on ne pouvait pas dépasser les 2 To).

Coté performances : le tuyau entre les nodes et le "serveur" est composé de liens Gigabit (2 switches avec 16 nodes sur chacun d'entre-eux). Le "serveur" a 2 liens gigabit en bonding vers chacun des switches, donc approximativement 2 Gb vers chaque switch. Avec ça, lon tapait à plus de 110 Mo/s sur chaque volume (formatté pour l'occasion en XFS). On dépassait donc la vitesse unitaire de chaque disque (SATA donné à 50 Mo/s par hdparm), et même celle du tuyau (Gigabit "seulement").

Seul problème, et vous comprendrez pourquoi je parle de tout ça au passé : le premier node qui reboote casse le raid sur lequel il est... En effet, quand nbd-client est planté, il il est incapable de redémarrer et de retrouver ses petits tout seul (après le reboot du node, par exemple). Il aurait donc fallu automatiser une détection d'un node qui reboote, passer en "Fail" le volume en question sur le "serveur", arrêter le nbd-client brutalement (signal TERM ignoré), décharger le module "nbd-client" (ah oui, mais les 31 autres alors ???) et le recharger pour remettre tout le monde debout.

Le problème qui m'a fait arrêter cette expérimentation (ça faisait pour pas cher : les 160 Go n'étaient pas utilisés par les nodes) deux beaux volumes d'archivage de 2 * 2 To...), c'est tout simplement le "ah oui, mais les 31 autres alors ???". Car du coup, mes raids devaient être arrêtés et redémarrés si l'un seulement d'entre-eux posait un problème.

Et puis en temps de reconstruction, le raid 5, ça faisait pleurer.


Cependant, le nbd pour graver, ça doit marcher (en dehors des problèmes de perfs). Tout ça n'est que Block-device.

Je viens de booter un second portable, et je vais faire un test au travers d'un réseau Wifi (11 mbps sur l'un des deux portables).

François.

--
François MICAUX - Directeur - fmicaux at actilis point net
SSII Spécialiste GNU-Linux et Logiciels Libres - www.actilis.net
Conseil, Audit, Formation, Intégration de système, Développement
Tel : 02 28 07 3000 - Fax : 02 28 07 3040 - GSM : 06 89 95 28 10





<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise