Aus drei Festplatten soll ein Software Raid aufgebaut werden. Um einen gleichzeitigen Ausfall von mehr als einer Platte unwahrscheinlicher zu machen, werden bewusst drei verschiedene Platten gewählt.
Auf jeder Festplatte wird zum Testen am Anfang der Platte eine (nach 4Kb Sektoren ausgerichtete) 50GB Partition angelegt, um sicherzustellen, dass die Partition und damit die Tests im schnellsten Bereich der Platte durchgeführt werden.
Die Tests bestehen jeweils aus einem
# bonnie++ -u root -n 512
1. Test
btrfs direkt auf den drei Partitionen im Raid1 Modus
# mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sdb1 /dev/sdc1
Ergebnis
1.96,1.96,btrfs_raid1,1,1292113629,7424M,,350,91,89961,17,41739,11,3011,87,139103,9,263.0,150,512,,,,,30362,85,535162,100,21496,99,30677,85,584015,99,20249,99,21532us,420ms,748ms,14832us,95677us,358ms,231us,494us,1375us,331us,20us,1022us
Achtung, df kommt mit btrfs im Raid1 Modus nicht klar und zeigt die Größen falsch an (als wäre es Raid0).
2. Test
ZFS direkt auf den drei Partitionen im Raid1 Modus
# zpool create myraid mirror /dev/sda1 /dev/sdb1 /dev/sdc1
Ergebnis
1.96,1.96,zfs_raid,1,1292108014,7424M,,30,11,27844,2,23145,3,3949,96,80796,4,314.7,2,512,,,,,4287,7,70823,14,3347,4,4230,7,611378,100,301,0,373ms,2101ms,2037ms,25926us,156ms,2110ms,1491ms,17110us,3134ms,1588ms,92us,3147ms
Die FUSE Anbindung von ZFS bremst hier vermutlich etwas.
Als nächstes wird ein Software Raid1 angelegt
# mdadm --create /dev/md0 --verbose --level=raid1 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
3. Test ext3 auf Software Raid1
1.96,1.96,raid1_ext3,1,1292286780,7424M,,698,98,76912,11,48566,5,3206,81,135758,6,435.5,5,512,,,,,42077,60,508867,99,639,0,41733,59,636969,99,424,0,25403us,725ms,821ms,95149us,110ms,1095ms,787ms,649us,35996ms,573ms,10us,32652ms
4. Test
ext4 auf Software Raid1
1.96,1.96,raid1_ext4,1,1292360885,7424M,,623,97,98745,9,56047,6,3620,92,142781,6,462.2,4,512,,,,,41545,68,493172,99,796,0,41655,67,619372,100,531,0,12733us,2595ms,4905ms,15959us,53513us,105ms,692ms,625us,39063ms,692ms,15us,30990ms

ZFS über FUSE fällt klar zurück.
Jetzt wird ein Software Raid5 angelegt
# mdadm --create /dev/md0 --verbose --level=raid5 --chunk=128 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
5. Test ext3 auf Software Raid5
1.96,1.96,raid5_ext3,1,1292356925,7424M,,663,98,109456,16,55972,7,3234,88,214047,11,374.8,5,512,,,,,40946,59,509454,99,619,0,42593,61,643011,99,398,0,12410us,654ms,222ms,49612us,113ms,1147ms,969ms,633us,29712ms,686ms,15us,24167ms
6. Test ext3 auf Software Raid5, richtige Werte für stride und stripe-width angegeben
# mkfs.ext3 -b 4096 -E stride=32,stripe-width=64
Ergebnis
1.96,1.96,raid5_ext3_strid,1,1292368077,7424M,,662,98,108479,16,56326,7,3637,93,214023,10,381.9,5,512,,,,,40947,60,504310,100,611,0,40727,59,626770,99,402,0,12437us,880ms,231ms,10512us,73266us,857m
s,969ms,633us,28396ms,770ms,17us,23632ms
6. Test ext4 auf Software Raid5
# mkfs.ext4 -b 4096 -E stride=32,stripe-width=64
Ergebnis:
1.96,1.96,raid5_ext4_strid,1,1292366374,7424M,,644,98,149946,14,60216,7,3623,92,212709,10,420.2,6,512,,,,,41484,69,489743,99,697,0,42810,69,620403,100,454,0,12423us,223ms,221ms,28187us,141ms,145ms,675ms,641us,22641ms,535ms,17us,22297ms
7. Test ext3 auf LVM auf Software Raid5
# mkfs.ext3 -b 4096 -E stride=32,stripe-width=64
1.96,1.96,raid5_ext3_strid_lvm,1,1292365464,7424M,,658,97,106858,16,56228,7,3447,88,213396,11,391.6,5,512,,,,,39319,57,507058,99,588,0,41440,60,635619,99,392,0,12053us,429ms,221ms,21754us,157ms,818ms,879ms,633us,27319ms,689ms,22us,27064ms

Wie man sieht, liegen die Werte relativ nahe zusammen. Die stride Option beim Erzeugen der ext Dateisystem zeigt keinen Unterschied, dafür sieht man dass ext4 (wegen der extent Option?) schnell große Dateien schreiben kann. Raid1 liegt erwartungsgemäß beim Lesen zurück, beim Raid1 liest der Linux Kernel nur von einer Platte, bei Raid5 muss er von mehr als einer parallel lesen.
Falls man unentschieden ist, ob man noch ext3 oder schon ext4 nutzen soll, sind die Zeiten für ein fsck vielleicht eine Entscheidungshilfe:

Die Werte sind einmal mit zwei 600GB Dateisystemen gemessen worden. Einmal leer und einmal mit je 285GB verteilt auf 27.000 Dateien. Die Ausfallzeit von 15 Minuten pro Dateisystem in dieser Größe ist sicher nicht zu vernachlässigen.
Siehe auch