Académique Documents
Professionnel Documents
Culture Documents
Taisy Silva Weber1 Instituto de Informtica UFRGS Curso de Especializao em Redes e Sistemas Distribudos taisy@inf.ufrgs.br
Resumo
Em um ambiente distribudo suportado por infra-estrutura de rede de computadores, supem-se que o sistema computacional opere apropriadamente, sem interrupo no seu servio e sem perda de dados ou mensagens. No mundo ideal, sistemas computacionais so totalmente confiveis e cem por cento disponveis. No mundo real, confiabilidade e disponibilidade absolutas esto muito longe de serem alcanadas. A confiabilidade e a disponibilidade de equipamentos e servios de computao no so conceitos abstratos e absolutos, mas so atributos de um sistema que podem ser medidos quantitativamente. Vrias tcnicas de projeto podem ser usadas para aumentar o valor dessas medidas, que podem chegar prximas a cem por cento. Mesmo assim, sistemas totalmente infalveis so impossveis, pois falhas so inevitveis. Mas usurios e desenvolvedores no devem se conformar com equipamentos e servios de baixa qualidade, desde que estejam dispostos a arcar com o custo do emprego de tcnicas de tolerncia a falhas. Esse texto conduz o leitor a um viso geral da rea de tolerncia a falhas visando motiv-lo para aprofundamentos e pesquisas posteriores. So explorados tanto aspectos tericos como exemplos prticos. O texto no visa substituir um bom livro texto. Na bibliografia recomendada no final do texto, referncias a tais livros podem ser encontradas.
Palavras-chave: tolerncia a falhas, alta disponibilidade, confiabilidade, medidas, arquiteturas de alta disponibilidade, clusters, sistemas distribudos, consenso, comunicao confivel, replicao, recuperao, injeo de falhas.
Professora orientadora do PPGC, UFRGS, coordenadora da especializao em Redes e Sistemas Distribudos, UFRGS, Coordenadora da comisso de Extenso, do Instituto de Informtica, Diretora Administrativa e de Finanas da Sociedade Brasileira de Computao
ndice
1 Introduo................................................................................................................. 4 1.1 Mercado para produtos tolerantes a falhas ........................................................... 4 1.2 Sobre o texto......................................................................................................... 5 1.3 Defeitos em sistemas de computao ................................................................... 5 1.4 Desafios atuais...................................................................................................... 6 1.5 Tolerncia a falhas ou dependabilidade?.............................................................. 7 Conceitos clssicos ................................................................................................... 8 2.1 Falha, erro e defeito .............................................................................................. 8 2.2 Dependabilidade ................................................................................................. 10 2.3 Nmero de noves ................................................................................................ 13 2.4 Medidas relacionadas a tempo mdio de funcionamento................................... 13 Tcnicas para alcanar dependabilidade................................................................. 16 3.1 Tolerncia a falhas.............................................................................................. 16 3.2 Fases de aplicao das tcnicas de tolerncia a falhas ....................................... 17 3.3 Mascaramento de falhas ..................................................................................... 20 Redundncia ........................................................................................................... 21 4.1 Redundncia de informao ............................................................................... 21 4.2 Redundncia temporal ........................................................................................ 22 4.3 Redundncia de hardware................................................................................... 22 4.4 Redundncia de software.................................................................................... 26 Aplicaes de Sistemas Tolerantes a Falhas .......................................................... 29 5.1 reas de Aplicao............................................................................................. 29 5.2 Sistemas de tempo real ....................................................................................... 30 5.3 Sistemas digitais de telefonia ............................................................................. 30 5.4 Sistemas de transaes ....................................................................................... 31 5.5 Servidores de redes............................................................................................. 32 5.6 Sistemas seguros................................................................................................. 33 Arquiteturas de Sistemas Tolerantes a Falhas ........................................................ 34 6.1 Tolerncia a falhas em microprocessadores ....................................................... 34 6.2 Tolerncia a falhas em sistemas de grande porte ............................................... 36 6.3 Computadores de bordo...................................................................................... 37 6.4 Sistemas Comerciais Tolerantes a Falhas........................................................... 38 Clusters de alta disponibilidade.............................................................................. 41 7.1 Compartilhamento de recursos de armazenamento ............................................ 41 7.2 Exemplos de cluster de alta disponibilidade ...................................................... 42
7.3 Disponibilidade em HA-clusters ........................................................................ 46 8 Tolerncia a Falhas em Sistemas Distribudos ....................................................... 48 8.1 Motivao para tolerncia a falhas em sistemas distribudos............................. 48 8.2 Classificao das tcnicas de tolerncia a falhas em camadas ........................... 49 8.3 Modelos de sistemas distribudos ....................................................................... 49 8.4 Falhas em sistemas distribudos ......................................................................... 50 8.5 Processadores Fail-stop e armazenamento estvel ............................................. 51 8.6 Consenso............................................................................................................. 51 8.7 Protocolos de difuso confivel.......................................................................... 52 8.8 Recuperao em sistemas distribudos ............................................................... 53 8.9 Gerenciamento e manipulao de grupos........................................................... 54 8.10 Replicao de dados ....................................................................................... 55 9 Validao de tcnicas de tolerncia a falhas .......................................................... 57 10 Concluso ............................................................................................................... 59 11 Bibliografia............................................................................................................. 61
1 Introduo
Computadores e seus programas so conhecidos por automatizarem e acelerarem uma srie de tarefas enfadonhas e repetitivas, liberando seus usurios para atividades mais criativas e gratificantes. Na prtica, administradores de sistemas e usurios se vm s voltas com atividades bastante criativas, mas nada gratificantes, de tentar recuperar dados perdidos e de enfrentar equipamento fora do ar devido s mltiplas falhas a que sistemas de computao esto sujeitos. Falhas so inevitveis, mas as conseqncias das falhas, ou seja o colapso do sistema, a interrupo no fornecimento do servio e a perda de dados, podem ser evitadas pelo uso adequado de tcnicas viveis e de fcil compreenso. O conhecimento dessas tcnicas habilita o administrador de sistemas a implementar as mais simples, ou exigir dos fornecedores e desenvolvedores de sistemas solues que as incorporem. Entretanto, as tcnicas que toleram falhas tem um alto custo associado. Pode ser a simples necessidade de backup dos dados, que consome espao de armazenamento e tempo para realizar a cpia, ou a redundncia de equipamentos e espelhamento de discos, que consome recursos de hardware sem contribuir para o aumento do desempenho. O domnio da rea de tolerncia a falhas auxilia administradores e desenvolvedores de sistemas a avaliar a relao custo benefcio para o seu caso especfico e determinar qual a melhor tcnica para seu oramento. Sistemas mais robustos em relao a falhas eram, at recentemente, preocupao apenas de projetistas de sistemas crticos, como avies, sondas espaciais e controles industriais de tempo real, e em certo grau tambm de projetistas de mainframes com exigncias de alta disponibilidade. Com a espantosa popularizao de redes, fornecendo os mais variados servios, aumentou a dependncia tecnolgica de uma grande parcela da populao aos servios oferecidos. Falhas nesses servios podem ser catastrficas para a segurana da populao ou para a imagem e reputao das empresas. Para no ser o elo fraco de uma corrente, o mais simples dos computadores conectado a uma rede deve apresentar um mnimo de confiabilidade. Conhecer os problemas potencialmente provocados por falhas no sistema, as solues que existem para evitar falhas ou recuperar o sistema aps a sua ocorrncia, assim como o custo associado a essas solues, torna-se imprescindvel a todos que pretendem continuar usando computadores, desenvolvendo sistemas ou fornecendo um servio computacional de qualidade aos seus clientes. Para desenvolvedores de software, projetistas de hardware e administradores de rede, o domnio das tcnicas de tolerncia a falhas torna-se essencial na seleo de tecnologias, na especificao de sistemas e na incorporao de novas funcionalidades aos seus projetos.
tambm operaes comerciais de misso crtica (como as suportados por sistemas de transaes e sistemas distribudos). Empresas que dominavam o mercado mundial para aplicaes comerciais tolerantes a falhas at a dcada de 80, Tandem e Stratus, produziam mainframes de altssimo custo para organizaes bancrias e financeiras. A partir da dcada de 90, essas empresas, e tambm SUN, Digital, IBM, Novell e Compac (que incorporou a Tandem) alm de vrias outras, comearam a lanar solues de alta disponibilidade para servidores de rede e clusters, geralmente de alto custo (como por exemplo a srie de servidores SUN Enterprise). Uma famlia de microprocessadores muito popular, Intel 80x86, incorpora desde o i486 uma gama de recursos para tolerncia a falhas, que, se bem utilizados, poderiam aumentar consideravelmente a confiabilidade dos sistemas produzidos com esses microprocessadores. Infelizmente, por razes associadas a custos e tambm principalmente pela carncia de uma cultura em confiabilidade, os recursos desses microprocessadores no so plenamente aproveitados. Com a popularizao de aplicaes na Internet prevista uma grande demanda por equipamentos de alta disponibilidade e software e servios que tolerem em maior ou menor grau a inevitvel ocorrncia de falhas que assola sistemas computacionais.
computadores atuam ativa e continuamente. fcil imaginar que defeitos nesses sistemas podem levar a grandes catstrofes. Desde os primeiros computadores, notvel como os componentes de hardware cresceram em confiabilidade. Dos primeiros computadores a vlvula, que queimavam e sobreaqueciam rotineiramente, eram extremamente sensveis umidade dos nossos trpicos e se soltavam dos soquetes a qualquer trepidao, at a robustez dos notebooks modernos, um acelerado caminho tecnolgico foi percorrido. Entretanto, o software e os procedimentos de projeto esto se tornando cada vez mais complexos e apresentando cada vez mais problemas. S a confiabilidade dos componentes de hardware no garante mais a qualidade e segurana desejada aos sistemas de computao. Como exemplo recente desses problemas pode ser citada a bem conhecida falha de projeto na unidade de ponto flutuante do Pentium, que prejudicou seu lanamento comercial. Nem todo mundo sabe entretanto que falhas de projeto so comuns no lanamento de qualquer processador e muitos bugs em microprocessadores de uso geral sequer foram ainda descobertos. Alguns defeitos relatados na literatura [Lapr98] valem a pena ser mencionados: na guerra do Golfo em fevereiro de 1991 foram noticiados vrios relatos de falhas em msseis. Em novembro de 1992 houve um colapso no sistema de comunicao do servio de ambulncias em Londres. Em junho de 1993, durante dois dias, no foi autorizada nenhuma operao de carto de crdito em toda a Frana. Vrias misses da Nasa a Marte terminaram em fracasso total ou parcial. Todos esses defeitos foram investigados e suas causas determinadas, mas no se tem garantia que algo semelhante no possa voltar a ocorrer a qualquer momento.
baixo consumo de potncia, sem recorrer a tcnicas usuais de replicao de componentes que aumentam peso e volume? Finalmente, como conciliar alta confiabilidade e alta disponibilidade com as crescentes demandas por alto desempenho? Todos esses desafios ainda permanecem sem uma soluo definitiva.
2 Conceitos clssicos
Sendo a computao uma tecnologia recente, muitos termos e conceitos no esto ainda consolidados e nem so amplamente aceitos. Vrios grupos usam os mesmos termos para conceitos distintos ou ento termos diferentes para designar a mesma propriedade ou conceito. Muitos autores nacionais ou estrangeiros tem se ocupado da nomenclatura e conceitos bsicos da rea. No SCTF e no WTF, painis e discusses tem sido conduzidos tentando uma nomenclatura comum no territrio nacional e at mesmo uma traduo homognea dos termos usados. Como o grupo de pesquisadores est em expanso, a cada trabalho de um novo autor novos termos conflitantes so introduzidos. No tenho a pretenso de estabelecer meus termos e minhas tradues como padro da rea. A minha inteno que o leitor entenda os conceitos relacionados aos termos e consiga identificar esses conceitos em contextos diferentes, com termos diferentes. Os conceitos e termos apresentados aqui so os usados por grande parte da comunidade nacional [Web90] e foram derivados dos trabalhos de Laprie [Lapr85] e Anderson e Lee [AnLe81].
Na Figura 1 mostrada uma simplificao, sugerida por Barry W. Johnson [Prad96], e tambm adotada nesse texto, para os conceitos de falha, erro e defeito. Falhas esto associadas ao universo fsico, erros ao universo da informao e defeitos ao universo do usurio.
defeito
desvio da especificao
Figura 1: Modelo de 3 universos: falha, erro e defeito Por exemplo: um chip de memria, que apresenta uma falha do tipo grudado-em-zero (stuck-at-zero) em um de seus bits (falha no universo fsico), pode provocar uma interpretao errada da informao armazenada em uma estrutura de dados (erro no universo da informao) e como resultado o sistema pode negar autorizao de embarque para todos os passageiros de um vo (defeito no universo do usurio). interessante observar que uma falha no necessariamente leva a um erro (aquela poro da memria pode nunca ser usada) e um erro no necessariamente conduz a um defeito (no exemplo, a informao de vo lotado poderia eventualmente ser obtida a partir de outros dados redundantes da estrutura). 2.1.2 Latncia
Define-se latncia de falha como o perodo de tempo desde a ocorrncia da falha at a manifestao do erro devido quela falha. Define-se latncia de erro como o perodo de tempo desde a ocorrncia do erro at a manifestao do defeito devido aquele erro. Baseando-se no modelo de 3 universos, o tempo total desde a ocorrncia da falha at o aparecimento do defeito a soma da latncia de falhas e da latncia de erro. 2.1.3 Classificao de falhas
Existem vrias classificaes para falhas na literatura ([AnLe81], [Lapr85], [Web90], [Prad96]). As falhas aparecem geralmente classificadas em falhas fsicas, aquelas de que padecem os componentes, e falhas humanas. Falhas humanas compreendem falhas de projeto e falhas de interao. As principais causas de falhas so problemas de especificao, problemas de implementao, componentes defeituosos, imperfeies de manufatura, fadiga dos componentes fsicos, alm de distrbios externos como radiao, interferncia eletromagntica, variaes ambientais (temperatura, presso, umidade) e tambm problemas de operao. Alm da causa, para definir uma falha considera-se ainda: Natureza: falha de hardware, falha de software, de projeto, de operao, ... Durao ou persistncia: permanente ou temporria (intermitente ou transitria)
Extenso: local a um mdulo, global Valor: determinado ou indeterminado no tempo Vem crescendo a ocorrncia daquelas falhas provocadas por interao humana maliciosa, ou seja, por aquelas aes que visam propositadamente provocar danos aos sistemas. Essas falhas e suas conseqncias so tratados por tcnicas de segurana computacional (security) e no por tcnicas de tolerncia a falhas. Deve ser considerado, entretanto, que um sistema tolerante a falhas deve ser tambm seguro a intruses e aes maliciosas. Falhas de software e tambm de projeto so consideradas atualmente o mais grave problema em computao crtica. Sistemas crticos, tradicionalmente, so construdos de forma a suportar falhas fsicas. Assim compreensvel que falhas no tratadas, e no previstas, sejam as que mais aborream, pois possuem uma grande potencial de comprometer a confiabilidade e disponibilidade do sistema. Um exame de estatsticas disponveis [Lapr98] confirma essas consideraes (Tabela 1). Sistemas tradicionais No tolerantes a falhas MTTF: 6 a 12 semanas Indisponibilidade aps defeito: 1 a 4 horas Defeitos: hardware software comunicao/ambiente operaes 50% 25% 15% 10% Tolerantes a falhas MTTF: 21 anos (Tandem) Defeitos: software operaes hardware ambiente Redes cliente-servidor (no tolerantes a falhas) Disponibilidade mdia: 98% Defeitos: projeto operaes fsicos
65% 10% 8% 7%
Tabela 1 - Causas usuais de defeitos em sistemas de computao (MTTF - Mean time to failure)
2.2 Dependabilidade
O objetivo de tolerncia a falhas alcanar dependabilidade. O termo dependabilidade uma traduo literal do termo ingls dependability, que indica a qualidade do servio fornecido por um dado sistema e a confiana depositada no servio fornecido. Tolerncia a falhas e dependabilidade no so propriedades de um sistema a que se possa atribuir diretamente valores numricos. Mas os todos atributos da dependabilidade correspondem a medidas numricas. Principais atributos de dependabilidade [Prad96] so confiabilidade, disponibilidade, segurana de funcionamento (safety), segurana (security), mantenabilidade, testabilidade e comprometimento do desempenho (performability). Um resumo dos principais atributos mostrado na Tabela 2.
10
Atributo
Significado
Dependabilidade qualidade do servio fornecido por um dado sistema (dependability) Confiabilidade (reliability) Disponibilidade (availability) Segurana (safety) Segurana (security) capacidade de atender a especificao, dentro de condies definidas, durante certo perodo de funcionamento e condicionado a estar operacional no incio do perodo probabilidade do sistema estar operacional num instante de tempo determinado; alternncia de perodos de funcionamento e reparo probabilidade do sistema ou estar operacional e executar sua funo corretamente ou descontinuar suas funes de forma a no provocar dano a outros sistema ou pessoas que dele dependam proteo contra falhas maliciosas, visando privacidade, autenticidade, integridade e irrepudiabilidade dos dados Tabela 2 Resumo dos atributos de dependabilidade
2.2.1
Confiabilidade
A confiabilidade R(t) a capacidade de atender a especificao, dentro de condies definidas, durante certo perodo de funcionamento e condicionado a estar operacional no incio do perodo. A definio acima implica algumas condies essenciais, muitas vezes esquecidas: especificao: sem uma especificao do sistema, no possvel determinar se o sistema est operando conforme esperado ou no, quando mais formal e completa a especificao, mais fcil estabelecer essa condio. No possvel estabelecer se um sistema sem especificao confivel ou no. condies definidas: as condies de funcionamento do sistema devem ser bem definidas. Um exemplo simples so as condies ambientais de temperatura e umidade. Outro exemplo so os dados ou estmulos de entrada que o sistema deve processar. perodo de funcionamento: o tempo de misso deve ser conhecido. O tempo de misso de uma viagem espacial diferente do tempo de misso de um vo comercial domstico. Um sistema pode ser altamente confivel para 12 horas de operao e depois necessitar de um longo perodo de repouso e reparo. estado operacional no incio do perodo: no possvel falar em confiabilidade de sistemas que j partem operando com defeitos. Confiabilidade a medida mais usada em sistemas crticos, ou seja nos seguintes tipos de sistemas: sistemas em que mesmo curtos perodos de operao incorreta so inaceitveis, sistemas em que reparo impossvel. Exemplos j mencionados de sistemas confiveis so aviao e explorao espacial.
11
Confiabilidade uma medida de probabilidade, pois a ocorrncia de falhas um fenmeno aleatrio. Confiabilidade no pode ser confundida com disponibilidade. Um sistema pode ser de alta confiabilidade e de baixa disponibilidade. Um exemplo seria um avio que precisa de reparos e manuteno nos intervalos de vo. 2.2.2 Disponibilidade
Assim como a confiabilidade, a disponibilidade uma medida de probabilidade. Disponibilidade a probabilidade do sistema estar operacional num instante de tempo determinado. Disponibilidade o atributo mais usado em sistemas de misso crtica. Sistemas de consulta de base de dados on-line, servidores de rede, servidores de pginas web, so alguns exemplos de sistemas onde alta disponibilidade requerida. Disponibilidade no pode ser confundida com confiabilidade. Um sistema pode ser altamente disponvel mesmo apresentando perodos de inoperabilidade, quando est sendo reparado, desde que esses perodos sejam curtos e no comprometam a qualidade do servio (Figura 2). Disponibilidade est muito relacionada com o tempo de reparo do sistema. Diminuir o tempo de reparo resulta em um aumento de disponibilidade. tempo entre 2 defeitos t0 funcionamento funcionamento funcionamento t
reparo
reparo
Figura 2: Alternncia de perodos de funcionamento e reparo Apesar de disponibilidade e confiabilidade representarem atributos e corresponderem a medidas diferentes, usurios no geral gostariam de ter sistemas com as duas caractersticas. Disponibilidade e confiabilidade no so excludentes, mas as tcnicas para implementar uma e outra podem ser bem diferentes. 2.2.3 Segurana de funcionamento
Segurana (safety) a probabilidade do sistema ou estar operacional, e executar sua funo corretamente, ou descontinuar suas funes de forma a no provocar dano a outros sistemas ou pessoas que dele dependam. Segurana a medida da capacidade do sistema de se comportar de forma livre de falhas (fail-safe). Um exemplo seria um sistema de transporte ferrovirio onde os controles de um trem providenciam sua desacelerao e parada automtica quando no mais conseguirem garantir o seu funcionamento correto. Em um sistema fail-safe, ou a sada correta ou o sistema levado a um estado seguro.
12
2.2.4
Outros atributos
Outras atributos importantes de um sistema so: comprometimento do desempenho (performability), mantenabilidade e testabilidade. Todas essas medidas so igualmente representadas por uma probabilidade. Comprometimento do desempenho (performability) est relacionada queda de desempenho provocado por falhas, onde o sistema continua a operar, mas degradado em desempenho. Mantenabilidade significa a facilidade de realizar a manuteno do sistema, ou seja, a probabilidade que um sistema com defeitos seja restaurado a um estado operacional dentro de um perodo determinado. Restaurao envolve a localizao do problema, o reparo fsico e a colocao em operao. Finalmente testabilidade a capacidade de testar certos atributos internos ao sistema ou facilidade de realizar certos testes. Quanto maior a testabilidade, melhor a mantenabilidade, e por conseqncia menor o tempo que o sistema no estar disponvel devido a reparos.
13
Significado nmero esperado de defeitos em um dado perodo de tempo; assumido um valor constante durante o tempo de vida til do componente. tempo esperado at a primeira ocorrncia de defeito tempo mdio para reparo do sistema tempo mdio entre as defeitos do sistema
MTTF - mean time to failure MTTR - mean time to repair MTBF - mean time between failure
Tabela 3- Medidas de confiabilidade A taxa de defeitos de um componente dada por defeitos por unidade de tempo e varia com o tempo de vida do componente. Uma representao usual para a taxa de defeitos de componentes de hardware dada pela curva da banheira. Na Figura 3 podem se distinguir 3 fases: mortalidade infantil: componentes fracos e mal fabricados vida til: taxa de defeitos constante envelhecimento: taxa de defeitos crescente Os componentes de hardware s apresentam taxa de defeitos constante durante um perodo de tempo chamado de vida til, que segue uma fase com taxa de defeitos decrescente chamada de mortalidade infantil. Para acelerar a fase de mortalidade infantil, os fabricantes recorrem a tcnicas de burn-in, onde efetuada a remoo de componentes fracos pela colocao dos componentes em operao acelerada antes de coloc-los no mercado ou no produto final.
tempo Figura 3: Curva da banheira questionvel se a curva da banheira pode ser aplicada tambm para componentes de software. Pode ser observado, no entanto, que os componentes de software tambm apresentam uma fase de mortalidade infantil ou taxa de erros alta no incio da fase de testes, que decresce rapidamente at a entrada em operao do software. A partir desse
14
momento, o software apresenta um taxa de erros constante at que, eventualmente, precise sofrer alguma alterao ou sua plataforma de hardware se torne obsoleta. Nesse momento, a taxa de erros volta a crescer. Intencionalmente mencionamos taxa de erros para software e no defeitos, porque erro o termo usualmente empregado quando se trata de programas incorretos.
15
16
mascaramento ou deteco, localizao e reconfigurao Na primeira classe, mascaramento, falhas no se manifestam como erros, pois so mascaradas na origem. A primeira classe geralmente emprega mais redundncia que a segunda e, por no envolver os tempos gastos para as tarefas de deteco, localizao e reconfigurao, a preferida para sistemas de tempo real crticos.
17
3.2.1
A primeira fase de Anderson a de deteco de um erro. Uma falha primeiro se manifesta como um erro, para ento ser detectada por alguns dos mecanismos listados na Tabela 5. Antes da sua manifestao como erro, a falha est latente e no pode ser detectada. Eventualmente a falha pode permanecer no sistema durante toda a sua vida til sem nunca se manifestar, ou seja, sem nunca levar o sistema a um estado errneo. Um exemplo de mecanismo de deteco o esquema de duplicao e comparao (Figura 4). Duas peas idnticas de hardware realizam a mesma computao sobre os mesmos dados de entrada e comparam os resultados na sada. Havendo desacordo assinalado erro. 2 mdulos idnticos de hardware resultado
erro
COMPARADOR
3.2.2
Devido a latncia da falha, aps a ocorrncia da falha at o erro ser detectado, pode ter ocorrido espalhamento de dados invlidos. O confinamento estabelece limites para a propagao do dano, mas depende de decises de projeto; os sistemas por sua natureza no provm confinamento. Durante o projeto devem ser previstas e implementadas restries ao fluxo de informaes para evitar fluxos acidentais e estabelecer interfaces de verificao para deteco de erros. 3.2.3 A terceira fase: recuperao
A recuperao de erros ocorre aps a deteco e envolve a troca do estado atual incorreto para um estado livre de falhas.
18
Definio
Caractersticas
Implementao
conduo a novo estado eficiente, mas danos especfica a cada ainda no ocorrido desde a devem ser previstos sistema ltima manifestao de erro acuradamente alto custo, mas de aplicao genrica pontos de recuperao (checkpoints), pistas de auditoria, ...
Tabela 6 - Tcnicas de recuperao A recuperao pode ser de duas formas (Tabela 6): tcnicas de recuperao por retorno (backward error recovery) e tcnicas de recuperao por avano (forward error recovery). Os dois tipos podem ser visualizados na Figura 5. A recuperao simples para um sistema com um nico processo, mas complexa em processamento distribudo [Jans97]. A recuperao nesses sistemas, usualmente de retorno, pode provocar efeito domin. Ao desfazer a computao, um processo deixa algumas mensagens rfs na rede. Processos que receberam e incorporaram essas mensagens devem, por sua vez, desfazer tambm a computao realizada, provocando que outros processos, que receberam suas mensagens, tambm tenham que desfazer suas computaes. O efeito pode atingir todos os processos de um sistema e provocar o retorno ao incio do processamento. Uma soluo para esse problema impor restries a comunicao entre os processos. Tcnicas de recuperao por retorno no so adequadas a sistemas de tempo real. Nesses sistemas deve ser usada recuperao por avano. ponto de recuperao P rollback falha
3.2.4
19
localizar a origem do erro (falha), localizar a falha de forma precisa, reparar a falha, recuperar o restante do sistema. Nessa fase geralmente considerada a hiptese de falha nica, ou seja, uma nica falha ocorrendo a cada vez. A localizao da falha realizada em duas etapas: localizao grosseira e rpida (aplicada sobre um mdulo ou subsistema) e localizao fina, mais demorada, onde o componente falho determinado. Para os dois tipos de localizao usado diagnstico. O diagnstico um teste com comparao dos resultados gerados com os resultados previstos. Pode ser conduzido no sistema de forma manual ou automtica: diagnstico manual - executado por um operador local ou remoto, diagnstico automtico - executado pelos componentes livres de falha do sistema. Aps a localizao, a falha reparada atravs da remoo do componente danificado. Tambm o reparo pode ser manual ou automtico. O reparo automtico pode envolver: degradao gradual, ou seja, uma reconfigurao para operao com menor nmero de componentes, ou substituio imediata por outro componente disponvel no sistema. Substituio automtica usada em sistemas com longo perodo de misso sem possibilidade de reparo manual, como por exemplo em sondas espaciais e satlites.
20
4 Redundncia
Redundncia a palavra mgica em tolerncia a falhas. Redundncia para aumento de confiabilidade quase to antiga como a histria dos computadores ([Crev56], [VonN56]). Todas as tcnicas de tolerncia a falhas envolvem alguma forma de redundncia. Redundncia est to intimamente relacionada a tolerncia a falhas que, na indstria nacional, o termo usado para designar um sistema tolerante a falhas sistema redundante. A aplicao de redundncia para implementar tcnicas de tolerncia a falhas pode aparecer de vrias formas: redundncia de informao redundncia temporal redundncia de hardware redundncia de software Essas tcnicas de redundncia so apresentadas em mais detalhes nas prximas sees. Todas essas formas de redundncia, de hardware, de software, temporal e de informao, tem algum impacto no sistema, seja no custo, no desempenho, na rea (tamanho, peso), ou na potncia consumida. Assim, apesar de ser a soluo "mgica" para tolerncia a falhas, o uso de redundncia em qualquer projeto deve ser bem ponderada. Redundncia tanto pode servir para deteco de falhas como para mascaramento de falhas. O grau de redundncia em cada caso diferente. Para mascarar falhas so necessrios mais componentes do que para detectar falhas. Por exemplo, para detectar falhas em um microprocessador, muitas vezes usado outro microprocessador idntico, sincronizado ao primeiro, alm de um comparador de sinais na sada de ambos (duplicao e comparao). Qualquer diferena na comparao indica que o par de microprocessadores est em desacordo, e que portanto um dos dois est danificado (ou sofreu uma falha temporria). Entretanto est falha no pode ser mascarada. O resultado da comparao no indica quais as sadas so as corretas.
21
Mascaramento usando redundncia de informao provida por cdigos de correo de erros, como ECC (error correction code). Cdigos de correo de erros esto sendo exaustivamente usados em memrias e em transferncia entre memrias e processadores. Exemplos de ECC so os cdigos de Hamming, uma combinao de bits de paridade que permite tanto deteco como correo. Como a codificao da informao implica no aumento do nmero de bits, e os bits adicionais no aumentam a capacidade de representao de dados do cdigo, fcil perceber a razo da codificao tambm ser considerada uma forma de redundncia.
deteco, localizao substituio de mdulos, usada e recuperao em aplicaes de longa vida combinao de ativa e passiva usada para garantir mascaramento e longa vida; geralmente de alto custo
Tabela 8 - Redundncia de hardware Os 3 tipos bsicos de redundncia de hardware so apresentados nos prximos itens.
22
4.3.1
Na redundncia de hardware passiva os elementos redundantes so usados para mascarar falhas. Todos os elementos executam a mesma tarefa e o resultado determinado por votao. Exemplos so TMR (triple modular redundancy) e NMR (redundncia modular com n mdulos). TMR, redundncia modular tripla, uma das tcnicas mais conhecidas de tolerncia a falhas. TMR mascara falhas em um componente de hardware triplicando o componente e votando entre as sadas para determinao do resultado (Figura 6). A votao pode ser por maioria (2 em 1) ou votao por seleo do valor mdio [LyVa62]. O votador realiza uma funo simples, cuja correo fcil de verificar. interessante observar que o votador no tem a funo de determinar qual o mdulo de hardware discorda da maioria. Se essa funo for necessria no sistema, ela deve ser realizada por um detector de falhas. Apesar de simples, o votador, por estar em srie com os mdulos de hardware e ter a responsabilidade de fornecer o resultado, o ponto crtico de falhas no esquema TMR. Se o votador apresentar baixa confiabilidade, todo o esquema vai ser frgil, to frgil como o votador. ponto crtico de falha (single point of failure )
3 mdulos de hardware
VOTADOR
resultado
Figura 6: TMR Solues para contornar a fragilidade do votador so: Construir o votador com componentes de alta confiabilidade. Triplicar o votador. Realizar a votao por software. A Figura 7 mostra um esquema com votador triplicado. Os 3 resultados gerados podem, nesse caso, ser levados aos prximos 3 mdulos de hardware do sistema.
23
Deve ser observado que a redundncia aumenta o nmero de componentes do sistema. Quando maior o nmero de componentes, maior a possibilidade de falha.
VOTADOR
resultados
VOTADOR
VOTADOR
3 mdulos de hardware
votador triplicado
Figura 7: TMR com votador triplicado TMR apresenta uma confiabilidade maior que um sistema de um nico componente at a ocorrncia da primeira falha permanente (Figura 8). Depois disso, perde a capacidade de mascarar falhas e vai apresentar uma confiabilidade menor que um sistema de um nico componente. Com o tempo, quando aumenta a probabilidade de componentes falharem (ou seja aumenta a taxa de defeitos) TMR apresenta uma confiabilidade pior do que um sistema no redundante. R(t) TMR
no redundante
durao da misso Figura 8: Confiabilidade de TMR TMR ideal ento para perodos no muito longos de misso. Suporta uma falha permanente apenas e ideal para falhas temporrias, uma de cada vez.
24
Redundncia modular mltipla, NMR, a generalizao do conceito de TMR. Ou seja, TMR um caso especial de NMR. O computador de bordo do Space Shuttle um exemplo de NMR, com n igual a 4 e votao por software. 4.3.2 Redundncia dinmica
Na redundncia dinmica ou ativa, tolerncia a falhas provida pelo emprego das tcnicas de deteco, localizao e recuperao (Figura 9). A redundncia empregada neste caso no prov mascaramento. testes e diagnsticos
deteco
localizao
reconfigurao
duplicao e comparao
Redundncia dinmica usada em aplicaes que suportam permanecer em um estado errneo durante um curto perodo de tempo, tempo esse necessrio para a deteco do erro e recuperao para um estado livre de falhas. Geralmente prefervel defeitos temporrios do que suportar o custo de grande quantidade de redundncia necessria para o mascaramento de falhas.
operao normal
operao degradada
ocorrncia de falha
ocorrncia de erro
reconfigurao e recuperao
25
Os estados de um sistema com redundncia dinmica podem ser representado conforme a Figura 10. Um exemplo de implementao de redundncia dinmica atravs de mdulos estepe (standby sparing). Mdulos estepe podem ser operados de duas formas conforme Tabela 9. Operao de mdulos estepe alimentados (hot standby) Comentrios Mdulo estepe conectado eletricamente ao sistema. Minimiza a descontinuidade do processamento durante o chaveamento entre os mdulos. Mdulo estepe s comea a operar quando conectado. Aumenta a vida til dos mdulos estepe.
Diversidade, tambm chamada programao diversitria, uma tcnica de redundncia usada para obter tolerncia a falhas em software ([ChAv78], [AvKe84], [WeWe89]). A partir de um problema a ser solucionado, so implementadas diversas solues alternativas, sendo a resposta do sistema determinada por votao (Figura 11).
26
verso n
Figura 11: Programao n-verses A aplicao da tcnica no leva em conta se erros em programas alternativos apresentam a mesma causa (por exemplo: falsa interpretao de uma especificao ou uma troca de um sinal em uma frmula). Os erros, para poderem ser detectados, devem necessariamente se manifestar de forma diferente nas diversas alternativas, ou seja, devem ser estatisticamente independentes. Experimentos comprovam que o nmero de manifestaes idnticas (erros que assim no seriam detectados) significativamente menor que o nmero total de erros. Diversidade pode ser utilizada em todas as fases do desenvolvimento de um programa, desde sua especificao at o teste, dependendo do tipo de erro que se deseja detectar (erro de especificao, de projeto, ou de implementao). Essa tcnica chamada de projeto diversitrio, quando o desenvolvimento do sistema realizado usando diversidade de metodologias e equipes, e de programao em n-verses, quando se restringe implementao. Diversidade pode ser tambm usada como tcnica de preveno de falhas. Nesse ltimo caso, vrias alternativas de projeto ou de implementao so desenvolvidas para que, na fase de teste, erros eventuais possam ser localizados e corrigidos de uma forma mais simples e efetiva. No final da fase de teste, ento escolhida a alternativa em que se detectou a menor ocorrncia de erros, e apenas esta alternativa integrada ao sistema. A facilidade no reconhecimento de erros na fase de teste do sistema, a tolerncia tanto de falhas intermitentes quanto de permanentes e a atuao potencial tambm contra erros externos ao sistema (como por exemplo: erros do compilador, do sistema operacional e at mesmo falhas de hardware) so vantagens atribudas a programao diversitria. Entretanto, desvantagens da tcnica tambm devem ser citadas, como o aumento dos custos de desenvolvimento e manuteno, a complexidade de sincronizao das verses e o problema de determinar a correlao das fontes de erro. Enquanto pode ser provado formalmente que a redundncia de elementos de hardware aumenta a confiabilidade do sistema, tal prova no existe para a diversidade em software. Vrios fatores influenciam a eficcia da programao diversitria: as equipes podem trocar algoritmos entre si, os membros das equipes podem, por formao, tender a adotar os mesmos mtodos de desenvolvimento, ou as equipes podem buscar suporte
27
nas mesmas fontes. Qualquer uma dessas correlaes imprevisveis se constitui uma fonte potencial de erros. Um exemplo de diversidade o sistema de computadores de bordo do Space Shutle. Quatro computadores idnticos so usados em NMR. Um quinto computador, diverso em hardware e em software dos outros quatro, pode substituir os demais em caso de colapso do esquema NMR [Prad96]. 4.4.2 Blocos de recuperao
semelhante a programao a n-verses, mas nessa tcnica programas secundrios s sero necessrios na deteco de um erro no programa primrio. Essa estratgia envolve um teste de aceitao (Figura 12). Programas so executados e testados um a um at que o primeiro passe no teste de aceitao. A estratgia de blocos de recuperao tolera n-1 falhas, no caso de falhas independentes nas n verses.
verses secundrias s so necessrias se for detectado erro no primrio
resultado
verso primria verso secundria 1 chave n para 1 teste de aceitao
28
29
30
Outros exemplos de computadores para telefonia so os sistemas Siemens e, como os demais exemplos citados, empregam exaustivamente duplicao de elementos.
31
arquiteturas comuns na dcada de 80 e incio de 90 passaram a figurar como exemplos interessantes de solues de alta disponibilidade.
Descrio
o sistema reinicia imediatamente aps um defeito, desabilitando automaticamente o componente danificado. Envolve testes de componentes a cada vez que o equipamento ligado ou quando gerada uma interrupo externa. defeito em um desses componentes no interrompe a operao do sistema. ECC usado em todos os caminhos de dados. Adicionalmente, paridade usada nos endereos e linhas de controle do barramento e tambm nas caches. para proteger o sistema contra defeitos causados por temperaturas extremas, pela falta de fluxo de ar atravs do sistema ou devido a flutuaes de energia. registradores e contadores so usados para monitorar a atividade do sistema e fornecer co de guarda (watchdog) em hardware. Os registradores so acessados por software para obter dados de desempenho e para manuteno. realizam testes e registram os resultados obtidos. Os testes so realizados em componentes (processadores, memria, I/O,), e no sistema como um todo habilidade em substituir componentes sem necessidade de desligar o sistema (hot swap). Mdulos de energia/ventilao, placas de CPU/memria e placas de I/O podem ser instalados e removidos com sistema em operao normal.
32
Com o aumento de popularidade das redes e com o crescimento do comrcio eletrnico, o mercado para servidores de redes tolerantes a falhas aumentou consideravelmente. Praticamente todos os fabricantes de computadores oferecem servidores de redes tolerantes a falhas, entre eles se destacam Sun Microsystems (com a srie Enterprise), Compac (com tecnologia Tandem), HP, Dell e Stratus. Os servidores comerciais so baseados em redundncia de componentes de hardware, troca de mdulos sem necessidade de desligar o sistema, espelhamento de disco ou RAID e sistemas operacionais convencionais como UNIX. Um exemplo linha Sun Enterprise X500, com altos ndices de disponibilidade e confiabilidade (http://www.sun.com). Algumas caractersticas gerais presentes nos servidores Sun Enterprise so mostradas na Tabela 10.
33
34
microprocessadores Pentium apresentam recursos derivados dessa primeira experincia da Intel. 6.1.1 Mestre e verificador
O para mestre-verificador implementa o esquema de deteco de falhas por duplicao e comparao, com o circuito comparador interno ao chip. Basicamente um microprocessador pode ser configurado como mestre ou verificador (Figura 13). Um mestre pode operar sozinho ou ligado a um verificador. Um verificador sempre deve estar ligado a um mestre.
EN TR A D A
M ESTR E
VER I C AD O R FI er o r
SA I A D
Figura 13 - Configurao mestre-verificador Um chip configurado como verificador tem seus pinos de sada revertidos para entrada. Os pinos revertidos recebem sinais diretamente das sadas correspondentes do chip mestre. As entradas originais dos dois chips, mestre e verificador, esto ligadas em curto circuito. Internamente ao verificador, os sinais gerados como sada so comparados aos sinais recebidos pelos pinos revertidos. Ocorrendo qualquer discrepncia na comparao, o verificador sinaliza erro.
Entrada
Unidade funcional
Controle de reverso
Entrada/sada (bidirecional)
c o m p a r a d o r
Sinal de erro
Figura 14: Unidade bsica para redundncia em microprocessadores O par mestre-verificador permite facilmente deteco de erro. Com apenas essa redundncia simples, o tratamento do erro no possvel por hardware. Usando uma maior redundncia, por exemplo quatro chips, ligados dois a dois, tanto deteco quando reconfigurao so possveis. Essa arquitetura quadruplicada apresenta um par mestre-verificador primrio e outro par estepe. Os dois pares so ativos, mas apenas o
35
par primrio fornece resultados ao sistema. Quando o verificador do par ativo detecta um erro, chaveia-se para o par estepe, que passa a partir desse momento a operar sozinho. Redundncia qudrupla degrada, nesse caso, para duplex, mas o funcionamento do sistema garantido sem queda de desempenho. A redundncia usada aqui independente da funo especfica realizada pelo chip e pode ser implementada em qualquer circuito digital. O chip resultante tem sua rea em silcio aumentada em funo do comparador, das chaves bidirecionais para todos os pinos de sada, do sinal de controle adicional necessrio para configurar o chip como mestre ou verificador e do sinal de erro gerado no comparador (Figura 14). Todos os circuitos construdos usando essa tcnica devem ser usados aos pares para deteco de erros. 6.1.2 Tolerncia a falhas nos processadores Pentium
No microprocessador Intel 486 foi usada verificao de paridade para as transferncias internas de dados entre caches e unidades de execuo. J no Pentium, adicionalmente paridade nas caches, a TLB e a memria de microcdigo tambm so verificadas quando paridade. No Pentium foram introduzidos recursos adicionais para verificao de excees suportada por hardware (machine check exception). Tambm o esquema de mestre-verificador (usado inicialmente no iapx432) com dois chips voltou a ser adotado pela Intel a partir do Pentium. O Pentium Pro mantm todas as tcnicas do Pentium e adicionalmente: paridade nos bytes de dados substituda por 8 bits de ECC 2 bits de paridade para barramento de endereo associado a tcnicas de retry bits de paridade para sinais de controle No Pentium Pro verificao de excees conduzida pela MCA (machine check architecture) que adiciona 3 registradores de controle e 5 bancos de 4 registradores de erro aos recursos do microprocessador.
36
de manuteno [Liu84], de pequeno porte e autnomo, operando independentemente do mainframe, mas ligado diretamente a ele para poder supervision-lo. Um processador de manuteno deve ter capacidade de autoteste e ser construdo com componentes confiveis. No deve interferir no processamento normal do computador. A existncia desse processador no dispensa o uso de outras tcnicas de tolerncia a falhas, como cdigos de correo e deteco de erros. Tais cdigos permitem recuperar erros transitrios de alta incidncia a baixo custo, sem necessidade de interveno do processador de manuteno. Tolerncia a falhas suprida pelas funes de superviso, diagnstico e recuperao. Supervisionando continuamente o sistema, situaes de erro podem ser imediatamente detectadas. Na deteco de um erro, o processador de manuteno atua da seguinte maneira: foi detectado um erro transitrio: o processo em erro interrompido e, to rpido quanto possvel, recuperado para um estado livre de erros. O sistema operacional recebe ento indicao de reiniciar o processo recuperado; foi detectado um erro permanente: localizado o componente danificado e procura-se uma configurao que garanta a operao normal. Pode acontecer: reconfigurao possvel, mesmo com desempenho degradado. Por exemplo, se um processador falhar, o processo alocado para outro processador; reconfigurao no possvel; o processador de manuteno diagnostica a falha, facilitando o posterior reparo do sistema. O processador de manuteno ligado a uma central de manuteno atravs de rede. Assim ele pode ser suprido de programas de diagnstico sofisticados e atualizados quando necessrio. Pode tambm avisar imediatamente o pessoal de manuteno da necessidade de trocar placas ou componentes especficos. Desde que seja garantida alta confiabilidade para o processador de manuteno, ele representa uma soluo eficaz e de baixo custo para tornar computadores de grande porte mais disponveis, diminuindo o tempo de reparo do sistema. Um exemplo de sua aplicao pode ser encontrado nos computadores IBM de grande porte [RSNG82] e em quase todos os computadores de grande porte atuais.
37
no admissvel qualquer tipo de interrupo no funcionamento do sistema. Essas exigncias extremas quanto confiabilidade s podem ser alcanadas atravs da aplicao em larga escala de tolerncia a falhas. Como exemplo podem ser citados dois computadores de bordo desenvolvidos na dcada de 70 sob encomenda da NASA: FTMP (Fault Tolerant Multi-Processor) e SIFT (Software Implemented Fault Tolerance). Os dois processadores foram projetados tendo por base a mesma especificao. Tanto FTMP [HSL78] como SIFT [Wens78] so baseados em redundncia modular tripla (TMR). Entretanto, nos dois sistemas o votador implementado de forma diversa. No FTMP o votador um elemento de hardware, todos os processadores so sincronizados e o relgio central tolerante a falhas. No SIFT votao realizada por software, os processadores so assncronos, sem relgio central, de tal forma que tambm o sincronismo para o fornecimento de resultados para votao deve ser garantida por software. Os dois sistemas, FTMP e SIFT, apresentam alta confiabilidade para aplicaes em tempo real. FTMP apresenta entretanto um esquema de votao mais eficiente e mais rpido, pois realizado em hardware. No FTMP tolerncia a falhas no visvel a partir da aplicao, ao contrrio do que ocorre no sistema SIFT onde a votao realizada por software. Baseado no SIFT foi desenvolvido o computador de bordo para o Space Shuttle [Prad96], o que de certa forma atesta que a flexibilidade obtida pela votao em software supera em vantagem a velocidade obtida pela votao em hardware.
Um sistema composto vrios mdulos computacionais interligados por um barramento duplicado. Cada mdulo formado por um processador, uma memria local, um canal de entrada e sada e fonte de alimentao. O sistema dispe ainda de uma srie de
38
controladores de dispositivos de entrada e sada. Os controladores podem aparecer duplicados. Cada um deles est conectado a dois canais de E/S. Complementando redundncia em hardware, o sistema possui tambm redundncia dinmica em software. O sistema operacional formado por um kernel e um grande nmero de processos, em especial processos de superviso para cada um dos processadores. Tanto para processos do sistema como para processos do usurio, o sistema operacional permite a criao de pares. Um par formado por um processo primrio ativo e um processo substituto passivo. O processo primrio envia pontos de recuperao ao processo substituto. Diagnstico de erros se processa da seguinte forma: erros em um mdulo so detectados em outros mdulos processadores; a cada segundo, o processo supervisor de um mdulo envia sinal de vida a todos os outros mdulos no sistema; a cada dois segundos, o processo supervisor verifica se recebeu sinal de vida de cada um dos outros mdulos. Se faltar um sinal, o processo entende que o mdulo correspondente falhou. Alm desse controle mtuo, para cada operao de entrada e sada realizado controle de time-out. Em caso de falha, o processo de entrada e sada substituto entra em operao. Um vez diagnosticada a falha em um mdulo, todos os processos substitutos relacionados aos processos primrios que estavam sendo executados no mdulo so rolados para o ltimo ponto de recuperao (recuperao por retorno) e ativados, tornando-se ento processos primrios. O sistema reconfigurado em funo dos novos processos primrios. To logo o mdulo faltoso seja reparado, os novos processos primrios criam seus processos substitutos nesse mdulo. Em caso de falha de um canal de entrada e sada, o processo substituto correspondente rolado e ativado, enquanto o processo primrio desativado passando a ser substituto do primeiro. 6.4.2 Stratus Continuous Processing
Um sistema tpico pode ser composto de 1 a 32 mdulos, interconectados atravs de uma rede local. Os elementos em um mdulo so interligados por um barramento interno. Os mdulos do sistema Stratus no esto disponveis para redundncia dinmica. Cada mdulo composto de dois grupos idnticos de componentes de hardware e um circuito lgico para comparao dos resultados de todas as operaes que so realizadas em paralelo (duplicao e comparao). Todos os mdulos podem aparecer por sua vez duplicados. Essa duplicao entretanto transparente ao usurio e s aplicaes. Tanto o sistema operacional como os programas de aplicao apresentam apenas alguns recursos bvios de tolerncia a falhas, uma vez que o sistema foi especificado para prover tolerncia a falhas por hardware. Cada mdulo do sistema compara os resultados fornecidos pelos elementos duplicados. Quando a comparao indica erro, nenhum resultado fornecido como sada, o mdulo
39
desconectado do sistema, sendo ento enviado um sinal de erro a um programa de manuteno. Esse programa providencia testes no mdulo para determinar se a falha permanente ou transitria. Em ambos os casos, registrado o problema e indicado o erro em um terminal de superviso. Se o mdulo faltoso aparecia duplicado no sistema, sua falha permanece invisvel aplicao, pois a unidade redundante garante a continuidade do processamento. Caso o programa de manuteno tenha detectado uma falha transitria, o mdulo que sofreu a falha ressincronizado com a unidade redundante correspondente e entra imediatamente em operao. Caso seja uma falha permanente, o mdulo substitudo manualmente sem interromper o processamento normal.
40
41
sistemas que no compartilham armazenamento: cada nodo no cluster efetivamente independente, toda a interao por troca de mensagens. Existem sistemas, algumas vezes classificados como cluster, que apresentam memria compartilhada atravs de hardware especial. Nesse caso, os nodos usam um barramento rpido de memria compartilhada, o que d a cada nodo acesso ao espao de memria de todo o sistema. Entretanto, esses nodos precisam estar muito prximos fisicamente uns das outros, enquanto que nodos em sistemas que no compartilham memria podem estar geograficamente distantes uns dos outros. Sistemas sem armazenamento compartilhado so os mais populares. Nesse caso, os nodos so servidores efetivamente independentes, unidos por uma rede de alta velocidade e coordenados pelo software de cluster. Uma barreira para a efetiva independncia entre os nodos a necessidade de conectar os servidores a altas velocidades. Uma Fast Ethernet pode ser suficiente para recuperao de falhas. Mas se suporte a alto desempenho e longas distncias desejado, ento uma largura de banda muito maior e no contenciosa deve ser usada. Entre as solues, um exemplo o ServerNet da Tandem, um tipo de backbone de alta velocidade desenvolvida pela Microsoft, pela Intel e pela Compaq (agora proprietria da Tandem)
42
7.2.1
O Sun Enterprise Cluster baseado em um conjunto comum de servios do sistema e interconexes entre servidores Sun Enterprise. um sistema de cluster assimtrico, os nodos no cluster no precisam ser idnticos. mais adequado, entretanto, manter o hardware dos diferentes nodod com poder de processamento equilibrado. Assim, o sistema no sofrer uma grande queda no desempenho caso o nodo principal falhe. O nmero mximo de nodos em um Sun Enterprise Cluster 256. Entretanto o limite prtico realmente depende dos tipos de servidores e suas conexes. Cada cluster formado de acordo com uma topologia de servidores e conectividade de discos. Dependendo da topologia, do nmero de conexes entre os servidores, conexes entre os servidores e os discos e conexes pblicas, o custo pode variar significativamente. Em geral, quanto mais conexes, maior a confiabilidade, a disponibilidade e tambm o custo. Entretanto, enquanto a capacidade de processamento do cluster aumenta com cada nodo adicional, eventualmente o desempenho pode saturar ou at diminuir. Confiabilidade e compartilhamento de carga de trabalho so atingidos atravs de uma identidade de rede nica a todo o cluster. Servios de rede para cada nodo existem como antes, mas o cluster visto como uma nica entidade, com um nico endereo de IP e um nico host name. Esse endereamento permite que os usurios se conectem atravs do nome do cluster e sejam redirecionados para o nodo do cluster com a menor carga de trabalho. Alm disso, caso o nodo falhe, um outro membro do cluster toma o seu lugar sem perda de conexo. Essa viso de sistema nico se estende para os dispositivos e processos. Por exemplo, o identificador de processo do UNIX (pid) nico entre todos os membros do cluster, assim como identificadores de dispositivo terminal (o tty do UNIX) e ns de estrutura de diretrio (o vnode do UNIX). Assim, aplicaes no necessitam modificaes para serem executadas em um cluster. Uma imagem de aplicao de servidor de Web nico pode ter processos de sesso HTTP individuais rodando em todos os nodos, distribuindo a carga sempre que possvel sem a necessidade de desenvolver uma verso especial do software de servidor de Web compatvel com o cluster. O administrador tambm capaz de migrar manualmente um processo em execuo de um nodo para outro, por qualquer propsito de manuteno, sem qualquer interrupo de servio. 7.2.2 Microsoft Cluster Server
Clusters da Microsoft foram previstos para ser implementados em duas fases. A primeira delas o Microsoft Cluster Server (MSCS), que faz parte da Enterprise Edition do Windows NT Server 4.0. O MCS somente proporciona meios bsicos de recuperao de falhas no modelo primrio-backup para dois nodos. A fase dois est relacionada ao Windows 2000 Advanced Server. Na pgina http://www.microsoft.com/windows2000/technologies/clustering/default.asp do fabricante podem ser encontrados documentos detalhados sobre cluster com Windows 2000, assim como anlises de desempenho, documentao e estudos de casos. Em sua configurao original, o NT j possui sistemas de arquivo (NTFS e DFS) que podem ser compartilhados atravs da rede. As maiores limitaes da arquitetura cluster NT esto relacionadas ao seu sistema operacional e ao seu modelo de aplicao. Na
43
maior parte, as aplicaes do Windows so projetadas para um nico usurio. Alm disso, a interface grfica para essas aplicaes as liga fortemente ao sistema operacional. O fato do processamento grfico sobrecarregar o servidor, escalar o nmero de usurios exige que se escale proporcionalmente a carga de processamento grfico no servidor, quando este deveria estar fazendo o processamento de dados e deixando o processamento grfico para as estaes cliente. O MSCS exige, para armazenamento, SCSI compartilhada que pode ser trocada entre os dois nodos no cluster. Exige tambm um link dedicado entre os dois nodos. No existem restries quanto tecnologia que pode ser usada: uma conexo Fast Ethernet ou uma tecnologia de interconexo adaptada, como o ServerNet. Qualquer que seja a tecnologia escolhida, a conexo entre os dois servidores transmite um sinal para que o software de cluster possa monitorar o estado dos sistemas primrio e backup. A implementao da Microsoft um pouco diferente da maioria dos clusters primrio/backup pelo fato de que sinais separados podem ser configurados para aplicaes particulares. Isso permite que o software recupere falhas de determinados programas, e no de todo o servidor. Ela tambm usa algo conhecido como recurso de quorum (que, na primeira verso do software, um disco compartilhado) para ajudar a solucionar problemas que podem ocorrer na interconexo. Apenas um sistema de cada vez pode ter a posse desse recurso e assim, em caso de falha na comunicao em uma das conexes, os dois nodos tomam posse do disco de quorum para determinar exatamente qual nodo deve continuar rodando. O MSCS pode tambm ser configurado tanto como uma soluo ativa/passiva quanto como uma soluo ativa/ativa. Assim, o sistema de backup no necessita ser dedicado exclusivamente tarefa sendo executada no primrio, e nem necessita ser idntico ao primrio. O software envolvido executado como um servio sobre o sistema operacional Windows NT, permitindo que um servidor virtual e recursos virtuais sejam configurados. Entretanto, existe uma grande diferena na maneira como isso lidado no MSCS: uma ferramenta grfica de administrao do cluster pode ser executada remotamente de qualquer estao de trabalho NT na rede [PCM99]. O MSCS tambm permite mover manualmente recursos de um servidor no cluster para outro (para permitir manuteno programada, por exemplo), e configurar o software de recuperao de falhas para atuar automaticamente na reintegrao de servidores. O MSCS suporta apenas TCP/IP, sendo que o software automaticamente move o endereo de IP designado para o servidor de cluster virtual cujo servidor no par de cluster estiver ativo no momento em que um evento de recuperao de falha for detectado [PCM99]. 7.2.3 Tandem ServerNet
A Tandem uma antiga fornecedora no mercado de cluster, com o cluster Himalaya baseado, em RISC, e o software de clusterizao NonStop. A Tandem tambm comercializa o software NonStop na forma de middleware, para uso conjunto com o Unix e o NT sobre plataforma Intel, com particular nfase no suporte para processamento de transaes e aplicaes de armazenamento de dados.
44
A Tandem responsvel por uma das tecnologias mais avanadas em interconectividade, o ServerNet, que se encontra no centro de vrias solues de clusterizao (http://www.tandem.com) O ServerNet no apenas permite que os nodos em um cluster se comuniquem entre si, mas tambm que cada nodo independente interaja com outros sistemas atravs da rede. O ServerNet pode ser usado para suportar tanto clusters com disco compartilhado (shared disk) quanto clusters sem compartilhamento (shared nothing), e essa flexibilidade, somada imensa largura de banda fornecida, permite lidar com alto desempenho, assim como alta disponibilidade convencionais [PCM99]. Comunicao em alta velocidade alcanada atravs do uso de uma rede de roteadores interconectados. A interface entre os roteadores e os servidores se d atravs de adaptadores PCI plug-in, cada um capaz de suportar at 300Mbps. Isso significa 50Mbps em cada um dos seis links possveis (efetivamente 100Mbps, pois a transferncias so todas bidirecionais). A tecnologia ServerNet tambm capaz de acessar informaes de nodos distantes, como tambm enviar requisies de informaes, e de usar uma tcnica chamada wormhole routing para facilitar o aumento da taxa de transferncia de dados. E, diferente dos sistemas multiprocessadores com memria compartilhada, no existe a necessidade de os nodos no cluster estarem to prximos uns dos outros, ou unidos usando qualquer tipo de barramento do sistema. Particularmente, os nodos em um sistema ServerNet podem estar a uma distncia de at 30m, unidos por cabos de par tranado simples, atravs dos quais o ServerNet pode proporcionar uma largura de banda completa de 50Gbps ou mais O resultado uma comunicao entre os nodos muito rpida. O ServerNet por si prprio apenas proporciona a infra-estrutura de suporte para clustes. So necessrios pacotes especiais ou extenses no sistema operacional para permitir tirar o mximo de vantagem das caractersticas oferecidas. Essa tecnologia suportada por outras companhias, como a Oracle com o Oracle Parallel Server (OPS), o Orion da Novell e o Microsoft Cluster Server. O ServerNet tambm suporta a especificao Virtual Interface (VI), um padro para a tecnologia de conexo em clusters desenvolvido pela Tandem, Microsoft e Intel, entre outras, 7.2.4 Clusters Linux
Servidores independentes executando o sistema operacional Linux podem ser agrupados em um cluster sem necessidade de hardware adicional, exceto uma conexo de alta velocidade. Um cluster Linux pode ser baseado puramente em software. Nem todos os pacotes para cluster suportados por Linux so de software livre e independentes de hardware especial. Por exemplo o Linux Network Evolocity (http: //www.linuxnetworx.com) um produto comercial que compreende hardware e software. O RHHAS (Red Hat High Availability Server) tambm um produto comercial cujo ncleo formado pelo software livre Piranha. A IBM tambm vem desenvolvendo produtos para cluster Linux como sistema de arquivos - IBM General Parallel File System (GPFS) for Linux (http://www1.ibm.com/servers/eserver/clusters/software/gpfs.html), software de gerncia de cluster - IBM Cluster System Management (CSM) for Linux (http://www-
45
1.ibm.com/servers/eserver/clusters/software/) e inclusive hardware especial (http://www-1.ibm.com/servers/eserver/clusters/hardware/1300.html) - o IBM eServer Cluster 1300. Uma ferramenta desenvolvida no projeto Linux-HA, denominada Heartbeat (http: //www.heng.com/alanr/ha/) permite configurar um nodo de backup para qualquer outro nodo em um cluster. O funcionamento simples e usa uma antiga tcnica de tolerncia a falhas: o nodo backup monitora continuamente o funcionamento do nodo primrio enviando para esse sinais peridicos (pings por exemplo); caso o nodo primrio falhe, o backup assume o seu lugar. A troca de um nodo por outro se d pela falsificao de pacotes ARP (Address Resolution Protocol), o nodo backup assume o lugar do principal enganando os demais nodos na rede. Na Tabela 11 so mostradas algumas outras alternativas de pacotes de software dirigidos a servidores Linux para construo de clusters de alta disponibilidade. Produto SteelEye Lifekepper http://www.steeleue.com Piranha http://www.sources.redhat.com/piranha Descrio Disponvel para servidores Linux, Unix e NT Fornecido junto a distribuio Red Hat Linux 6.2. Piranha livre. Prov servios de "failover" (um servidor com defeito substitudo por outro operacional). Para distribuio TurboLinux. Pode integrar Solaris e NT no cluster. Projeto de desenvolvimento de software de alta disponibilidade. Permite configurar clusters com primrios e backups.
46
Um cluster oferece um potencial para desempenho e disponibilidade aumentados, mas atingir uma mais alta disponibilidade pode ser difcil. Um cluster estar fisicamente localizado em um lugar nico, e se ocorrerem acidentes como incndio ou inundao, um ataque terrorista ou a fonte de energia do prdio for cortada, a disponibilidade do cluster se torna nula. Um sistema distribudo, que replica o estado crtico entre locais distantes, poderia sobreviver a tais acidentes com pouca ou nenhuma interrupo no servio. Enquanto seguro afirmar que um cluster oferece opes animadoras para o desenvolvedor de uma aplicao de misso crtica, tambm claro que muitos outros aspectos devem ser considerados para se alcanar uma confiabilidade elevada ou uma maior disponibilidade. Nesses caso, outras opes devem ser analisadas, como replicao interna ao nodo para deteco de erros ou mascaramento de falhas.
47
48
nmero maior de componentes de software e sofisticadas interaes, novas solues para sistemas distribudos passveis de implementao em vrios nveis de software e hardware precisam ser desenvolvidas e validadas quanto a correo e temporizao.
servios software tolerante a falhas resilincia de processos resilincia de dados aes atmicas recuperao para um estado consistente blocos bsicos difuso confivel e atmica processador fail-stop, armazenamento estvel, comunicao confivel sistema distribudo
Figura 15: Classificao em camadas segundo Jalote
49
Os sistemas distribudos so classificados como sncronos ou assncronos, dependendo se existe um limite de tempo finito e conhecido para troca de mensagens. usual tambm o conceito de time-out associado aos sistemas sncronos. A ordenao de eventos relaciona a dificuldade de determinar relaes temporais devido inexistncia de um relgio global, ou seja, determinar a ordenao temporal de eventos que ocorrem em nodos diferentes, medidos por relgios diferentes. Relgios lgicos (introduzidos por Lamport em 1978) so um meio de assinalar um nmero a um evento. No possuem nenhuma relao com o tempo fsico. Podem ser implementados atravs de timestamps. O relgio lgico pode ser usado para ordenao total de eventos e suficiente para a maior parte das aplicaes que no exigem respostas crticas quanto ao tempo.
crash omisso resposta temporizao arbitrria resposta adiantada ou retardada comportamentototalmente arbitrrio e imprevisvel respostas incorretas para algumas entrada
50
processadores P1
Pk Pk+1
detecta falta de mensagem ou discordncia de ordem ou contedo armazenamento estvel Ps falha em qualquer processador bloqueia operaes sobre o armazenamento estvel
Figura 17: Processador k+1 fail-stop Assim como armazenamento estvel, processadores fail-stop so apenas uma abstrao. Processadores fail-stop, apesar de serem assumidos por grande parte das solues prticas de tolerncia a falhas, so existem. Uma aproximao so processadores k+1 fail-stop como mostrado na Figura 17. Esses processadores toleram k falhas.
8.6 Consenso
Em vrias situaes o sistema distribudo deve alcanar um consenso, ou seja, todos os componentes perfeitos devem contar com os mesmos dados sobre os quais devem aplicar um mesmo algoritmo de deciso. necessrio resolver o problema de consenso
51
entre todos os nodos mesmo na presena de falhas arbitrrias. A compreenso do problema essencial para entender os protocolos que envolvem troca de mensagens. O procedimento clssico para alcanar consenso sob falhas arbitrrias em sistemas sncronos conhecido como o algoritmo dos generais bizantinos e foi apresentado por Lamport em 1982. O algoritmo garante consenso por troca de mensagens para qualquer tipo de falha quando o nmero total de nodos for maior ou igual a 3 vezes mais 1 o nmero de nodos faltosos (chamados de traidores por Lamport). Lamport mostrou tambm que consenso impossvel em sistemas assncronos com falhas arbitrrias. Posteriormente Fisher provou que consenso impossvel em sistemas assncronos considerando qualquer modelo de falhas. Infelizmente, mesmo em sistemas sncronos, o nmero de mensagens trocadas entre os nodos insuportvel em um sistema distribudo real, pois provoca uma exagerada queda de desempenho. Para evitar essa queda, o algoritmo de consenso deve adequar-se a um modelo mais restritivo de falhas e a outras caractersticas especficas da rede. Uma srie de algoritmos tm sido publicados com esse objetivo desde a apresentao do algoritmo de Lamport. Para resolver o problema da impossibilidade de consenso em sistemas assncronos foram propostos protocolos probabilsticos, que permitem alcanar consenso com certa probabilidade diferente de 1.
52
Figura 18: Mensagem perdida Ao desfazer a computao, um processo deixa algumas mensagens rfs na rede. Processos que receberam e incorporaram essas mensagens devem por sua vez desfazer tambm a computao realizada, provocando, eventualmente, que outros processos, que
53
receberam suas mensagens, agora rfs, tambm tenham que desfazer suas computaes. O efeito pode atingir todos os processos de um sistema e provocar o retorno ao incio do processamento. Uma soluo para esse problema impor restries a comunicao entre os processos. Vrios algoritmos tem sido propostos para estabelecimentos de pontos de recuperao que correspondam a um estado global seguro. Vrios algoritmos tambm sugerem mecanismos para evitar o efeito domin, para restringir o nmero de pontos de recuperao que necessitam ser armazenados ou impor restries a comunicao entre os processos visando evitar o aparecimento de mensagens perdidas (Figura 18) ou rfs (Figura 19). Jansch-Prto e Weber apresentam um resumo dos algoritmos clssicos [Jans97]. Q mensagem rf P PR falha
Figura 19: Mensagem orf Aps a localizao da falha por procedimentos de diagnstico, o sistema distribudo pode ser reconfigurado. A reconfigurao envolve a determinao de uma nova configurao para a rede, o isolamento dos nodos faltosos, redistribuio dos recursos restantes para as aplicaes, realocao dos processos aos nodos e reinicializao ou recuperao do sistema. Reconfigurao tambm necessria quando um novo nodo integrado rede. Para a determinao de uma nova configurao para a rede necessrio consenso, todos os novos nodos devem reconhecer a mesma configurao (ou seja quais so os nodos perfeitos que restaram e qual a topologia de sua interconexo). Aps a migrao dos processos e sua recuperao, o processamento pode ser reiniciado. Todas essas operaes devem ser realizadas no menor intervalo de tempo possvel e considerando, que mesmo nesse pequeno intervalo, novos nodos podem falhar na rede. Deve-se considerar tambm, no caso de isolamento de nodos, a queda de desempenho gradativa a qual o sistema est sujeito a cada nova reconfigurao. Essa queda de desempenho pode inviabilizar algumas aplicaes. A reconfigurao est tambm relacionada ao gerenciamento e manipulao de grupos de processos no momento da falha.
54
gerenciamento e a coordenao dos processos de um determinado grupo do sistema, tanto no momento da falha como no estgio de reconfigurao do grupo. Gerenciamento e manipulao de grupos relacionam-se aos aspectos de formao e coordenao de grupos em sistemas sujeitos a ocorrncia de falhas. Diversos algoritmos tm sido propostos para resolver o problema de associao de grupos em sistemas distribudos, sendo uma rea promissora para pesquisas, principalmente se associada a aspectos de tempo real. Ao contrrio dos tpicos anteriores que so cobertos por Jalote [JAL94], associao de grupos tratada por Birman [BIR96].
55
Esta ordenao, denominada na literatura como serializao como cpia nica, no pode ser garantida de forma simples. Os algoritmos desenvolvidos para isto, denominados algoritmos de controle de rplicas, devem tambm ser capazes de operar quando da ocorrncia de falhas, quando o nmero de nodos se reduz, ou sob outras condies, como particionamento da rede, em funo do modelo de falhas adotado. Os algoritmos de controle de rplicas podem ser divididos em trs grandes grupos: algoritmos baseados em votao; algoritmos baseados em cpia primria; algoritmos baseados em cpias ativas. Os dois ltimos podem ser mais facilmente implementados usando multicast confivel e atmico.
56
57
execuo do software responsvel pela injeo de falhas afeta as caractersticas de temporizao do sistema, o que prejudica a execuo de funes crticas no tempo. Mesmo considerando essas desvantagens, injeo de falhas implementada por software tem despertado o maior interesse de pesquisadores e desenvolvedores. A maioria das ferramentas de injeo de falhas mais recentes enfocam sistemas distribudos, relacionados com falhas de processador, memria e comunicao. Estas ferramentas (como por exemplo FIAT, SFI, DOCTOR, FINE, PFI) injetam falhas por software. O captulo 5 do livro do Pradhan [Prad96] escrito por Iyer e Tang traz um tima introduo a injeo de falhas. Um artigo de Hsue [Hsu97] um resumo interessante sobre o tema. No Brasil pesquisa em injeo de falhas tem sido conduzidas principalmente pelos grupos de pesquisa das professoras Eliane Martins, na Unicamp, e Taisy Weber, na UFRGS. Nos anais do SCTF e WTF podem ser encontrados relatos sobre esses trabalhos.
58
10 Concluso
O texto apresentou os conceitos bsicos de tolerncia a falhas e mostrou algumas reas de aplicao de computadores tolerantes a falhas. Praticamente todos os exemplos citados toleram erros provocados por falhas de hardware. entretanto fcil de imaginar que com a utilizao de componentes cada vez mais confiveis e software cada vez mais complexo, erros que ocorram em sistemas de computao sejam devidos predominantemente a falhas de software. Essas falhas tanto podem estar localizadas no sistema operacional, nos programas aplicativos ou nos compiladores e interpretadores dos programas aplicativos. Falhas em software podem ser contornadas por tcnicas de tolerncia a falhas especficas, como diversidade, ou por tcnicas que evitam erros como verificao formal. impossvel prever qual dessas tcnicas prevalecer no futuro. interessante observar que em muitos sistemas deteco de erros provocados por falhas de hardware, mascaramento, recuperao e reconfigurao so comandados por software. Nesses sistemas essencial que esse software seja seguro, preferencialmente verificado quanto a correo. O texto apresentou ainda uma rpida viso sobre os problemas de falhas em sistemas distribudos e suas possveis solues. Esse texto no visa substituir um livro texto na rea. Vrios deles so recomendados ao longo da leitura. Um maior aprofundamento visando pesquisas acadmicas podem ser obtidas nos anais dos eventos da rea, tanto internacionais como o DSN, como os nacionais SCTF e WTF. Os exemplos de sistemas tolerantes a falhas citados no texto no representam uma lista exaustiva. Cresce dia a dia o nmero de aplicaes de sistemas de computao onde disponibilidade e confiabilidade so exigidas em alto grau. Os usurios de sistemas de computao esto se tornando mais exigentes e se mostram um pouco mais dispostos a enfrentar os custos adicionais das tcnicas de tolerncia a falhas. Convm ressaltar que mesmo para as reas onde se dispe de sistemas tolerantes a falhas, esses nem sempre se apresentam prontos para a imediata utilizao. O desenvolvedor de software, ou o usurio especializado desses sistemas, deve muitas vezes prover alguns recursos complementares para garantir a confiabilidade ou a disponibilidade desejada para a sua aplicao. Alm disso, os sistemas comerciais geralmente s garantem tolerncia a falhas isoladas de hardware. Mecanismos contra falhas mltiplas e mesmo falhas de software so raramente disponveis devido ao elevado custo associado. O desenvolvedor deve, portanto, reconhecer exigncias quanto a confiabilidade e disponibilidade de uma determinada aplicao, saber escolher o sistema de menor custo que supra essas exigncias e ter condies de desenvolver os mecanismos complementares de tolerncia a falhas para atingir a confiabilidade desejada. Naturalmente esse um desenvolvedor especialista, conhecedor de tcnicas de tolerncia a falhas e sua utilizao eficiente. Profissionais de computao devem encarar seriamente os problemas ocasionados por falhas no tratadas nos sistemas informatizados. Tolerncia a falhas compreende muitas
59
das tcnicas que permitem aumentar a qualidade de sistemas de computao. Apesar da tolerncia a falhas no garantir comportamento correto na presena de todo e qualquer tipo de falha e apesar das tcnicas empregadas envolverem algum grau de redundncia e, portanto, tornarem os sistemas maiores e mais caros, ela permite alcanar a confiabilidade e a disponibilidade desejadas para os sistemas computadorizados. Vrios desafios ainda devem ser vencidos, tolerncia a falhas no uma rea de pesquisa completamente dominada. Apesar de antiga uma rea onde muita aplicao, avaliao e popularizao se fazem necessrias.
60
11 Bibliografia
[AnLe81] ANDERSON, T.; LEE, P. A. Fault tolerance -principles and practice. Englewood Cliffs, Prentice-Hall, 1981. [Aviz98] AVIZIENIS, A. Infraestructure-based design of fault-tolerant systems. In: Proceedings of the IFIP International Workshop on Dependable Computing and its Applications. DCIA 98, Johannesburg, South Africa, January 12-14, 1998. p. 51-69.
[AvKe84] AVIZIENIS, A.; KELLY, J. P. Fault tolerance by design diversity concepts and experiments. Computer, New York, 17(8):67-80, Aug. 1984. [Bir96] BIRMAN, K. Building secure and reliable network applications, 1996 [BUY99] BUYYA, Rajkumar. High Performance Cluster Computing. Volume 1. Upper Saddle River, Prentice-Hall, 1999. [ChAv78] CHEN, L.; AVIZIENIS, A. N-version programming: a fault tolerance approach to reliability of software operation. In: Annual International Symposium on Fault-Tolerant Computing, 8, 1978. Proceedings. New York, IEEE, 1978. p. 3-9. [Crev56] CREVELING, C.J. Increasing the reliability of electronic equipment by the use of redundant circuits. Proceedings of the IRE. New York, 44(4):509515, abr. 1956. GRKE, W. Fehlertolerante Rechensysteme. Mnchen, Oldenburg Verlag, 1989. HOPKINS, A. L; SMITH, T. B.; LALA, J. H. FTMP - a highly realible fault-tolerant multiprocessor for aircraft. Procedings of the IEEE, New York, 66(10):1221-1239, Oct. 1978. HSUEH, M. et. al. Fault Injection Techniques and Tools. IEEE Computer, v. 30, n. 4, Apr. 1997. JALOTE, P. Fault tolerance in distributed systems. Prentice Hall, Englewood Cliffs, New Jersey, 1994. JANSCH-PORTO, I. E. S; WEBER, T. S. Recuperao em Sistemas Distribudos. In: XVI Jornada de Atualizao em Informtica, XVII Congresso da SBC, Braslia, 2-8 agosto de 1997. anais. pp 263-310 JOHNSON, D. The Intel 432: a VLSI architecture for fault-tolerant computer systems. Computer, New York, 17(8):40-48, Aug. 1984. KATZMAN, J. A. A fault-tolerant computing system. In: Hawaii International Conference of System Sciences, 1978, Proceedings. p. 85-102. LAPRIE, J. C. Dependable computing and fault-tolerance: concepts and terminology. In: Annual International Symposium on Fault Tolerant Computing, 15. Ann Arbor, jun. 19-21, 1985. Proceedings. New York, IEEE, 1985. p. 2-11.
[Goer89] [HSL78]
[Hsu97]
61
[Lapr98]
LAPRIE, J. C.; Dependability: von concepts to limits. In: Proceedings of the IFIP International Workshop on Dependable Computing and its Applications. DCIA 98, Johannesburg, South Africa, January 12-14, 1998. p. 108-126. LIU, T. S. The role of a maintenance processor for a general-purpose computer system. IEEE Transations on Computers. New York, c-33(6):507517. June 1984.
[Liu84]
[LyVa62] LYONS, R.E.; VANDERKULK, W. The use of triple-modular redundancy to improve computer reliability. IBM Journal of Research and Development. New York, 6(3): 200-209, abr. 1962. [Mul93] MULLENDE, S. Distributed systems. Addison-Wesley, ACM Press, New York, 1993.
[PCM99] PC Magazine UK Guide to Clustering. Disponvel por www em http://www.zdnet.co.uk/pcmag/ (outubro de 1999) [PRA96] [Prad96] PRADHAN, Dhiraj. Fault-Tolerant Computer Design. Englewood Cliffs, Prentice-Hall, 1996. PRADHAN, D. K., Fault-Tolerant System Design. Prentice Hall, New Jersey, 1996.
[RSNG82] REILLY, J; SUTTON, A.; NASSER, R.; GRISCOM, R. Processor controller for the IBM 3081. IBM Journal of Research and Development, 26(1):22-29. Jan. 1982. [SiSw82] SIEWIOREK, D. P.; SWARZ, R. S. The Theory and Practice of Reliable System Design. Bedford, Digital, 1982. [SUW99] Sun World. Disponvel por www em http://www.sunworld.com (agosto de 1999) [Toy78] TOY, W. N. Fault-tolerant design of local ESS processors.Proceedings of the IEEE, New York, 66(10):1126-1145, Oct. 1978.
[VonN56] VON NEWMANN, J. Probabilistic logics and the synthesis of reliable organisms from unreliable components. In: Automata Studies, Shannon & McCarthy eds. Princeton Univ. Press, 1956. p. 43-98. [Web90] Weber, T.; Jansch-Prto, I.; Weber, R. Fundamentos de tolerncia a falhas. Vitria: SBC/UFES, 1990. (apostila preparada para o IX JAI - Jornada de Atualizao em Informtica, no X Congresso da Sociedade Brasileira de Computao).
[Wens78] WENSLEY, J. H. et al. SIFT: design and analysis of fault-tolerant computer for aircraft control. Proceedings of the IEEE, New York, 66(10):1240-1254, Oct. 1978. [WeWe89] WEBER, R. F.; WEBER, T. S. Um experimento prtico em programao diversitria. In: III Simpsio em Sistemas de Computadores Tolerantes a Falhas, SCTF, Rio de Janeiro, 20-22 set. Anais. Rio de Janeiro, 1989. p. 271-290.
62