• Non ci sono risultati.

Sistemi affidabili e/o altamente disponibili

N/A
N/A
Protected

Academic year: 2022

Condividi "Sistemi affidabili e/o altamente disponibili"

Copied!
1
0
0

Testo completo

(1)

Sistemi affidabili e/o altamente disponibili

1. Introduzione

2. Attributi della dependability

3. Applicazioni con requisiti di dependability 4. Descrizione degli impedimenti

5. Strumenti per la dependability (la tolleranza dei guasti)

(parte dei lucidi sono stati gentilmente concessi da Laprie e Kanoun – CNRS Toulose, Francia)

(2)

FAILURES IMPAIRMENTS

FAULTS ERRORS AVAILABILITY

ATTRIBUTES SAFETY

CONFIDENTIALITY INTEGRITY

MAINTAINABILITY RELIABILITY

Property of a computer system such that reliance can justifiably be

placed on the service it delivers

DEPENDABILITY MEANS

FAULT PREVENTION

FAULT REMOVAL FAULT FORECASTING

FAULT TOLERANCE: providing a service implementing the system function in spite of faults

Introduzione

(3)

Error: Reference source not found

Attributi della dependability

Affidabilità

L'affidabilità è una funzione del tempo R(t) definita come la probabilità che il sistema non mostri malfunzionamenti in un

(4)

intervallo temporale a condizione che nessun malfunzionamento esisteva all'inizio dell'intervallo.

Disponibilità

La disponibilità è una funzione del tempo A(t) definita come la probabilità che il sistema non mostri malfunzionamenti nell'istante in cui gli è richiesto di operare.

Si differenzia dall'affidabilità poiché quest'ultima è una misura di corretto funzionamento in un intervallo, mentre la disponibilità è una misura di corretto funzionamento ad un dato istante temporale.

Un sistema può essere altamente disponibile nonostante esso mostri frequenti, ma molto brevi, periodi di malfunzionamento.

(5)

Sicurezza

La sicurezza è la probabilità S(t) che il sistema non mostri malfunzionamenti nell'istante in cui gli è richiesto di operare, oppure che, anche se esso mostra un malfunzionamento, questo non comprometta la sicurezza di persone o impianti relazionati al sistema stesso.

E’ una misura sia della capacità del sistema di funzionare correttamente che della capacità di non provvedere correttamente alle sue funzionalità ma senza generare conseguenze rilevanti.

E' da notare che la sicurezza differisce dall'affidabilità e dalla disponibilità, poiché queste ultime sono misure relative al corretto funzionamento e non includono effetti derivanti da malfunzionamenti.

Performability

La performability è una funzione del tempo P(L,t) definita come la probabilità che il valore della quantità di “servizi” forniti dal sistema fino all’istante t sia almeno pari ad L.

E’ una misura della capacità del sistema di fornire una determinata quantità di lavoro in un intervallo di tempo, anche in presenza di guasti.

(6)

Mantenibilità

La mantenibilità è la probabilità M(t) che il sistema malfunzionante possa essere riportato al suo corretto funzionamento entro il periodo t.

E’ una misura della facilità con la quale un sistema può essere riparato una volta manifestatosi il malfunzionamento.

Essa è strettamente correlata con la disponibilità poiché tanto più è breve l'intervallo di ripristino del corretto funzionamento, tanto più elevata sarà la probabilità di trovare il sistema funzionante ad un dato istante temporale. Per il valore estremo M(0) = 1.0, il sistema in oggetto sarà sempre disponibile.

Collaudabilità

La collaudabilità è semplicemente una misura di quanto un sistema rende facile ad un operatore verificare alcuni suoi attributi.

E' chiaramente legata alla mantenibilità poiché più facilmente è possibile collaudare un sistema malfunzionante per individuare il componente guasto, più breve sarà l'eventuale intervallo di ripristino del corretto funzionamento.

(7)

Applicazioni con requisiti di dependability

Applicazioni di lunga durata

 Applicazioni che devono rimanere attive per intervalli temporali molto lunghi

 Esempi: sistemi di elaborazione per il controllo di sistemi satellitari.

 Requisiti: rimanere operanti senza manifestare malfunzionamenti per periodi di decine di anni con probabilità pari, o addirittura superiore, a 0.95.

Applicazioni critiche

 Applicazioni in cui malfunzionamenti possono avere delle conseguenze gravi sulla sicurezza di persone, dell'ambiente o di impianti.

 Esempi: controllo del volo di aeroplani, applicazioni militari, di processi industriali (p.e. chimici)

 Requisiti: rimanere operanti senza manifestare malfunzionamenti per periodi di ore o giorni con probabilità vicino all’uno.

(8)

Applicazioni poco mantenibili

 Applicazioni in cui le operazioni di manutenzione sono estremamente costose o difficili da apportare.

 Esempi: sistemi di elaborazione in sistemi remoti geograficamente, sistemi di elaborazione e controllo su navicelle spaziali.

 Requisiti: riuscire a rinviare il più possibile la manutenzione garantendo comunque che il sistema funzioni correttamente fino all'istante dell'intervento (se possibile). Durante tale periodo il sistema deve essere in grado di poter gestire il verificarsi di guasti in maniera autonoma.

