Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » scoala » informatica » linux
Fiabilitatea si integritatea sistemelor de fisiere

Fiabilitatea si integritatea sistemelor de fisiere


Fiabilitatea si integritatea sistemelor de fisiere

Asigurarea fiabilitatii unui sistem de fisiere presupune protejarea sa impotriva distrugerilor accidentale (hardware sau software), iar asigurarea protectiei sale presupune impiedicarea acceselor neatorizate la continutul sau.

Metodele prin care se iau in considerare sectoarele defecte, avand in vedere dispozitivele actuale de stocare a informatiei, sunt:

1) Metoda hardware. Majoritatea controllerelor de disc actuale permit inlocuirea unui sector defect cu un sector de rezerva, de pe aceeasi pista sau cilindru. Exista cel putin un sector de rezerva pe fiecare pista; in plus, mai exista sectoare de rezerva si la nivel de cilindru, astfel incat controllerul poate reface sectoarele automat, fara interventie software.

2) Metoda software. Se integreaza toate blocurile defecte intr-un fisier special; astfel, ele nu vor mai fi alocate (ex. NTFS).



Fiabilitatea sistemelor de fisiere se asigura in general prin crearea de copii de siguranta ale fisierelor. Pentru suporturile de capacitate mare, unde aceasta operatie necesita un timp mare, se pot prevede urmatoarele solutii:

1) Se folosesc doua unitati de disc, dar numai pana la jumatate din capacitate, pe cealalta jumatate se salveaza periodic continutul discului dual (fig. 6.22).

2) Salvarea selectiva, care poate fi efectuata in doua variante:

- se salveaza numai fisierele modificate in perioada scursa de la o operatie anterioara de salvare;

- la sfarsitul fiecarei sesiuni de lucru a unui utilizator se transmite SO-ului lista cu fisiere modificate, care se salveaza automat.

3) Utilizarea de discuri multiple. Un exemplu in acest caz este tehnica mirroring, care utilizeaza doua discuri: scrierea se face pe ambele discuri (pe discul mirror scrierea este intarziata pana cand controllerul devine liber), iar citirea se face de pe un singur disc.

Un alt aspect al fiabilitatii sistemelor de fisiere este legat de defectiunile HW ce pot apare inainte de scrierea pe disc a unor blocuri critice (astfel de blocuri pot cuprinde intrari in catalogul de baza, fisiere directoare, liste de blocuri libere). Acest tip de defectiuni lasa sistemul de fisiere intr-o stare inconsistenta . Problema integritatii sistemelor de fisiere se rezolva adesea prin programe utilitare, lansate in executie la fiecare initializare a SO (de ex. UNIX foloseste fsck , Windows foloseste scandisk, etc). Ïn cele ce urmeaza se prezinta modul de lucru al fsck. Scandisk-ul este diferit in anumite privinte deoarece lucreaza cu un sistem de fisiere diferit, dar principiile generale raman valabile. Toate aceste programe utilitare efectueaza verificari independente asupra diferitelor partitii. Programele respective verifica inconsistenta structurilor de date luand in considerare doua aspecte:

1) Pentru verificarea consistentei blocurilor se construiesc doua tabele paralele de contori, cate unul pentru fiecare bloc de pe disc. Contorii sunt initializati cu 0. In prima tabela, contorul aferent blocului (pe care il vom nota simbolic cu B) va inregistra de cate ori este alocat B unui fisier; in a 2-a tabela contorul aferent blocului B va memora de cate ori este prezent B in lista (sau in bitmap-ul) de blocuri libere.

Apoi programul citeste toate i-nod-urile. Folosind i-nod-ul, utilitarul poate construi o lista cu toate numerele blocurilor utilizate de fisierul corespunzator i-nod-ului (pe baza ei completeaza prima tabela). Utilitarul examineaza apoi lista (sau bitmapul) de blocuri libere si completeaza a doua tabela. Corect este ca cei doi contori corespunzatori aceluiasi bloc (cate unul pe tabela) sa aiba valori complementare, din multimea (0,1}, ca in fig. 6.23 (a). In caz contrar, sunt posibile urmatoarele situatii de inconsistenta:

a) Ambii contori sunt 0. Eroarea este raportata ca 'missing block' (bloc absent) (fig. 6.23 (b)). Blocul respectiv trebuie adaugat in lista de blocuri libere, deoarece astfel de blocuri irosesc inutil spatiu-disc.

