Portál AbcLinuxu, 7. května 2025 17:05
dd if=/dev/zero of=/dev/md1 bs=1M count=10000 hdparm -t /dev/md1Ty výsledky se mi zdají celkem slabé. Použil jsem řadič Areca ARC-1320-8I, který běží na PCIe 2.0 x8. Všechny disky jsou připojeny přes jeden port tohoto řadiče a ten by měl zvládat rychlosti 6Gbit/s. Je takto pomalý zápis normální nebo máte nějaký nápad, kde hledat úzké hrdlo? Jestli to chápu dobře, tak md raid by měl v tomto případě stripovat nad šesti zrcadlenými dvojicemi disků, tudíž by se zde mělo teoreticky dosáhnout šestinásobku rychlosti zápisu jednoho disku.
Z RAID5 mám obavy spíše z důvodu možnosti výpadku pouze jednoho disku, což je u většího počtů disků v poli celkem problém. Co jsem různě hledal o RAID6, tak to také není uplně výhra (co se týče rebuildu). Ale asi to zkusím, láká mě už jen snadná rozšířitelnost pole, kterou v linuxu RAID10 stále postrádá.
Další řadič už do toho nedostanu, resp. bych si nepomohl. Ty disky jsou totiž pověšené na SAS2 sběrnici se single expanderem. Konkrétně se jedná o tento case. Jsou to první větší stroje, které jsem dával dohromady, takže je to moje první zkušenost s něčím podobným. Pokud se pletu, tak mne opravte. Ten backplane má sice 3 SAS porty, ale jestli jsem to z dokumentace pochopil správně, tak ty dva jsou pouze na připojení dalších backplanes pro disky a jeden pro řadič. Paradoxně mi při nákupu přišel zapojený tak, že jeden port z řadiče byl zapojený správně a druhý port byl zapojený do portu pro další backplane. Dělalo to potom doslova psí kusy - na řadiči jsem viděl všechny disky dvakrát, ale v instalaci systému někdy dva a někdy žádný.
Reálnou propustnost sběrnice na desce brzy vyzkouším až mi přijdou SFP kabely. Zatím jsem zkoušel protlačit skrz jednu x8 kartu "jen" 10GBit a jelo to naplno (9.91Gbit). Na ty přerušení mrknu. Nikdy jsem s tím nelaboroval, ale google toho našel mraky, takže to snad nebude taková "matika".
Dík
[root@skirrax x86_64]# mdadm --create /dev/md1 --level 5 --raid-devices 12 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd /dev/sde2 /dev/sdf2 /dev/sdg2 /dev/sdh2 /dev/sdi2 /dev/sdj2 /dev/sdk2 /dev/sdl2
[root@skirrax x86_64]# cat /proc/mdstat Personalities : [raid1] [raid10] [raid6] [raid5] [raid4] md1 : active raid5 sdl2[12] sdk2[10] sdj2[9] sdi2[8] sdh2[7] sdg2[6] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1] sda2[0] 214804480 blocks super 1.2 level 5, 512k chunk, algorithm 2 [12/12] [UUUUUUUUUUUU]
[root@skirrax x86_64]# dd if=/dev/zero of=/dev/md1 bs=1M count=10000 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB) copied, 82.5009 s, 127 MB/s
[root@skirrax x86_64]# hdparm -t /dev/md1 /dev/md1: Timing buffered disk reads: 2654 MB in 3.00 seconds = 883.84 MB/sec
dd
přidat parametry oflag=direct
nebo oflag=sync
. Výsledky napoví, jestli je někde něco špatně.
Dejte sem výstup z /proc/mdstat
a dumpe2fs
toho filesystemu (nebo jiný výpis, kde bude vidět velikost stride toho fs).
Každopádně bych zkusil nastavit HW RAID přímo na tom řadiči, problém může být i v sw raidu. Minimálně ten HW RAID může o dost chytřeji používat write cache, a lépe optimalizovat writeback algorimus. V poslední době jsem dělal různé testy, a už při 4 SATA discích v RAID10 dával mdraid znatelně horší výsledky než HP SmartArray s 256 MB cache.
Na druhou stranu u většího pole s 12 SAS disky v RAID50 taky na HP SmartArray, které dává čtení i zápis přes 850 MB/s, se projevovalo dost zvláštní chování na základě těch parametrů direct/sync - čtení bylo normálně pomalejší než zápis, a až s volbou direct se to srovnalo.
dumpe2fs
taky ignorujte, teď koukám že to testujete přímo na /dev/mdX
.
Ta Areca má dva porty, ale jak píšu výše k tomu backplanu jde připojit jen jeden, jestli jsem pochopil dokumentaci správně. Je tam SAS2 expander, takže skrz to asi víc jak 6Gbit neprotlačím i kdybych se zbláznil, ale možná se pletu.
[root@skirrax x86_64]# dd if=/dev/zero of=/dev/md1 bs=1M count=10000 oflag=direct 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB) copied, 30.3286 s, 346 MB/s
[root@skirrax x86_64]# dd if=/dev/zero of=/dev/md1 bs=1M count=10000 oflag=sync 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB) copied, 218 s, 48.1 MB/s
[root@skirrax ~]# cat /proc/mdstat Personalities : [raid1] [raid10] md1 : active raid10 sdl2[11] sdk2[10] sdj2[9] sdi2[8] sdh2[7] sdg2[6] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1] sda2[0] 117166080 blocks super 1.2 512K chunks 2 near-copies [12/12] [UUUUUUUUUUUU]
6Gbit znamená kapacita jedné "SAS Lane"...Specifikace Areca řadiče říká: Up to 6Gb/s transfer rates per SAS port
2 near-copies
Zkuste ještě layout f2 (far 2). Obvykle bývá nejrychlejší.
[root@skirrax x86_64]# cat /proc/mdstat Personalities : [raid1] [raid10] md1 : active raid10 sdl2[11] sdk2[10] sdj2[9] sdi2[8] sdh2[7] sdg2[6] sdf2[5] sde2[4] sdd2[3] sdc2[2] sdb2[1] sda2[0] 117166080 blocks super 1.2 512K chunks 2 far-copies [12/12] [UUUUUUUUUUUU]
[root@skirrax x86_64]# dd if=/dev/zero of=/dev/md1 bs=1M count=10000 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB) copied, 36.5559 s, 287 MB/s
Chystám se na to téma zplichtit blogpost, ale nějak není čas...Tak jen pro úplnost, že už ten můj blogpost na téma NBD tady je.
./hddtest -1 -d /dev/md1
./hddtest -2 -d /dev/md1
./hddtest -1 -w -d /dev/md1
./hddtest -2 -w -d /dev/md1
[root@max ~]# dd if=/dev/zero of=/dev/sda2 bs=1M count=10000 10000+0 records in 10000+0 records out 10485760000 bytes (10 GB) copied, 24.9443 s, 420 MB/s
[root@max ~]# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 15402 MB in 2.00 seconds = 7713.84 MB/sec Timing buffered disk reads: 2516 MB in 3.00 seconds = 838.44 MB/secJe tam vidět mírný nárůst rychlosti sekvenčního zápisu, ale ten bych přikládal právě write-back módu řadiče. Problém tedy bude pravděpodobně v expanderu :/
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.