Applicazioni disponibili

 Applicazioni per le quali gli utenti richiedenti il servizio si aspettano con alta probabilità che il servizio venga realmente fornito all'atto della richiesta.

 Esempi: sistemi di gestione di transazioni bancarie, sistemi per la gestione di servizi anagrafici.

 Requisiti: rendere indisponibili i propri servizi con bassissima probabilità.

(9)

adjudged or hypothesized cause of error(s)

IMPAIRMENTS TO DEPENDABILITY

delivered service deviates from

fulfilling the system function FAILURE

part of system state liable

to lead to failure ERROR

FAULT

FAULT

ACTIVATION (INTERNAL) OR OCCURRENCE (EXTERNAL)

ERROR

PROPAGATION

FAILURE

ERROR : FAULT MANIFESTATION IN SYSTEM

FAILURE : ERROR MANIFESTATION UPON SERVICE

Descrizione degli impedimenti

(10)

FAULT

PROGRAMMER’S ERROR

IMPAIRED INSTRUCTION(S) OR DATA

ERROR

FAILURE PROPAGATION

WHEN DELIVERED SERVICE DEVIATES (VALUE, DELIVERY INSTANT) FROM FUNCTION FULFILLING

ACTIVATION

FAULTY COMPONENT AND INPUTS

FAULT

SHORT-CIRCUIT IN INTEGRATED CIRCUIT

STUCK-AT CONNECTION, FUNCTION MODIFICATION FAILURE

ERROR

FAILURE PROPAGATION

WHEN DELIVERED SERVICE DEVIATES (VALUE, DELIVERY INSTANT) FROM FUNCTION FULFILLING

ACTIVATION

FAULTY COMPONENT AND INPUTS

(11)

OPERATOR ERROR

IMPROPER HUMAN-MACHINE INTERACTION

FAULT

ERROR

WHEN DELIVERED SERVICE DEVIATES (VALUE, DELIVERY INSTANT) FROM FUNCTION FULFILLING

FAILURE PROPAGATION

Error: Reference source not found

Error: Reference source not found

(12)

Physical faults

Human-made faults Phenomenological

cause

Accidental faults

Non-malicious intentional faults Malicious faults

Nature

FAULTS Development faults

Operational faults Phase of creation

or occurrence

Internal faults External faults System boundaries

Permanent faults Temporary faults Persistence

(13)

SYSTEM BOUNDARIES

internal faults: those parts of the system state which, when invoked by the computation activity, will produce an error

external faults: result from system interference or interaction with its physical (electromagnetic perturbations, radiation, temperature, vibration, etc.) or human environment

TEMPORAL PERSISTENCE

permanent faults: presence is not related to pointwise conditions

temporary faults: present for a limited amount of time internal (computation activity)

external (environment) PHENOMENOLOGICAL CAUSES

physical faults: due to adverse physical phenomena human-made faults: result from human imperfections

NATURE

accidental faults: appear or are created fortuitously

intentional faults: created deliberately, with or without a malicious intention

PHASE OF CREATION WITH RESPECT TO THE SYSTEM'S LIFE

operational faults: appear during the system's exploitation development faults: result from imperfections

during the development of the system (from requirement

specification to implementation) or during subsequent modifications the establishment of the procedures for operating or main taining the system

(14)

human-made fault classes

aimed at preserving acceptable performances, at facilitating the system utilization

Intentional, non-malicious, faults

induced by financial considerations

interaction faults: may result from the action of an operator aimed at overcoming an unforeseen situation

deliberately violating an operating procedure without having developed the consciousness of the possibly damaging consequences

realized often they were faults only after an unacceptable system behavior, thus a failure, has occurred

design faults: result generally from tradeoffs

Malicious faults: specific labels design faults: malicious logics

development faults: Trojan horses, logic or timing bombs, trapdoors operational faults: viruses, worms

interaction faults: intrusions

(15)

 Human-made interaction faults

result from operators errors

errors: negative side of human activities

positive side: adaptability  aptitude to address unforecasted situations

Consciousness that most interaction faults have their source in the system design

Growing relative importance

Causes of accidents in commercial flights in the USA Accidents per million take-offs

1970-78 1979-86

Technical defects 1,49 (45%) 0,43 (33%)

Weather conditions 0,82 (25%) 0,33 (26%)

Human errors 1,03 (30%) 0,53 (41%)

Total 3,34 1,29

Error: Reference source not found

(16)

Error: Reference source not found

(17)

System,Technology MTBE for MTFF for MTBE/MTFF all fault classes permanent faults

(h) (h)

PDP-10, ECL 44 800-1600 0,03 - 0,06

CM* LSI-11, NMOS 128 4200 0,03

C.vmp TMR LSI-11, NMOS 97 - 328 4900 0,02 - 0,07

Telettra, TTL 80 - 170 1300 0,06 - 0,13

SUN-2, TTL-MOS 689 6552 0,11

