Příliš pomalé diskové pole (mdadm)

tark

Příliš pomalé diskové pole (mdadm)
« kdy: 16. 09. 2011, 16:43:43 »
Mám problém s příliš pomalými RAID poli na domácím serveru (postaveném na 740G + Sempron 140 + 5 disků - 4x1,5TB + dočasně 1x2TB, některé mají 512B sektory, některé 4K). Na serveru jsou dvě pole:

1) RAID 1, 10GB, /dev/sd[a-e]1
2) RAID 6, 4.5TB, /dev/sd[a-e]2

Čtení je rychlostně naprosto v pořádku (R1-90MB/s, R6-226MB/s), problém je se zápisem, kdy zápis na R1 dosahuje cca 17MB/s a na R6 38MB/s. Na polích je zapnutá 128MB write-indent bitmapa, nicméně i po jejím zkušebním vypnutí na R6 poli byl zápis úplně stejný.
Zpozoroval jsem, že při zápisu je vytížení jednoho disku na 100%, příp. téměř na 100% a cpu má stav wait cca z 70% (viz screenshot, pomocí nástroje atop). Naprosto netuším, čím může být způsoben takový mizerný výkon, sektory na 4K discích by měly být zarovnány
správně. Důležité je také, že pokud jse disk zatížený na 100% vyhodil z pole, během chvíle začal být na 100% vytížený jiný.

Byla mmj. provedena i zkouška na jiném HW a dopadla úplně stejně. Uvažuju o vyzkoušení na čistém systému z Live CD.

Výkon byl zkoušen příkazy:

ČTENÍ
dd bs=1M count=1024 if=test.test of=/dev/null

ZÁPIS
dd bs=1M count=1024 if=/dev/zero of=test.test conv=fdatasync

ROZDĚLENÍ DISKŮ (jednotky = sektory)

Disk /dev/sda: 1500.3 GB, 1500300828160 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930275055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x76334c22

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    19531775     9764864   fd  Linux raid autodetect
/dev/sda2        19531776  2929688575  1455078400   fd  Linux raid autodetect

-----------------------------------------------------------------------------

Disk /dev/sdb: 2000.4 GB, 2000397852160 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907027055 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd9cd6c6d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    19531775     9764864   fd  Linux raid autodetect
/dev/sdb2        19531776  2929688575  1455078400   fd  Linux raid autodetect

-----------------------------------------------------------------------------

Disk /dev/sdc: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00006673

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    19531775     9764864   fd  Linux raid autodetect
/dev/sdc2        19531776  2929688575  1455078400   fd  Linux raid autodetect

-----------------------------------------------------------------------------

Disk /dev/sdd: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xe27ff672

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    19531775     9764864   fd  Linux raid autodetect
/dev/sdd2        19531776  2929688575  1455078400   fd  Linux raid autodetect

-----------------------------------------------------------------------------

Disk /dev/sde: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xb765ccd8

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1              64    19530608     9765272+  83  Linux
/dev/sde2        19530616  2930277160  1455373272+  83  Linux


Poslední disk má trochu jiné rozdělení, nicméně to by nemělo vadit, stejné problémy se vyskytovaly i v degradované konfiguraci pole (jen nemám otestovanou rychlost). Zajímavé také je, že resync (právě po přidání tohoto posledního disku) běžel ze začátku 1.5-3MB/s a ráno, když jsem se vzbudil, tak jel 35MB/s... Opět nechápu proč.

Dodám ještě, že server není téměř vůbec vytížený, jde vlastně jen o souborový server pro několik domácích uživatelů.


tark

Re: Příliš pomalé diskové pole (mdadm)
« Odpověď #1 kdy: 16. 09. 2011, 16:45:45 »

Trubicoid2

Re: Příliš pomalé diskové pole (mdadm)
« Odpověď #2 kdy: 16. 09. 2011, 19:07:01 »
A neni to tim, ze michas ruzny disky, navic 4k s 512b? Co vykon pole jen s diskama 512b? A proc je raid1 pomalejsi nez raid6?

Trubicoid2

Re: Příliš pomalé diskové pole (mdadm)
« Odpověď #3 kdy: 16. 09. 2011, 19:21:33 »
Jeste koukni na triky, jak jsem psal zde:
http://forum.root.cz/index.php?topic=2559.msg20982#msg20982

tark

Re: Příliš pomalé diskové pole (mdadm)
« Odpověď #4 kdy: 16. 09. 2011, 20:26:16 »
No, napadlo mě to. Ale nakonec jsem zjistil, že tam byly dva vadné disky, které to pole brzdily... s tím jsem fakt nepočítal :)