[(nicht ganz) gelöst] mdadm RAID1 liest nur von einer HDD

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

[(nicht ganz) gelöst] mdadm RAID1 liest nur von einer HDD

Beitrag von hikaru » 15.07.2018 13:08:45

Hallo,

ich mache gerade meine ersten Tests zum Thema RAID1 und bin irritiert, weil offenbar nur von einer meiner zwei RAID-HDDs gelesen wird.

Erstellt habe ich das RAID nach dieser Anleitung [1] zunächst als degraded-RAID1 aus zwei 1TB-HDDs, wobei ich den Bootloader-Abschnitt übersprungen habe weil es sich um reine Datenplatten handelt.

So sieht mein Testsetup aus:
fdisk -l (NoPaste-Eintrag40383): sda ist die Systemplatte mit einem Sack voll Testsystemen und sollte hier keine Rolle spielen. Momentan nutze ich ein Stretch-Xfce von sda9. sdb1 und sdc1 sind die RAID-HDDs bzw. Partitionen:

Code: Alles auswählen

# blkid | grep raid
/dev/sdb1: UUID="1a45cfb6-0290-6d2d-c0a9-becffbac0ac5" UUID_SUB="4e59453b-59f9-83f7-a400-58ddb6218fe9" LABEL="abit:0" TYPE="linux_raid_member" PARTUUID="1fda20ed-01"
/dev/sdc1: UUID="1a45cfb6-0290-6d2d-c0a9-becffbac0ac5" UUID_SUB="cb9deff2-5813-44be-be31-8d5e6a79e58e" LABEL="abit:0" TYPE="linux_raid_member" PARTUUID="1fda20ed-01"
sdb ist eine 2,5"-HDD von HGST, sdc eine 3,5"-HDD von WD (hatte ich gerade so rumliegen):

Code: Alles auswählen

# hdparm -i /dev/sd[b-c] | grep Model
 Model=HGST HTS541010A9E680, FwRev=JA0OA560, SerialNo=J810001VJE3WXA
 Model=WDC WD10EACS-00ZJB0, FwRev=01.01B01, SerialNo=WD-WCASJ0292673
Das RAID ist nach dem Restore inzwischen voll funktionsfähig ...

Code: Alles auswählen

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdc1[1] sdb1[2]
      976629760 blocks super 1.2 [2/2] [UU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>
...und sauber per fstab gemountet:

Code: Alles auswählen

# grep md0 /etc/fstab
/dev/md0        /dsk/data1      ext4     defaults         0         0

Code: Alles auswählen

# mount | grep md0
/dev/md0 on /dsk/data1 type ext4 (rw,relatime,data=ordered)

Code: Alles auswählen

# grep md0 /etc/mdadm/mdadm.conf 
ARRAY /dev/md0 UUID=1a45cfb6:02906d2d:c0a9becf:fbac0ac5
Darauf befinden sich VBox-VMs, welche problemlos funktionieren. Bei einem Lesetest habe ich aber Datenraten von rund 100MB/s, die dafür sprechen, dass nur von einer der HDDs gelesen wird:

Code: Alles auswählen

# pv < /dsk/data1/vbox/machines/jessie64_compile/jessie64_compile.vdi > /dev/zero 
9,89GiB 0:01:44 [97,3MiB/s] [=============================================>] 100%
Laut Debianxfce4-diskperf-plugin werden dabei auch nur Daten von sdb1 gelesen, nicht aber von sdc1. Warum ist das so, und wie kriege ich das RAID dazu, von beiden HDDs gleichzeitig zu lesen?


Edit:
Darauf hätte ich auch gleich kommen können: Parallel von zwei HDDs zu lesen funktioniert natürlich nur bei parallelen Leseoperationen, die es natürlich beim Lesen von einer Datei in einem Prozess nicht gibt. Starte ich parallel zum pv von oben ein zweites pv auf eine andere Datei, dann wird auch von beiden HDDs gelesen.


[1] https://wiki.archlinux.org/index.php/Co ... em_to_RAID
Zuletzt geändert von hikaru am 16.07.2018 08:50:22, insgesamt 1-mal geändert.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: [gelöst] mdadm RAID1 liest nur von einer HDD

Beitrag von hikaru » 16.07.2018 08:49:57

Eine Nachtragsfrage hätte ich da noch.
Die Tests aus dem ersten Beitrag waren alle auf dem Hostsystem. Wenn ich die aber in einer VBox-VM wiederhole, dann ändert sich das Verhalten:

1. Ohne Verwendung von Host-I/O-Cache für den virtuellen HDD-Controller verhält sich die VM immer so, als würde nur ein Zugriff stattfinden. D.h., egal ob ich ein oder zwei pv-Instanzen in der VM starte (beide auf verschiedene virtuelle HDDs, die aber beide auf dem Host-RAID1 liegen), auf dem Host wird immer nur von einer der RAID-HDDs gelesen und das passiert dann natürlich unter viel Gerödel und Durchsatzverlust, weil ständig die HDD-Köpfe zwischen den Vbox-Images wechseln.

2. Schalte ich Host-I/O-Cache ein, dann wird zwar von beiden RAID-HDDs gelesen, aber offenbar liest nicht wie direkt auf dem Host jedes pv von einer der HDDs, sondern beide lesen gleichzeitig von beiden HDDs, so dass gegenüber 1. nicht der Durchsatz steigt, sondern nur der Lärmpegel, weil nun beide HDDs die Köpfe hin- und herfahren.

Hat dafür jemand eine Erklärung oder gar Lösung?

Antworten