1 Mx37 RAM, MOS 106 1450 0,07

13 stations of CMU Andrew network, 21 stations.years

Number Mean time to manifestations manifestation (h)

Permanent faults 29 6552

Intermitent faults 610 58

Transient faults 446 354

System crashes 298 689

(18)

FAULT PATHOLOGY

 active fault produces error(s)

activation of dormant fault by computation process external fault

 error is latent or detected

error propagation other errors

 failure occurs when error "passes through"

system-user interface

fault as viewed by system containing / components interacting with failed component

component failure

FAULT ERROR FAILURE

FAILURE 

LABELS FAULT, ERROR, FAILURE FAULT THREE CONCEPTS ARE NECESSARY

NUMEROUS SYNONYMS FAULT  BUG, DEFECT

FAILURE  MALFUNCTIONING, BREAKDOWN, (SERVICE) OUTAGE LABEL ASSIGNMENT : USAGE

FAILURE RATE

ERROR DETECTION AND CORRECTION FAULT DIAGNOSIS, FAULT TOLERANCE

Strumenti per la dependability

(19)

Gli obiettivi della dependability possono essere raggiunti tramite:

 la tolleranza dei guasti (Fault Tolerance – F.T.);

 la rimozione dei guasti;

 la previsione dei guasti.

(20)

FAULT TOLERANCE

Error processing: error removal, before failure occurs

Fault treatment: avoiding fault(s) to be activated again

La tolleranza dei guasti (Fault Tolerance)

(21)

Error detection

and recovery Fault masking ERROR PROCESSING

Error recovery Error detection

Backward recovery Forward recovery Compensation Error diagnosis

 

 

systematic application even in error absence Error: Reference source not found

(22)

FAULT TREATEMENT Fault diagnosis

Fault isolation

determination of error causes

removing faulty components from subsequent execution process

system no longer able to deliver same service

Reconfiguration

Modification of system structure, such that non- failed components deliver degraded service

(23)

Error Detection

Forward recovery

Fault Treatment Temporary

physical fault or Design fault

Maintenance Call Permanent

physical fault

Service Continuation

Error Detection

Compensation

Fault Treatment Temporary

physical fault or Design fault

Maintenance Call Permanent

physical fault

Service Continuation Error Detection

Backward recovery

Fault Treatment

Maintenance Call

Temporary physical fault or

Design fault

Permanent physical

fault

Service Continuation

Fault Masking

Compensation

Fault Treatment Temporary

physical fault or Design fault

Maintenance Call Permanent

physical fault Error Detection

Service Continuation

Error detection and Recovery

(24)

REDUNDANCIES

NATURE SYNCHRONIZATION

Action mode

Status of redundant components

Application level (granularity)

Selective (locale) redundancy

Massive (global) redundancy Static

redundancy

Dynamic redundancy

Active (hot) redundancy

Passive (cold) redundancy Semi-active or semi-passive (warm) redundancy

Tight:

synchronous (micro-synchronous) redundancies Weak:

asynchronous (macro-synchronous) redundancies

Error detection and

recovery semi-active, or passive,

dynamic redundancy Error detection and

recovery Active dynamic redundancy

Fault masking Static redundancy

INDEPENDENCY / FAULTS

Replication redundancy

Diversification redundancy

(25)

Tipi di ridondanza

 Hardware (moduli o componenti)

 Software

 Dati

 Temporale

(26)

Ridondanza a livello hardware

 Ridondanza statica o replicazione passiva o mascheramento dei guasti.

 Ridondanza dinamica

 Ridondanza ibrida

(27)

Ridondanza statica

Permette di prevenire che guasti originino errori senza che vi sia alcun intervento esplicito da parte del sistema stesso o di un operatore esterno per quanto riguarda il rivelamento del guasto ed una eventuale riconfigurazione.

Triple Modular Redundancy (TMR)

(28)

In questo tipo di schema, vengono mascherati guasti a livello dei componenti, ma non eventuali guasti a livello del voter, per il quale non vi è alcuna ridondanza.

Se il voter è soggetto a guasto allora il suo valore di output potrebbe essere scorretto ed originare quindi errori e poi malfunzionamenti. Per questo tipo di schema, l'affidabilità dell'intero sistema non può mai essere superiore all'affidabilità del voter. Dato un sistema, ogni singolo componente il cui guasto può dar luogo a malfunzionamento del sistema stesso viene denominato singolo punto di fallimento.

(29)

Una tecnica classica per prevenire che il voter diventi un singolo punto di fallimento è quella di replicarlo.

Fig. Esempio di replicazione di processore, memoria e voter.

Fig. Esempio di voter implementato via software

(30)

N-modular redundancy (NMR)

Una generalizzazione dell'approccio TMR è la cosiddetta ridondanza ad N moduli (N-modular redundancy - NMR), la quale differisce da TMR nel fatto che il componente in oggetto viene replicato N volte, con N possibilmente maggiore di 3. Il vantaggio di utilizzare N > 3 moduli risiede nel fatto che più di un singolo guasto può essere tollerato.