b) Contorul de aparitie in lista de blocuri libere este >1 (fig. 6.23 (c)). Aceasta situatie nu poate apare daca se foloseste un bitmap pentru evidenta blocurilor libere. Se reconstruieste lista de blocuri libere.

c) Contorul de aparitie in lista de fisiere este >1, ceea ce inseamna ca acelasi bloc (il notam cu B) apare in mai multe fisiere (presupunem ca in doua fisiere) - fig. 6.23 (d). Aceasta este situatia cea mai defavorabila. Daca se sterge oricare dintre cele doua fisiere in care B figureaza ca alocat, B va fi plasat in lista de blocuri libere, a.i. va figura simultan atat ca bloc alocat cat si ca bloc liber. Daca ambele fisiere se sterg, B va fi plasat de doua ori in lista de blocuri libere.

Utilitarul procedeaza astfel: aloca un bloc liber, il copiaza pe B in acesta si insereaza aceasta copie in unul dintre fisiere. Astfel, pe ansamblu, continutul informational al fisierelor ramane nemodificat (desi cu siguranta unul dintre ele este viciat), dar cel putin se asigura consistenta datelor. Nu se poate insa garanta si corectitudinea informatiei. Eroarea va trebui sa fie raportata pentru ca utilizatorul sa poata evalua erorile.

d) Pentru un bloc ambii contori sunt 1. Blocul trebuie sters din lista de blocuri libere.

2) Pentru verificarea consistentei directoarelor se construiesc tot doua tabele paralele, relative la fisiere (in prima se memoreaza contori pe care ii vom nota cu C1, in a doua contori C2).

Se parcurg recursiv toate directoarele si se incrementeaza C1 aferent fiecarui fisier ori de cate ori se descopera ca fisierul corespunzator este utilizat. Datorita hard-link-urilor, un fisier poate apare in doua sau mai multe directoare. Legaturile simbolice nu se contorizeaza. Se obtine o lista de intrari in catalogul de baza, care este apoi ordonata dupa numarul intrarii in catalogul de baza, obtinandu-se prima tabela. Aceasta lista, prin contori de tipul C1, indica numarul de cataloage care utilizeaza efectiv fiecare fisier.

Se parcurge apoi catalogul de baza si se memoreaza numarul de legaturi pentru fiecare fisier, acesta fiind specificat de campul "contor de utilizare". Acest numar va fi retinut de contori de tipul C2, in a doua tabela.

Sistemul este inconsistent daca:

a) C2>C1. In acest caz, apare urmatoarea eroare: chiar daca se sterg toate legaturile, intrarea din catalogul de baza nu se elibereaza si i-nodul nu va fi sters. Eroarea nu este severa, dar iroseste spatiu-disc cu fisiere care nu sunt in nici un director

b) C2<C1. Aceasta eroare poate fi catastrofala. Un exemplu pentru aceasta situatie este acela cand un fisier este referit din doua directoare (C1=2) dar C2=1. In acest caz la stergerea oricareia dintre cele doua legaturi, C2 se decrementeaza si ajunge in 0; se elibereaza deci intrarea din catalogul de baza, ea putand fi alocata unui fisier nou creat, astfel ca legatura ramasa va referi in mod eronat alt fisier.

Remediul in ambele cazuri este fortarea campului "contor de utilizare" la valoarea contorului C1.

Cele doua operatii (verificarea consistentei blocurilor si respectiv a directoarelor) se realizeaza adesea simultan (sunt integrate) pentru a spori eficienta lucrului (de ex. este necesara o singura inspectare a i-nod-urilor). Mai sunt posibile si alte verificari. De ex., directoarele au un format bine precizat, cu numere de i-nod-uri si nume ASCII. Daca un numar de i-nod este mai mare decate numarul de i-nod-uri de pe disc, inseamna ca directorul este afectat.

Pentru protectia impotriva stergerilor accidentale, multe SGF-uri nu modifica decat un octet in catalogul de baza atunci cand se sterge un fisier. Blocurile alocate ramanand intacte, un program utilitar (ex. Unerase) poate reface fisierele sterse, cu conditia ca blocurile respective sa nu fi fost alocate intre timp, in urma unei operatii de scriere.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.