[gull] Disques de tailles différentes et Raid-0 (striping)
Leopoldo Ghielmetti
leopoldo.ghielmetti at a3.epfl.ch
Wed Aug 6 19:07:08 CEST 2008
Il giorno mer, 06/08/2008 alle 18.01 +0200, Félix Hauri ha scritto:
> Bonjour,
salut,
> Que se passe-t-il si j'associe en raid-0 2 disques de taille différente?
> A priori, cela fonctionne, en ce sens que j'obtiendrais bien un raid
> présentant une taille totale égale à la somme des tailles inclues, mais
> du point de vue du ``striping''...
>
> Pennons un exemple: deux disques sda 1Mo sdb 1.5Mo...
> # dd if=/dev/zero bs=1024 count=1024 of=sda
> 1024+0 records in
> 1024+0 records out
> 1048576 bytes (1.0 MB) copied, 0.00558941 seconds, 188 MB/s
> # dd if=/dev/zero bs=1024 count=1536 of=sdb
> 1536+0 records in
> 1536+0 records out
> 1572864 bytes (1.6 MB) copied, 0.00910629 seconds, 173 MB/s
>
> # losetup -f sda
> # losetup -f sdb
> # losetup /dev/loop/0
> /dev/loop/0: [0905]:327044 (sda)
> # losetup /dev/loop1
> /dev/loop1: [0905]:327045 (sdb)
>
> ... que l'on associe en raid-0:
> # mdadm --create /dev/md9 --level 0 --raid-devices 2 /dev/loop{0,1}
> mdadm: array /dev/md9 started.
Pourquoi est-ce que tu utilises des loop devices? Il y a un avantage par
rapport à accéder directement à une partition sur le disque voir au
disque tout entier?
> Bon, on s'accroche!
> # i=0
> # while printf "%16d\n%494s\n" $i ' ' |\
> dd of=/dev/md9 seek=$i 2>log ;do \
> echo -en \\r$((i++))\\e[K
> done;echo
> 4863
>
> (ou bien:
> # i=0;
> # while printf "%16d\n%494s\n" $i ' ';do
> printf >/dev/stderr "\r%6d\e[K" $((i++));
> done |\
> dd of=/dev/md9
> 4991dd: writing to `/dev/md9': No space left on device
> 4865+0 records in
> 4864+0 records out
> 2490368 bytes (2.5 MB) copied, 1.87245 seconds, 1.3 MB/s
>
> Bref...
>
> # mdadm --stop /dev/md9
> # losetup -d /dev/loop0
> # losetup -d /dev/loop1
> # strings sda | grep [0-9] >sda.nrs
> # strings sdb | grep [0-9] >sdb.nrs
> # diff sd[ab].nrs |\
> grep ^[\<\>] |\
> sort -k2 -n |\
> sed s/\ .*$// |\
> tr \<\> ab |\
> uniq -c |\
> column
> 128 a 128 a 128 a 128 a 128 a
> 128 b 128 b 128 b 128 b 128 b
> 128 a 128 a 128 a 128 a 128 a
> 128 b 128 b 128 b 128 b 128 b
> 128 a 128 a 128 a 128 a 128 a
> 128 b 128 b 128 b 128 b 1152 b
>
> CQFD. Le striping s'opère naturellement par tranches régulière
> tant que le mirroir est possible...
> Le ``reste'' n'est pas ``stripé''.
Expérience interessante en effet. Le résultat parait logique aussi, tant
qu'on peut striper on stripe (comme ça on a le maximum des performances)
ensuite on fait ce qu'on peut.
ciao, Leo
More information about the gull
mailing list