Ad esempio, il voto di maggioranza permette ad un sistema di tipo 5MR di tollerare il guasto di un massimo di due componenti.

Ovviamente lo svantaggio sarà associato al maggiore costo dovuto al più alto numero di copie del modulo per cui si adotta la ridondanza.

(31)

Ridondanza attiva

E' da notare che in questo caso non c'è alcun tentativo di prevenzione affinché guasti non diano origine ad errori ed a malfunzionamenti, ma esistono solo azioni di rimedio per riportare il sistema al corretto funzionamento.

Quindi tale tipo di ridondanza risulterà più appropriata per tutte quelle applicazioni in cui la presenza, se pur temporanea, di errori e malfunzionamenti è accettabile.

Fig. Diagramma a stati per la ridondanza attiva.

(32)

Esempi di ridondanza attiva

Una forma particolare di ridondanza attiva è la cosiddetta riserva fredda, in cui per ogni modulo soggetto a ridondanza esiste una sua copia non attiva, che viene attivata in caso di guasto della copia originale, da cui il nome di riserva fredda. In tal caso, la riconfigurazione ha lo scopo di sostituire la copia originale con la riserva fredda. E' da notare che, durante il periodo di riconfigurazione necessario all'attivazione della riserva, la funzionalità del sistema viene interrotta. Per minimizzare la durata di questo periodo è possibile utilizzare riserve calde, che a differenza di quelle fredde, sono attive contemporaneamente al modulo per cui fungono da ridondanza. Lo svantaggio principale è che queste riserve consumano costantemente energia per rimanere attive, anche quando non forniscono reali servizi.

(33)

Figura 6.2 e 6.3 del manuale di informatica III edizione

(34)

Ridondanza ibrida

Infine, un terzo approccio classico alla ridondanza hardware, denominato ridondanza ibrida, combina le caratteristiche salienti delle due soluzioni precedenti. In particolare, in questa soluzione viene adottata sia una tecnica di mascheramento dei guasti per prevenire gli errori, sia una tecnica di diagnosi dei guasti stessi con relative azioni di riconfigurazione per isolare il componente guasto. In generale la ridondanza ibrida è implementata tramite una combinazione di ridondanza NMR in cui sono presenti anche riserve (fredde o calde). Le riserve subentreranno ad eventuali componenti guasti facenti parte dell' insieme originale di N repliche.

(35)

Implicit, but frequent, assumption in most fault-tolerant distributed systems

Implies self-checking processors

Induced simplifications:

1) Only correct value messages are sent

 minimum number of processors for consensus in presence of t faults: n t+2 2) Error detection: halting detection by interrogating and waiting

3) Resource replication for tolerating t faults ("halts"): t+1

4) Communication network saturation by “babbling” is impossible 5) Network architecture:

Fail-silent processors Protocol hierarchy according to relation

"uses the service of"

Group membership Atomic broadcast Clock synchronisation

Common mechanism:

consensus

Fault assumption

Distributed system: set of processors (processing and/or storage elements) communicating by messages via communication network

Communication network

Processor Processor Processor Processor Processor

Ridondanza attiva nei sistemi distribuiti

(36)

Error: Reference source not found

Propagazione degli errori nei sistemi distribuiti

Peculiarità dei sistemi distribuiti: stato dell’esecuzione distribuito tra vari nodi di elaborazione. Ciò implica che in caso di rivelazione di un guasto gli errori si possono essere estesi anche nei nodi sani.

(37)

Fig. Esempio di propagazione d'errore in sistemi distribuiti.

Effetto-domino: provoca il ripristino dello stato di ciascun nodo al proprio valore iniziale, perdendo quindi tutti i risultati della computazione prodotti fino alla rivelazione dell'errore.

(38)

L'effetto-domino trae origine dal fatto che esistono delle dipendenze tra i checkpoint dei singoli nodi dovute allo scambio di informazione trasportata dai messaggi

Per evitare l’effetto domino è necessario coordinare l’inserzione dei checkpoint

Il coordinamento può essere:

predefinito, dinamico.

Il coordinamento predefinito previene la dipendenza tra i checkpoint

Caratteristiche:

 semplice da implementare,

 numero di checkpoint notevole (molti checkpoint inutili)

Il coordinamento dinamico evita la dipendenza tra i checkpoint cercando di minimizzare il numero di inserzioni.

Caratteristiche:

 implementazione un po’ complicata,

(39)

 overhead variabile.

(40)

Esempio di coordinamento predefinito

Uno dei coordinamenti predefiniti più semplice è quello in cui viene inserito un checkpoint prima dell’esecuzione di ogni primitiva di ricezione. In questo modo nel caso in cui viene annullato un messaggio per un recovery il processo destinatario viene ripristinato nello stato che aveva prima della ricezione dello stesso. In questo modo si minimizza il processamento da annullare in ogni singolo processo interessato ad un recovery e si evita la propagazione del recovery in altri processi non direttamente destinatari del processo che ha iniziato il recovery.

(41)

Esempio di coordinamento dinamico

