Hallo zusammen,
ich habe auf einem Debian 10 einen RAID6-Verbund bestehend aus 6 baugleichen HDD's eingerichtet.
Code:
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md0 : active raid6 sdb1[5] sda1[0] sdh1[1] sdc1[4] sdd1[3] sde1[2] sdg3[6](J)
15627540480 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
unused devices: <none>
Die Lesegeschwindigkeit ist mit ca. 220 MiB/s aus meiner Sicht recht ordentlich (eine einzelne Festplatte erreicht ca. 85 MiB/s). Die Schreibgeschwindigkeit ist mit 40-50 MiB/s zwar langsam, aber das ist zu erwarten und es ist an verschiedenen Stellen nachzulesen wieso das so ist. Z.B. hier.
Um die Schreibperformance zu steigern habe ich einen LVM-Cache eingerichtet (siehe hier)und die das Kernel-Journaling für den RAID-Verbund im write-back Modus aktiviert -> sdg3[6](J).
Code:
Disk /dev/sdg: 111,8 GiB, 120034123776 bytes, 234441648 sectors
Disk model: KINGSTON SA400S3
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7AB60AB9-174B-E341-8F4E-BFAE71F0BB79
Device Start End Sectors Size Type
/dev/sdg1 2048 8390655 8388608 4G Linux swap
/dev/sdg2 8390656 18876415 10485760 5G Linux LVM
/dev/sdg3 18876416 234441614 215565199 102,8G Linux RAID
Beide Caches habe ich auf einer SSD eingerichtet. Das ist sicherlich nachteilig, da es in manchen Situationen dazu kommt, dass ich von einem in den anderen Cache schreibe, ist aber aufgrund limitiertet Hardware nur so möglich.
Code:
/sbin/lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices
[lvol0_pmspare] raid6-4T ewi------- 100,00m /dev/sdg2(1254)
r6_4T_files raid6-4T Cwi-a-C--- 14,55t [r6_4T_files_cache] [r6_4T_files_corig] 0,03 0,66 0,00 r6_4T_files_corig(0)
[r6_4T_files_cache] raid6-4T Cwi---C--- 4,80g 0,03 0,66 0,00 r6_4T_files_cache_cdata(0)
[r6_4T_files_cache_cdata] raid6-4T Cwi-ao---- 4,80g /dev/sdg2(25)
[r6_4T_files_cache_cmeta] raid6-4T ewi-ao---- 100,00m /dev/sdg2(0)
[r6_4T_files_corig] raid6-4T owi-aoC--- 14,55t /dev/md0(0)
Code:
echo "write-back" > /sys/block/md0/md/journal_mode
Benchmarks mittels dd oder bonnie ++ ergeben Werte bei 50 MiB/s. Diese Werte erziele ich auch wenn ich den LVM-Cache deaktiviere bzw. das Raid ohne Jounaling auf der SSD läuft.
Nach der langen Vorrede nun zur eigentlichen Fragestellung:
Das Raid-Journaling (Raid-Cache) verbessert die Performance beim Striping und der LVM-Cache soll sämtliche Schreiblast cachen. Ich würde jetzt erwarten, dass der LVM Cache die ankommenden Daten mit voller Geschwindigkeit cached und dann auf das Raid schreibt. So dass, so lange ich die Cache-Größe nicht überschreite, die Schreibleistung der SSD der limitierende Faktor sein sollte.
Dass hatte ich zwar beim RAID-Journalig auch gedacht, aber laut der Beschreibung wird nur das Striping beschleunigt.
Warum erhalte ich kaum einen Performancezuwachs? Ich habe auch schon jeweils beide Caches deaktiviert um das "cachen des Cashes" als Problem auszuschließen, aber die 50MiB/s bleiben.
Ich welcher Konfiguration macht das cachen in meinem Szenario (mit einer SSD) Sinn?
Ich würde nach dem, was ich alles gelesen habe vermuten:
LVM im write-through Modus + RAID-Cache im write-back Modus.
Gibt es von euch andere Ideen Ansätze? Fehlen noch Infos? Ist bei in meiner Logik/Gedankenwelt ein Fehler?
Lesezeichen