Tandem un sistema ad alta disponibilità Sauro Menchetti, Andrea Fedeli Esame di Informatica Industriale A.A. 1998/99 Un po’ di storia La Tandem Computers fu fondata nel 1976 per costruire dei sistemi commerciali ad alta disponibilità per l’elaborazione delle transazioni L’approccio che fu seguito per la realizzazione di tali sistemi fu quello della ridondanza dinamica Un po’ di storia I tre maggiori venditori commerciali: AT&T Tandem Stratus Obiettivi del sistema Tandem MTBF di circa 100 anni Modularità Operazioni fail fast Tolleranza ad un singolo guasto Manutenzione online Interfaccia semplificata Praticità, durevolezza L’architettura del sistema da 2 a 16 processori Dynabus Interprocessor Bus sistema basato sullo scambio di messaggi i bus di I/O collegano ogni processore al Dynabus per mezzo di un controller I moduli dei processori Sono i componenti più importanti del sistema. Contengono: IPU, instruction processing unit memoria canale di I/O interfaccia con il Dynabus più sorgenti di alimentazione Il Dynabus Interprocessor Bus due estensioni in fibra ottica ne migliorano le caratteristiche per trasferire i dati, c’è una apposita istruzione di send ogni bus ha 16 linee per i dati ed altre linee per i controlli costituito da due bus indipendenti a cui si accede tramite due controller separati Le periferiche Tutti i percorsi e la maggior parte dei dispositivi sono duplicati sottosistema di comunicazione 6100 dischi: V8, XL8, V80, XL80; tutti mirrored interfaccia IPI 2 del disk drive controller fail fast totally self check Evoluzione dei processori 1976 1981 1983 1986 1987 1989 1991 NonStop I NonStop II TXP, Cyclone VLX CLX 600 CLX 700 CLX 800 Il sistema Tandem Integrity S2 sistema basato su standard industriali sistema operativo costruito su UNIX portabilità delle applicazioni a livello sorgente meccanismo di tolleranza ai guasti implementato in hardware progettato per l’industria delle telecomunicazioni Architettura dell’Integrity S2 suddiviso in CRU unità CPC triplicate due controller TMRC reliable system bus RSB due moduli IOP reliable system bus di I/O RIOB bus NonStop V+ Il software dell’Integrity S2 usa un kernel UNIX esistente per il sistema operativo ripristino e reintegrazione delle CPC e dei TMRC dai core fault, cioè dai guasti che avvengono nel complesso formato dalla memoria e dal processore supporto per le operazioni di I/O a vantaggio dei processi dell’utente Tecniche per la manutenzione Maggiore responsabilità agli utenti Sostituzioni hardware “a caldo” Ricerca dei guasti attraverso: – Test diagnostici online – Sistemi di individuazione dei fallimenti interni Coordinamento remoto del sistema Interfacce diagnostiche specifiche e semplici Il Processore OSP Comunica con tutti i processori del sistema attraverso una apposita interfaccia inclusa in ogni processore: – controlla lo status interno e la memoria; – verifica il funzionamento di tutti i canali I/O. Dispone di una consolle diagnostica che anche in modo remoto permette di: – – – – diagnosticare problemi hardware e software; permette l’esecuzione di istruzioni passo a passo; lanciare routine microdiagnostiche; resettare, ricaricare un processore. Il sistema TDMS Il Tandem Diagnostic Maintenance System sostituì lo OSP Interfaccia verso l’operatore notevolmente semplificata Monitoraggio real-time dei componenti: – Analisi online dei guasti – Chiamata automatica al centro assistenza Tandem (TNSC) Compatibilità con tutti i sistemi precedenti Registro degli eventi segnalati da processori e/o sistema operativo controllato periodicamente dal TDMS Possibilità di test attivo e di analisi basata su sintomi Esempio di funzionamento Il processo di I/O del nastro crea un evento di errore e lo manda al registro degli eventi del TMDS Il TMDS invia un segnale all’analizzatore dei guasti L’analizzatore dei guasti localizza l’errore nel controller e scrive i dati necessari per la sostituzione nel registro Il TMDS telefona al TNSC e comunica i dati del registro Il TNSC telefona al TMDS per verificare l’analisi Il TNSC invia un operatore per sostituire la scheda Il TMDS regista la sostituzione nel registro Sistema Operativo Guardian Permette di sfruttare efficacemente la ridondanza hardware – massimo sfruttamento in caso di corretto funzionamento – minimo danno in caso di malfunzionamento e riparazioni Rende trasparente al programmatore la ridondanza Mantiene una visione globale del sistema – fornisce un mezzo efficiente ed affidabile di comunicazione tra processi – permette ad ogni processore di eseguire indipendentemente i propri compiti Permette l’esecuzione di processi concorrenti e distingue processi privilegiati Gestione dei processori Inizializzazione tramite due vie: – caricamento a freddo – caricamento da un altro processore attraverso lo IPB – lancio automatico dei processi base e di quelli per la gestione dei dispositivi I/O collegati Comunicazione e sincronizzazione tramite opportuni protocolli Possibilità di ricaricare un processore senza alterare il sistema Protocollo I’m Alive Verifica il corretto funzionamento di ciascun processore Ogni processore ogni secondo trasmette un messaggio broadcast “I’m Alive” attraverso lo IPB Ogni due secondi ogni processore verifica di aver ricevuto un messaggio “I’m Alive” da ogni processore Qualora non accada: – richiede un messaggio “I’m Alive” al processore sospetto – se non perviene a maggioranza il sistema decide di sospendere il processore che non ha inviato il messaggio o quello che lo ha richiesto Il processore guasto si spegne e ogni sua comunicazione viene cancellata Sincronizzazione temporale E’ necessario che il clock del sistema sia quanto più possibile sincronizzato per la corretta lettura dei messaggi. Per questo si utilizza un apposito algoritmo [Nellen, 1985, 1986]. Permette lo scambio di pacchetti temporalmente corretti Da modo ad ogni processore di: – sincronizzarsi sul clock medio del sistema; – calcolare il suo errore rispetto alla media per una calibrazione continua. Assicura una scarsa fluttuazione del clock in caso di sostituzione di un processore. Protocollo di aggiornamento globale Poiché ci sono più copie identiche è necessario che gli aggiornamenti siano atomici ovvero: – siano aggiornate tutte le copie o nessuna di queste; – gli aggiornamento siano seriali. Questo risultato si ottiene attraverso un algoritmo apposito: – l’aggiornamento è effettuato da un processo speciale a bassa priorità all’interno del kernel; – viene inviato ad un apposito processo locker che garantisce la serialità; – effettuato l’aggiornamento viene comunicato a tutti i processi interessati. Gestione dei Processi Un processo è contraddistinto da un identificatore unico e possiede: – un vettore di stato; – una memoria privata; – il suo codice eseguibile. Le comunicazioni avvengono tramite gli identificatori Lo scheduling è gestito da un sistema con priorità e con preemption Un meccanismo non permette l’inversione di priorità Attraverso la coppia di processi si garantisce la sicurezza Coppia di Processi Per ogni processo che si vuole lanciare viene creata una coppia: – il processo primario attivo; – il processo backup passivo. Quando si raggiunge uno stato critico si effettua un checkpoint In caso di fallimento del processo primario, il secondario si attiva dall’ultimo checkpoint Coppia di processi: checkpoint I checkpoint sono decisi nei momenti critici del processo – Lo stato del processo attivo viene copiato in quello di backup – Questa operazione viene eseguita dal sistema operativo – In tal modo pur non funzionando il processo backup è in grado di attivarsi correttamente dall’ultimo checkpoint Una coppia di processi è contraddistinta da un unico identificatore: – la tabella degli identificatori sa indirizzare verso il processo primario – in caso di fallimento il sistema operativo aggiorna la tabella e indirizza verso il processo che era di backup Messaggi Guardian è un sistema operativo basato su messaggi Questo rende trasparente alle applicazioni finali: – la ridondanza fisica del sistema; – la localizzazione stessa di un processo o di una risorsa che potrebbe essere anche remoti; – il fallimento di una parte del sistema o di un processo in quanto i messaggi vengo reinstradati verso i componenti funzionanti. Oltre ai messaggi tra processi sono previsti messaggi di controllo Sono implementati in modo efficace sull’IPB in modo che la comunicazione tra processori sia quasi come all’interno di un processore singolo Messaggi tra processi E’ stata impiegata una strategia requestor-server – un processo invia un messaggio ed aspetta la risposta – un altro processo controlla la richiesta e risponde con un risultato Un utilizzo tipico nei messaggi si ha nell’utilizzo di dispositivi periferici: – il processo che vuole leggere/scrivere invia la richiesta al processo di gestione del disco – il processo che gestisce il disco effettua la lettura/scrittura – tutto questo è trasparente per il programmatore il quale non ha interesse a sapere chi effettivamente esegua l’operazione né che questa sia implementata tramite scambio di messaggi Un singolo messaggio può trasmettere fino a 60 KB di dati Tolleranza ai guasti software Molti dei guasti sono dovuti ad errori software, quindi è necessario implementare meccanismi per questo. Il sistema Tandem cerca di preoccuparsi anche di questo. Tandem ha implementato molte istruzioni per verificare la consistenza dei dati durante un’esecuzione: – questo permette di fermare un processo che sta per contaminare il database in tempo; – il meccanismo della coppia di processi garantisce che un guasto software transiente possa essere tollerato in quanto probabilmente nel processo copia non si attiverà di nuovo Gli errori significativi divengono ben visibili in quanto viene lasciata ampia traccia dello status del processore e quindi sono facilmente riparabili. I processi di I/O I processi di I/O sono particolari in quanto ognuno deve essere gestito nei processori a cui è collegato il dispositivo. La coppia di processi viene mandata in esecuzione in ogni processore in grado di farlo. In caso di fallimento di un processore, un bus, un controller o un dispositivo fisico viene reinstradato tutto. Per i processi di I/O si utilizzano come checkpoint l’apertura o la chiusura di un file in modo che il processo backup possa riprendere il controllo da una situazione sicura. Processi I/O: gestione dei dischi Almeno due processori gestiscono i controller: quindi si hanno almeno otto possibili percorsi: – Ogni disco fisico è duplicato (mirroring) – I controller sono duplicati – I percorsi verso i controller sono duplicati I dischi dispongono di una grande cache per aumentare la perfomance I dischi dispongono di un meccanismo di lock per l’accesso ai file attraverso il protocollo 2PL Inoltre i file sono partizionati in modo da permettere un accesso concorrente da parte di più applicazioni – Questo permette anche di distribuire un file a pezzi in più luoghi fisicamente distinti a garanzia della sua integrità Mirroring dei dischi Per ogni disco esiste un disco copia di backup: – si ha maggior sicurezza per il contenuto del disco – è migliore il tempo in lettura in quanto per queste si può utilizzare anche il disco di backup – i tempi di scrittura non sono significativamente differenti da quelli di dischi singoli, anche se leggermente maggiori. Esiste comunque la possibilità per applicazioni non critiche a discrezione del programmatore l’utilizzo unmirrored dei dischi. Transazioni Guardian suddivide le elaborazioni in un’unità atomiche: le transazioni – Queste o sono eseguite per intero o non sono eseguite affatto – Una transazione può essere distribuita su più processi – I risultati parziali sono tenute nella cache del disco: qualora non sia possibile vengono scritti assieme ai dati per gli undo e i redo. – Ogni transazione possiede un identificatore unico Più transazioni possono essere eseguite concorrentemente – Un apposito protocollo permette le letture e le scritture La gestione delle transazioni migliora la sicurezze e la tolleranza ai guasti Networking La struttura di Guardian basata su messaggi e processi si estende alle reti I sistemi Tandem utilizzano una rete proprietaria: Expand – permette il collegamento di fino a 255 nodi e 4080 processori – supporta tutti i principali protocolli – fornisce un valido supporto per la fault-tolerance: per esempio è possibile mantenere attiva una sessione anche se un collegamento si interrompe – può essere utilizzata come punto centrale di reti più ampie o per collegarsi ad altre reti Protezione ai disastri Il sistema Tandem permette di ridurre i tempi per il ripristino di un’unità dove è avvenuto un disastro da qualche ora a pochi minuti Ogni database è mantenuto in due luoghi fisici distinti e questo viene aggiornato secondo una di queste modalità: – 2-Safe. La transazione viene registrata sempre in entrambi i database. Nessuna transazione viene persa – 1-Safe. Vengono trasmesse le transazioni a blocchi. Possono essere perse le ultime transazioni – Eletronic Vaulting. Viene trasmesso il solo registro da cui è possibile ricostruire tutte le transazioni che però non vengono trasmesse. Al riavvio è necessario quindi rieseguire tutto il registro Il sistema dei protezioni ai disastri è trasparente al programmatore Conclusioni L’architettura Tandem si presenta con caratteristiche di alta disponibilità Sono stati ridotti al minimo i singoli punti di fallimento Nella parte hardware tutto viene duplicato e progettato con caratteristiche fail-fast La parte software è composta di un sistema operativo fault-tolerant in grado di sfruttare al meglio la ridondanza hardware L’intera architettura ridondante è mascherata ai programmatori delle applicazioni finali Riferimenti e siti web D.P. Siewiorek, R. S. Swarz “Reliable computer Systems” Digital Press J. Bartlett ed altri “Fault Tolerance in Tandem Computer System” Siti Web di interesse: http://www.tandem.com http://www.compaq.com