Un algoritmo distribuito di coordinamento dinamico molto semplice è il seguente: ciascun nodo mantiene una variabile locale denominata timestamp il cui valore iniziale è zero; il valore di questa variabile viene incrementato di uno ogni volta che il nodo decide di prendere un checkpoint; tale valore viene aggiunto come informazione di controllo su ciascun messaggio spedito; quando viene ricevuto un messaggio con informazione di controllo associata ad un valore superiore al timestamp locale del nodo ricevente, allora prima di processare il messaggio viene preso un checkpoint e viene portato il valore del timestamp locale al valore dell'informazione di controllo.

Fig. - Un esempio di coordinamento tramite timestamp.

Il nodo A prende il checkpoint X e porta il suo timestamp al valore 2; questo valore viene poi aggiunto sul messaggio m.

Quando il nodo B riceve m si accorge che il suo timestamp è inferiore a 2; questo induce B a prendere il checkpoint Y prima di processare m. In questo modo non esistono dipendenze tra X ed Y, quindi questi due checkpoint possono essere usati in un recupero all'indietro senza rischio di effetto-domino.

(42)

Ridondanza a livello software

Controllo della consistenza: consiste nell'utilizzo di conoscenza a priori delle caratteristiche dell'informazione che viene gestita dall'applicazione al fine di rivelare eventuali guasti/errori/malfunzionamenti.

Esempio: è noto a priori che il valore di un determinato parametro non possa mai superare una data soglia. Se questo accade allora vi è un problema in qualche componente del sistema.

Controllo di capacità: consiste nel collaudare durante la vita operativa i singoli componenti hardware del sistema per verificarne il corretto funzionamento.

