Mircea MITU wrote:
> On Fri, 2010-08-06 at 11:19 +0300, Petru Ratiu wrote:
>   
>> 2010/8/6 Mircea MITU <[email protected]>:
>>     
>>> On Fri, 2010-08-06 at 09:50 +0300, Petru Ratiu wrote:
>>>       
>>>> Sa rezum pt. cei cu "tl;dr" syndrome: parerea mea e ca e de la lipsa
>>>> de mdadm --fail.
>>>>         
>>> Atunci de ce o partitie se sincroniza intr-un sens si cealalata in
>>> celalalt sens?
>>>
>>> md0: sda1 -> sdb1
>>> md1: sda2 <- sdb2
>>>       
>> Eu zic ca intre T1 si T2 a mai fost un moment T1.9 in care cineva a
>> incercat sa porneasca unul din md-uri cu discul gresit. Dar cum
>> ziceam, daca se dadea fail de la inceput pe device-urile "gresite", nu
>> le mai folosea drept sursa de biti.
>>     
mdadm --examine /dev/cevapartitie

Te uiti dupa :
Version : 00.90.00 ... Diverse versiuni de soft raid. Difera unde e 
tinut hiperblocku :). 0.9 e cel mai comun. Daca scrie altceva ask, ca e 
belea cu asta, unele au hyperblocu la sfarsit, altele la inceput. (m-am 
certat pe aici si am luat-o in gura, pt mine exista doar 0.9 la momentul 
ala)

Checksum : 5b9f8b1e - correct : iti spune in principiu daca ce e pe 
membru e intreg si in concordanta cu checku de pe raid.

Events : 0.15438286 : iti spune care e cea mai noua versiune. Higher is 
better. E un fel de mantisa in doblefloat (nu ma uit in sursa, da cred 
ca asa e tinut, ca are 8 cifre dupa 0, so wild guess) , deci 0.00000001 
e mai nou decat  0.99999999. Asta e rar. Dupa 2 ani de zile pe un server 
stresat abia ajungi la 0.5...-0.6... . Are si aface ca  pe disk se scrie 
cand se curata pagingu', nu chiar la orice operatie :), iar 1 mld de sec 
sunt v-o 32 de ani. Operatiile de scriere se tin intr-un buffer, si se 
fac in bloc. De asta linuxu e mai belibil la faze de gen "reset de la 
buton". daca vrei sa faci un reset rau, macar fa cu Alt-SysRq-s + 
Alt-SysRq-[b,o]. Pt newbyes care nu stiu sa dea un reset hardcore unui 
kernel linux cand li s-a blocat intefata grafica  : 
http://en.wikipedia.org/wiki/Magic_SysRq_key. (Daca nu dau 
ctr-alt-backspace mai intai ;) ). Youp, pti sa omori tot ce merge in 
afara de pid1 (de obicei init), sa dai sync la harduri si sa resetezi 
din 3 combinatii de taste :). Rezultatul poate fi nesatisfacator, dar 
mai "sigur" decat un "buton".

Inainte de a reface un raid tre sa ai grija :
1. discurile sa la adaugi fie in ordinea initiala, nu exista magie care 
sa-ti determine si sa-ti puna automat in ce ordine erau discurile. Poti 
sa determini in ce ordine erau discurile  intr-un hardware raid 
(R-studio de ex), sau software(da mai cu schepsis), dar nu neaparat 
functioneaza. A sti ce aveai acolo inaite de buseala valoreaza mai mult. 
De asta hardurile sunt numerotate :). Un raid 5 in ordinea 1-2-failed 
are cu totul alta consistenta decat atunci cand era defapt 1-failed-3.
2. refa raidu din cat mai multe discuri care au acelasi "Events". La 
misto in disperare poti sa refaci si cu Events apropiate (daca nu ai 
suficiente discuri sa refaci matricea). De ex un raid 5 e preferabil 
sa-l refaci din discu 1, 3 si 4 care au acelasi events cu /dev/sda1 
missing /dev/sdc1 /dev/sdd1 daca sdb1 e in urma. Daca /dev/sdb1 si dev 
/sdd1 sunt in balarii, ia cel mai apropiat events de ailalte doua, si ai 
raid5 din 4,  fa o rugaciune (nu ajuta, da macar faci ceva) si 
reconstruieste din 2 normale si unu apropiat. Ah da, reconstruieste cu 
"--assume-clean", sa nu se apuce de resync (daca recuperezi din nr mi de 
harduri e ok, dar daca ai gresit ordine la 3 din 3 intr-un raid5 de ex e 
belea daca se apuca de resync). Si recupereaza ce se poate :).
3. Daca scoti un disk din raid1 pot lejer sa-l montezi daca stii 
sistemul de fisiere. Daca /dev/sda1 si dev/sdb1 erau raid1, cu ext3 pe 
ele, mount /dev/sda[1,2] -t ext3 /dev/sda1 va ignora tipul partitiei si 
va citi lejer ce e pe disk ca ext3. Poti recupera ce e acolo. Raid1 is easy.

De ce sa nu folosesti raid degradat ca si backup :
1. Daca tu nu esti pe faza, cel care vine sa te ajute isi va pune 
mainile in cap cautand disku lipsa.
2. In caz de dezastru, in functie de algoritm, se va apuca (mai des 
decat ar trebui) sa recupereze datele in functie de hardu' vechi 
luandu-l de bun la reintroducere. In general asta duce la dezastru 
irecuperabil rau de tot. Vezi in extremis faza cu events. E un counter 
finit. Cea mai sigura faza la care o belesti e sa "zero" the hyberblock 
si apoi sa adugi un disk vechi.  banuiesc ca mai sunt alte 100 de metode 
prin care la disperare sa belesti pewla iremediabil.

Probabil Rpetre va poate da si alte exemple elocvente cand crezi ca faci 
ceva ok, si care culmea, mai si merge, dar defapt nu faci decat ca ala 
de vine dupa tine sa-si puna mainile in cap si sa-ti futi sansele ca 
cineva sa te poate ajuta in caz de chestii nasoale (eventual 
transformand chestii seminoasale gen "failed hard" in chestii 
ultranasoale gen "all data overwritten and lost").

Oricum, daca intrebai de logica de sync, --examine e ceea ce cauti. Si 
Events e parametrul care e de baza la sync. Pana mea, te prinzi. Iei 2 
harduri in raid, la plimbi independent prin calcuri, si la resync e 
loterie care e primu dup-aia (care are events mai mare). Preffered 
mirror e doar buna cand vrei sa override Events ca si counter si sa 
setezi un anume disk ca sursa no matter what. ;).Whatever, in general e 
0, adica look after events/newest version. Nu stiu daca ai setat ceva 
explicit in privinta asta.

Poate careva mai destept ca mine se va obosi sa detalieze si restul 
parametrilor de acolo. In ignoranta mea proverbiala, s-ar putea sa fi 
ignorat si alte chestii esentiale.

Ma duc sa gust din niste pui curry :)

Bucataru
>
> Nu exclud asta.
>
> Intrebarea mea ramane totusi: care e logica de sync a matricii raid?
>
>
> _______________________________________________
> RLUG mailing list
> [email protected]
> http://lists.lug.ro/mailman/listinfo/rlug
>   

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui