Achtergrond:
Mijn thuisserver/HTPC draait al een paar jaar een RAID1 array van twee 1.5TB WD Green HDDs. Tot een maand ofzo geleden geen probleem. OS draait op aparte HDD. Op gegeven moment werd het systeem - beter gezegd: alles wat met md0 te maken had - zodanig traag dat het onwerkbaar was. Ik had op dat moment geen tijd voor uitgebreide troubleshooting, dus gereboot. Bij reboot melding dat RAID array degraded was...
Volgende avond wel grondig getest: SMART info gaf aan dat beide weliswaar oud waren, maar geen kritieke problemen. Sterker nog, de drive die eruit gedonderd was (/dev/sdc) zag er iets beter uit dan degene die er nog in zat (/dev/sdb). Alle data was nog op beide drives aanwezig en rechtstreeks reads/writes naar de drives ging goed en snel.
Dus bij gebrek aan duidelijk probleem geprobeerd het array weer te syncen. Dat duurde ruim een week, waarbij snelheid ene keer erg hoog was (tientallen MB/s) maar vaak erg laag (tientallen kB/s). Op dat moment vermoedde ik dat het kwam doordat het fs gemount was en gebruikt werd. Maar... na afloop resync zelfde gedrag: soms (heel soms) even bliksemsnel als voorheen. Brak, erg brak dus.
Wederom diag erop losgelaten, wederom niets kunnen vinden. Na flink wat zoekwerk gevonden dat er mogelijk een UDMA bug in de kernel zou kunnen zitten die dit zou veroorzaken. Op dat moment ben ik er niet verder op ingegaan aangezien ik twee weken werk+prive te druk was (conferentie, huis kopen, dat soort dingen). Bovendien draaide ik een oude Xubuntu (non-LTS) install waarvan de support gestopt was, dus sowieso moest ik de boel grondig onder handen nemen.
Vandaag eindelijk tijd gehad om ermee aan de slag te gaan. De oude HDD die voor OS diende heb ik vervangen door een SSD die ik over had. Bovendien heb ik voor de zekerheid beide SATA kabels naar de 1.5TB drives vervangen. Daar heb ik Mint 17 (gebaseerd op Ubuntu 14.04 LTS) op gezet en de array eraan gehangen. sudo mdadm --assemble --scan vond gelijk de array en begon het te syncen. Met 300-400kB/s snelheid
Op dit tempo duurt het zo'n anderhalve maand voor het werkend is. Nu weet ik dat performance van een resync aanzienlijk verhoogd wordt als je bitmapping aanzet, maar dat kun je niet doen terwijl de boel al aan het syncen is - en dat is hij per definitie als je een 'nieuwe' array assembleert. Dus mdadm --grow --bitmap=internal /dev/md0 geeft terecht een fail omdat een sync bezig is.
Volgende poging om de boel te verhogen:
/proc/sys/dev/raid bevat twee speed limits:
speed_limit_max - wat nu op 200000 staat
speed_limit_max - wat nu op 1000 staat
Nu lees ik op verschillende plekken (bijv hier) dat je simpelweg met een echo die limieten kan wijzigen. Maar zodra ik probeer dit te doen: sudo echo 100000 > /proc/sys/dev/raid/speed_limit_min - krijg ik de melding bash: speed_limit_min: Permission denied
Lijk trouwens niet de enige te zijn, maar heb daar geen reden of oplossing/workaround voor gezien.
Syslog toont geen errors waar ik wat mee kan, dit is output sinds ik de array weer activeerde:
Ondertusen zijn we weer een kwartier verder en is dit de status van de resync:
Voor de goede orde: de SATA controller zit in een Intel H61 chipset, dus volgens lspci: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05), en de drives worden inderdaad in AHCI-modus aangestuurd.
Iemand idee hoe ik dit versneld krijg?
Mijn thuisserver/HTPC draait al een paar jaar een RAID1 array van twee 1.5TB WD Green HDDs. Tot een maand ofzo geleden geen probleem. OS draait op aparte HDD. Op gegeven moment werd het systeem - beter gezegd: alles wat met md0 te maken had - zodanig traag dat het onwerkbaar was. Ik had op dat moment geen tijd voor uitgebreide troubleshooting, dus gereboot. Bij reboot melding dat RAID array degraded was...
Volgende avond wel grondig getest: SMART info gaf aan dat beide weliswaar oud waren, maar geen kritieke problemen. Sterker nog, de drive die eruit gedonderd was (/dev/sdc) zag er iets beter uit dan degene die er nog in zat (/dev/sdb). Alle data was nog op beide drives aanwezig en rechtstreeks reads/writes naar de drives ging goed en snel.
Dus bij gebrek aan duidelijk probleem geprobeerd het array weer te syncen. Dat duurde ruim een week, waarbij snelheid ene keer erg hoog was (tientallen MB/s) maar vaak erg laag (tientallen kB/s). Op dat moment vermoedde ik dat het kwam doordat het fs gemount was en gebruikt werd. Maar... na afloop resync zelfde gedrag: soms (heel soms) even bliksemsnel als voorheen. Brak, erg brak dus.
Wederom diag erop losgelaten, wederom niets kunnen vinden. Na flink wat zoekwerk gevonden dat er mogelijk een UDMA bug in de kernel zou kunnen zitten die dit zou veroorzaken. Op dat moment ben ik er niet verder op ingegaan aangezien ik twee weken werk+prive te druk was (conferentie, huis kopen, dat soort dingen). Bovendien draaide ik een oude Xubuntu (non-LTS) install waarvan de support gestopt was, dus sowieso moest ik de boel grondig onder handen nemen.
Vandaag eindelijk tijd gehad om ermee aan de slag te gaan. De oude HDD die voor OS diende heb ik vervangen door een SSD die ik over had. Bovendien heb ik voor de zekerheid beide SATA kabels naar de 1.5TB drives vervangen. Daar heb ik Mint 17 (gebaseerd op Ubuntu 14.04 LTS) op gezet en de array eraan gehangen. sudo mdadm --assemble --scan vond gelijk de array en begon het te syncen. Met 300-400kB/s snelheid