Esempio: test che si effettua sulle ALU. Consiste nel fare eseguire alla ALU specifiche istruzioni (addizioni, moltiplicazioni, operazioni logiche e trasferimento) su particolari dati e si compara poi il risultato con valori noti memorizzati per esempio in una memoria a sola lettura (ROM.

(43)

Le tecniche di ridondanza software considerate utilizzano moduli aggiuntivi per effettuare il controllo di consistenza/capacità. Non permettono di scoprire e possibilmente tollerare guasti che possono coinvolgere il software stesso. A differenza dell'hardware, il software non si "rompe", ciò che invece può accadere è che si manifestino guasti originati da progetti software non corretti oppure anche da errori nel processo di codifica degli algoritmi. Quindi ogni tecnica che cerca di scoprire guasti nel software di fatto cerca di scoprire imperfezioni nel processo di progetto o di codifica.

Design diversity:

 N-self-checking programs;

 N version programming;

 Recovery blocks.

(44)

N self-checking programs – NSCP (N programmi autocontrollanti)

Ci sono N versioni distinte dello stesso software. Ciascuna di esse contenente i propri test di accettazione, i quali non sono altro che azioni di controllo sui risultati prodotti dal programma. Viene poi utilizzato un modulo che implementa una data logica di selezione per prelevare i risultati prodotti da uno dei programmi in cui tutti i test di accettazione hanno avuto esito positivo.

Supponendo, come sia ragionevole, che i possibili guasti in una delle versioni non siano correlati con quelli delle altre, e che gli errori da loro generati siano scoperti tramite i test di accettazione, allora la tecnica NSCP può tollerare fino ad un massino di N-1 guasti.

(45)

N version programming - NVP (programmazione ad N versioni )

In questa tecnica, ciascun modulo software viene progettato e codificato N volte da gruppi di progettisti/programmatori distinti.

Le N versioni vengono poi utilizzate in un classico meccanismo di voto, simile a quello associato alla ridondanza hardware di tipo NMR. L'obiettivo in questo caso è un vero e proprio mascheramento del guasto nel software. Per questo tipo di soluzione esistono due problematiche specifiche. In primo luogo, poiché è statisticamente provato che progettisti/programmatori distinti tendano spesso a fare gli stessi tipi di errori, non vi è mai buona garanzia che due versioni distinte non avranno gli stessi identici guasti. In secondo luogo, le N versioni sono comunque sviluppate a partire dalla stessa specifica, per cui l'approccio NVP non ha la capacità di affrontare il problema delle imperfezioni nella specifica.

(46)

Recovery blocks (blocchi di recupero)

Essa è concettualmente simile alla tecnica delle N riserve fredde nella ridondanza hardware. In particolare, vengono impiegate N versioni distinte di un dato programma ed un solo insieme di test di accettazione. Una delle versioni è denominata primaria, le altre N-1 sono invece delle riserve fredde. La versione primaria rimane attiva fino a quando i test di accettazione non rivelano un errore. Il tal caso essa viene sostituita da una delle versioni secondarie e così via. Assumendo che i test di accettazione abbiano capacità completa di rivelare gli errori e che questi siano indipendenti nelle N versioni, questa tecnica permette di tollerare al più N-1 guasti.

Fig.- Tolleranza dei guasti di tipo software tramite blocchi di recupero.

(47)

EXPERIMENTAL OR THEORETICAL EVALUATIONS

ALL POSITIVE OPERATIONAL REALISATIONS

COMMERCIAL AVIONICS : MASSIVE AND GENERALISED UTILISATION RAILWAY CONTROL AND SIGNALLING : PARTIAL

UTILISATION (ITALY, SINGAPORE, SWEDEN, USA, ...)

DEPENDABILITY EVALUATION

FAULTINDEPENDENCY / SEPARATE DEVELOPMENTS ? FAULT TOLERANCE COVERAGE

Error: Reference source not found

(48)

Ridondanza a livello dei dati

La ridondanza a livello dei dati consiste nell'utilizzo di informazioni aggiuntive associate ai dati stessi al fine di poter garantire la correttezza del loro valore. L'aggiunta di questa informazione da luogo a codifiche dei dati cosiddette ridondanti, che permettono appunto o la rivelazione o addirittura la correzione di dati aventi valore corrotto a causa di un qualche guasto. Ogni codice è caratterizzato da una quantità massima di bit di informazione corrotti che esso riesce a rivelare o a correggere. Un codice in grado di rivelare/correggere al più un unico bit di informazione corrotto viene comunemente denominato codice rivelatore/correttore di singolo errore.

Qui inserire i lucidi sui codici ridondanti e sulla distanza di Hamming fatti a mano

(49)

Codici di parità per sovrapposizione

I codici di parità per sovrapposizione sono codici a rivelazione e a correzione di errore, sono in grado di individuare quale sia il bit eventualmente errato, che quindi può essere corretto tramite una semplice operazione di complementazione del suo valore.

In questi codici, i bit propri del dato in oggetto vengono suddivisi in insiemi, possibilmente non disgiunti, e viene introdotto un bit di parità per ciascun insieme. Ciascuno degli insiemi finali includenti il bit di parità viene denominato insieme di parità. L'idea di base è di associare un dato bit ad una combinazione unica di insiemi sovrapposti, così che la corruzione del suo valore ha un effetto finale univocamente identificabile dal punto di vista della parità all'interno dei vari insiemi.

Fig. - Un esempio di codice di parità per sovrapposizione.

(50)

Architetture RAID

(Redundant Array of Inexpensive Disk)

Legge di Amdhal

dove:

S è lo speed-up effettivo;

f è la frazione di lavoro non dipendente dai dispositivi di I/O;

K è lo speed-up della modalita’ veloce.

L’espressione afferma che lo speed-up effettivo di un sistema di elaborazione è limitato dall’interazione con i dispositivi di I/O.

Per esempio per un’applicazione che utilizza il 20% del suo tempo per operazioni di I/O ed ipotizzando che il sistema processore- memoria di lavoro migliori le prestazioni di 100 volte, dall’espressione si può notare che lo speed-up effettivo è minore di 5.

Caratteristiche di disco a testina mobile (costituito da un singolo disco fisico o da più dischi fisici coassiali):

 tempo di ricerca (seek-time): il tempo per posizionare la testina sulla traccia;

 latenza di rotazione (rotational latency): il tempo di attesa per permettere all'inizio del settore che si vuole leggere di passare sotto la testina;

 tempo di trasferimento (data transfer time): il tempo necessario per leggere i dati dal settore.

K f f S

) 1 (

1

(51)

Cambiando la tecnologia si possono migliorare le prestazioni, comunque essendoci degli organi elettromeccanici, questi non potranno mai andare alla velocità dei componenti elettronici.

Pertanto, si è pensato di migliorare le prestazioni utilizzando contemporaneamente più dischi. Le architetture AID (Arrays of Inexpensive Disks) sono basate su un insieme di dischi indipendenti, organizzati in modo di essere visti dall’utilizzatore come un unico disco logico di grandi dimensioni, con il vantaggio di poter accedere in parallelo ai singoli dischi. Ciò permette alte frequenze di trasferimento (Data Transfer Rates), nel caso di accesso a file di grandi dimensioni, ed elevati tassi di I/O (I/O Rates), nel caso di file di piccole dimensioni. Questo tipo d'architetture permette, tra l’altro, di distribuire in maniera efficiente il carico tra i vari dischi o pile di dischi.

Purtroppo le architetture AID hanno una bassa affidabilità (vedere Sezione "Sistemi affidabili ed in tempo reale"). Infatti, se si indica con MTTFSingolo-disco (Mean Time To Failure) il tempo medio di guasto di un singolo disco, il tempo medio di guasto di un AID è pari a:

Per esempio, se si ha array con 10 dischi, ognuno con un MTTFSingolo-disco pari a 10000 ore, l’MTTFAID è pari a solo 1000 ore, cioè si passa da un’affidabilità di circa un anno ad un’affidabilità di circa un mese.

RAID

array dell dischi di

Numero

MTTFAID MTTFSingolo disco

'

(52)

Nei sistemi RAID i dati di un file sono suddivisi in più frammenti (stripe). Ogni frammento sarà visto da ogni singolo disco come un’unica entità, sarà il gestore a livello superiore che ha l’onere di gestire la frammentazione e la ricostruzione del file di partenza.

Attualmente sono state proposte sei differenti tipi d'architetture, che sono sommariamente descritte di seguito. Nella descrizione si fa riferimento ad un sistema di memorizzazione con una capacità effettiva pari a quella di quattro dischi. Nella figura i dischi sono schematizzati come un cilindro pieno o come un cilindro costituito da una pila di vassoi, dove ogni vassoio rappresenta per semplicità un frammento. Le entità ombrate rappresentano risorse ridondanti.

(53)

Fig. - Architetture RAID

(54)

Livello 0: non contiene alcuna ridondanza, l’organizzazione a stripe permette un accesso in parallelo dell’informazione in più dischi contemporaneamente, permettendo così un miglioramento delle prestazioni rispetto a quelle ottenibili accedendo ad un singolo disco.

Livello 1: conosciuto anche come architettura con dischi duplicati o replicati (mirrored-disks). In quest'architettura l’informazione è duplicata, è quindi memorizzata su un numero doppio di dischi rispetto a quello del livello 0 (a parità di capacità di memorizzazione) ed ogni singola informazione è memorizzata su ogni singolo disco con un codice di rivelazione d'errore (normalmente il codice di parità). Quest'architettura è in grado di tollerare la presenza di un singolo guasto ed ogni operazione di scrittura è fatta su due dischi. In fase di lettura il guasto di un disco è identificato tramite il codice di rivelazione d'errore utilizzato localmente, quindi si potrà utilizzare l’informazione memorizzata sul disco gemello. Quest'informazione è utilizzata anche per aggiornare l’informazione del disco diagnosticato

(55)

guasto. Il guasto verrà diagnosticato come permanente se in un successivo tentativo di lettura si verifica un ulteriore errore; in questo caso è necessario riparare o sostituire il disco guasto. Il vantaggio di quest'architettura è nella semplicità di realizzazione e nel fatto che in assenza di guasti la lettura di un’informazione può essere fatta accedendo alla copia memorizzata sul disco che in quell’istante garantisce il minor tempo di accesso (per esempio perché ha una coda di richieste più piccola o perché ha la testina vicino al settore dove è memorizzata l’informazione).

Livello 2: usa il codice di Hamming, che è un codice a rivelazione e a correzione di errori, per memorizzare le informazioni. Il vantaggio di questa architettura è che il numero di dischi ridondanti non è il doppio di quelli strettamente necessari a memorizzare l’informazione ma è logaritmica al loro numero. I bit ridondanti non solo permettono di rivelare un errore ma ne permettono anche di identificare la posizione. Lo svantaggio risiede nel fatto che, per la lettura e la scrittura, è necessario accedere a tutti i dischi.

(56)

Livello 3: usa un codice “prodotto”, dato dal doppio uso del codice di parità, come il livello 1 usa localmente il codice di parità per rivelare errori, invece per ricostruire l’informazione persa usa un solo disco in cui viene memorizzato il bit di parità dei bit disposti nella stessa posizione nei dischi utili. Il valore di questo è sufficiente a ricostruire quello del bit errato. Anche in questo caso lo svantaggio risiede nel fatto che per la lettura e per la scrittura è necessario accedere a tutti i dischi.

1 1 0 0 0

0 0 1 0 1

0 1 1 0 0

0 0 1 1 0

1 0 1 1

Fig. – Esempio di codice prodotto

(57)

Livello 4: è un miglioramento del livello 3 arrangiando le strisce (stripe) in blocchi piuttosto che in bit. Con questa soluzione la lettura di un blocco necessita dell’accesso del disco dove è memorizzata l’informazione stessa, purtroppo anche in questo caso ad ogni aggiornamento corrisponde un accesso al disco di parità, che diviene così il collo di bottiglia del sistema.

Livello 5: è un miglioramento del livello 4 evitando il collo di bottiglia del disco di parità. In questo caso le informazioni ridondanti sono equamente distribuite su tutti i dischi, in modo che ad ogni singolo aggiornamento non sia coinvolto sempre lo stesso disco. Purtroppo le prestazioni in scrittura sono peggiori di quelle del livello 1, in quanto ogni singola scrittura necessita di quattro singoli accessi a disco: una lettura sul disco in cui è memorizzato la vecchia informazione del blocco, una lettura sul disco in cui è memorizzata la vecchia l’informazione ridondata (queste informazioni insieme ai nuovi dati che devono essere memorizzati servono per identificare quali bit cambiare nel blocco ridondante), un accesso in scrittura sui due dischi in questione per memorizzare il nuovo blocco e l’informazione ridondante. Notare come gli accessi in lettura, come quelli in scrittura possono essere fatti in

(58)

parallelo, così che il tempo di aggiornamento affidabile dell’informazione è pari alla somma di due singoli tempi di accesso, inoltre è da osservare che, se la scrittura segue immediatamente la lettura sullo stesso settore, il secondo accesso non necessita del tempo di ricerca (seek time).

Livello 6: utilizza codici ridondanti che permettono la correzione di due errori, invece che uno solo come nei livelli precedenti. Le prestazioni del livello 6 sono analoghe a quelle del livello 5 anche se il numero di accessi per ogni singolo aggiornamento sui singoli dischi è sei: tre per la lettura e tre per la scrittura, invece delle quattro necessarie al livello 5 (notare come, anche in questo caso, gli accessi in lettura così come quelli in scrittura possono essere fatti in parallelo). Rispetto al livello 5 necessita di un maggior numero di dischi per poter utilizzare codici con maggiore distanza di Hamming.

La scelta tra i differenti livelli è naturalmente un compromesso tra costi, prestazioni ed affidabilità. I prodotti commerciali disponibili oggi sul mercato sono di tipo 1, 5 e 6.

(59)

La ridondanza temporale

Il concetto di base della ridondanza temporale è quello di eseguire un dato calcolo in sequenza più di una volta, e comparare i risultati ottenuti in ciascuna ripetizione per verificare se esista qualche discrepanza. In caso affermativo, la discrepanza è sintomatica di un errore e l'azione classica è quella di ripetere il calcolo tramite una nuova sequenza per verificare se tale discrepanza persiste o meno.

Originariamente la ridondanza temporale è stata impiegata soprattutto per il trattamento degli errori dovuti a guasti transienti, ove, una volta rivelato l'errore, successive ripetizioni dovrebbero rivelare assenza di discrepanza dovuta al fatto che il guasto scompare autonomamente. Comunque questo tipo di ridondanza ha la capacità di far scoprire anche guasti permanenti in componenti hardware a patto che si faccia uso di una minima quantità di hardware aggiuntivo. Lo schema in figura riporta un esempio di ridondanza temporale per la scoperta di guasti permanenti.

(60)

Al tempo T0 viene effettuata una prima computazione, poi al tempo T1 viene effettuata una seconda computazione in cui i dati di ingresso vengono codificati in ingresso al sistema di calcolo e poi decodificati in uscita. I risultati delle due computazioni vengono poi comparati per rivelare eventuali discrepanze. Le funzioni di codifica/decodifica sono selezionate in modo da poter rivelare guasti nel sistema di calcolo, classiche funzioni di decodifica utilizzate sono gli operatori di complementazione e gli shift aritmetici/logici.

Fig. - Ridondanza temporale per guasti permanenti.

(61)

non fault tolerant

Availability: 97,7%

Failure sources

Server 66%

Network 10%

Client 11%

Envir & Oper 13%

Design 60%

Operations 24%

Physical 16%

non fault tolerant

[Japan, 1383 organisations, 1986;

USA, 450 companies, 1993]

Mean time to failure : 6 - 12 weeks Average outage : 1 - 4 hr

Failure sources

Hardware 50%

Software 25%

Communications -

Environment 15%

Operations -

Procedures 10%

fault tolerant

[Tandem Computers, 1990;

Bell Northern Research, 1992]

Mean time to failure:

21 ans [Tandem]

Failure sources Software 65%

Operations -

Procedures 20%

Hardware 8%

Environment 7%

Traditional systems Client-server networks

fault tolerant servers

Availability: 99%

Failure sources

Server 22%

Network 23%

Client 25%

Envir & Oper 30%

[Tandem Computers, 1994]

Statistiche dei guasti su sistemi FT e non

(62)

Dynabus

Dynabus interface CPU Memory I/O Channel

Disk Controller

Disk Controller

Disk Controller Tape Controller

VDU Controller Processor

Module

Processor Module

Processor Module

Tandem NonStop

Architettura del TANDEM

(63)

1985 1987 1989

Systems 2400 6000 9000

Processors 7000 15000 25500

Disks 16000 46000 74000

MTBF System 8 years 20 years 21 years

Tandem experimental data

Period Sep 82 - Jun 85 Jun 85 - Jun 87 Jun 87 - Jun 89

50 100 150 200 250 300 350 400 450

01985 1987 1989

Environment

Total

Maintenance

Operations

Software Hardware MTBF

(years) Error: Reference source not found

Error:

Reference source not found

Error: Reference source not found

Riferimenti

Documenti correlati

✓ se ci sono controinteressati: comunicazione accoglimento senza contestuale trasmissione dei documenti + comunicazione al controinteressato della possibilità attivare gli strumenti

Inoltre, al fine di valutare le prestazioni dei moduli sviluppati, le versioni parallele di encoder e decoder DSCC verranno confrontate con una soluzione

Se la chiamata non e` preceduta dalla dichiarazione dell’intestazione della funzione o dalla sua definizione il compilatore e` obbligato a formulare delle ipotesi sul tipo

U.1.03.02.13 (Servizi di igiene ambientale), V livello 999 (altri servizi ausiliari n.a.c.), VI livello 01 (altri servizi ausiliari n.a.c.) del bilancio di previsione 2019 che

Marco Vitali

Servizi generali e  istituzionali – Sistema 

Prevedere uno stanziamento in rapporto al gettito 2010 pari a: 25 per mille nel 2012, 25 per mille nel 2013, 25 per mille.

3 P10Z Copertura delle principali attività riferite al controllo delle anagrafi animali, della alimentazione degli animali da reddito e della somministrazione di farmaci ai fini