Op dit tempo duurt het zo'n anderhalve maand voor het werkend is. Nu weet ik dat performance van een resync aanzienlijk verhoogd wordt als je bitmapping aanzet, maar dat kun je niet doen terwijl de boel al aan het syncen is - en dat is hij per definitie als je een 'nieuwe' array assembleert. Dus mdadm --grow --bitmap=internal /dev/md0 geeft terecht een fail omdat een sync bezig is.
Volgende poging om de boel te verhogen:
/proc/sys/dev/raid bevat twee speed limits:
speed_limit_max - wat nu op 200000 staat
speed_limit_max - wat nu op 1000 staat
Nu lees ik op verschillende plekken (bijv hier) dat je simpelweg met een echo die limieten kan wijzigen. Maar zodra ik probeer dit te doen: sudo echo 100000 > /proc/sys/dev/raid/speed_limit_min - krijg ik de melding bash: speed_limit_min: Permission denied
Lijk trouwens niet de enige te zijn, maar heb daar geen reden of oplossing/workaround voor gezien.
Syslog toont geen errors waar ik wat mee kan, dit is output sinds ik de array weer activeerde:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Oct 12 23:23:21 Thalia kernel: [ 3804.266591] md: export_rdev(sdc1) Oct 12 23:24:10 Thalia kernel: [ 3853.304037] md: md0 stopped. Oct 12 23:24:10 Thalia kernel: [ 3853.304910] md: bind<sdc1> Oct 12 23:24:10 Thalia kernel: [ 3853.305102] md: bind<sdb1> Oct 12 23:24:10 Thalia kernel: [ 3853.308924] md/raid1:md0: not clean -- starting background reconstruction Oct 12 23:24:10 Thalia kernel: [ 3853.308927] md/raid1:md0: active with 2 out of 2 mirrors Oct 12 23:24:10 Thalia kernel: [ 3853.308942] md0: detected capacity change from 0 to 1500299255808 Oct 12 23:24:10 Thalia kernel: [ 3853.309088] md: resync of RAID array md0 Oct 12 23:24:10 Thalia kernel: [ 3853.309092] md: minimum _guaranteed_ speed: 1000 KB/sec/disk. Oct 12 23:24:10 Thalia kernel: [ 3853.309093] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync. Oct 12 23:24:10 Thalia kernel: [ 3853.309096] md: using 128k window, over a total of 1465135992k. Oct 12 23:24:10 Thalia kernel: [ 3853.309098] md: resuming resync of md0 from checkpoint. Oct 12 23:24:10 Thalia kernel: [ 3853.345872] md0: unknown partition table |
Ondertusen zijn we weer een kwartier verder en is dit de status van de resync:
code:
1
2
3
4
5
6
| Personalities : [raid1] md0 : active raid1 sdb1[2] sdc1[3] 1465135992 blocks super 1.2 [2/2] [UU] [>....................] resync = 0.0% (1458688/1465135992) finish=72863.2min speed=334K/sec unused devices: <none> |
Voor de goede orde: de SATA controller zit in een Intel H61 chipset, dus volgens lspci: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05), en de drives worden inderdaad in AHCI-modus aangestuurd.
Iemand idee hoe ik dit versneld krijg?
[ Voor 21% gewijzigd door dion_b op 13-10-2014 00:31 ]
Oslik blyat! Oslik!