Beruflich Dokumente
Kultur Dokumente
DISSERTAO DE MESTRADO
SALIUS - SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS
por
SALIUS - SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS
Dissertao apresentada ao curso de Mestrado em Informtica da Universidade Federal da Paraba, em cumprimento s exigncias para obteno do Grau de Mestre.
S784S
STANCHI, Tatiana Simas SALIUS - SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS. Dissertao de Mestrado, Universidade Federal da Paraba, Centro de Cincias e Tecnologia, Coordenao de Ps-Graduao em Informtica, Campina Grande - Pb, fevereiro de 2000. 127 p. Il. Orientador: Francisco Vilar Brasileiro.
Palavras Chave: 1. Sistemas Distribudos 2. Armazenamento Estvel 3. Sistema de Arquivos Robusto 4. Tolerncia a Falhas
CDU - 681.3.066D
Resumo
Armazenamento estvel um requisito importante para muitas aplicaes. Os sistemas de arquivos tradicionais realizam a gravao sncrona em disco, como uma forma de garantir a estabilidade dos dados armazenados. Contudo, a gravao sncrona provoca uma degradao no desempenho das aplicaes, em decorrncia da lentido dos acessos a disco. medida que a tecnologia evolui, aumentam os prejuzos no desempenho, causados pelo uso da gravao sncrona. Os avanos tecnolgicos no acontecem no mesmo ritmo para todos os componentes de hardware: a velocidade dos processadores aumenta em propores bem maiores que a velocidade de acesso a disco. Por isso, o tempo de acesso a disco um entrave crescente ao desempenho de aplicaes que realizam muitas operaes de escrita, especialmente se a gravao for sncrona. Esta dissertao apresenta a especificao de uma nova tcnica de armazenamento estvel, denominada SALIUS SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS. A tcnica proposta substitui a gravao sncrona pela replicao remota de buffers alterados na cache. Assim, a aplicao deixa de esperar pela operao de sada para disco, passando a aguardar pelo envio dos dados alterados atravs da rede e o armazenamento desses dados na memria principal de uma mquina remota. Como a velocidade de acesso memria principal progressivamente maior que a velocidade de acesso a disco, enquanto a transmisso de dados, atravs de uma rede de alta velocidade, bem mais veloz do que a gravao da mesma quantidade de dados em disco, o principal benefcio oferecido a garantia de estabilidade dos dados, com um desempenho potencialmente superior ao de solues baseadas na gravao sncrona em disco. A tcnica proposta tende a ser cada vez mais vantajosa, porque a tecnologia de memria e a tecnologia de rede progridem num ritmo mais acelerado que a tecnologia de disco. Para assegurar a estabilidade das informaes, a tcnica proposta inclui um mecanismo de recuperao para frente, capaz de restaurar o sistema de arquivos para um estado consistente, aps um crash. i
Abstract
Stable storage of data is an important requirement for many applications. Traditional file systems use synchronous writing to disk as a way of guaranteeing the stability of stored data. However, synchronous writing impairs application performance because of the slow speed of disk access. As hardware technology advances, impairment to performance caused by the use of synchronous writing increases. The hardware component technologies develop at varying rates. The speed of processors is increasing at a greater rate than the speed of disk access. Thus disk access time is limiting the performance of applications which perform many disk access operations, especially in the case of synchronous writing. This dissertation presents the specification of a new stable storage technique, called SALIUS STABLE STORAGE SERVICE WITH FORWARD RECOVERY BASED ON REMOTE REPLICATION OF BUFFERS. The proposed service substitutes synchronous writing with remote replication of buffers that are modified in the cache. In this way the application does not wait for output to disk but instead waits for the sending of modified data through a network and the storage of this data in the main memory of a remote machine. The main advantage of the proposed service is the guarantee of stability, with a potentially better performance than the solutions based on synchronous writing, due to the fact that the speed of memory access is progressively greater than that of disk access, and the transfer of data through a high speed network is considerably faster than writing the same quantity of data to disk. Since memory and network technologies are developing at a considerably greater speed than that of disk technology, this approach could be even more advantageous. To assure the stability of the information, the technique includes a forward recovery mechanism which allows it to collect enough remote information to restore the file system to a consistent state after a crash.
ii
Dedico esse trabalho minha querida filha Malu, fonte de toda a minha inspirao.
iii
Agradecimentos
O percurso trilhado durante um curso de mestrado nem sempre fcil e tranqilo. Agradeo a Deus a oportunidade de realizar esse trabalho e de aprender um pouco mais sobre a Arte de Viver. Minha eterna gratido aos meus pais, Arlindo (in memorian) e Ana Lcia, sempre presentes com palavras de carinho e incentivo, de prontido para atender s minhas solicitaes. Sem eles, seria impossvel cumprir essa jornada. Agradeo minha filhinha Malu, pela cumplicidade e compreenso, diante da falta de tempo e de tantas prioridades, que subtraram-lhe horas de convvio e ateno. Sou igualmente grata minha irm Ktia, pela valiosa ajuda nos momentos difceis e por torcer pelo meu sucesso, e a Edil, pelo companheirismo e por desejar a realizao de meus sonhos e projetos. Um agradecimento muito especial ao meu grande amigo e orientador Fubica, que tornou possvel a realizao de um sonho antigo, sabendo desempenhar, com competncia, cada um desses papis. Minha gratido aos meus professores e amigos Raimundo Macdo e Francisco Drea (in memorian), que despertaram o meu interesse para a rea acadmica e foram grandes exemplos, e ao Prof. Marcus Sampaio, por instigar a minha vinda para esse curso. Agradeo, tambm, aos colegas da Procuradoria, que tanto me incentivaram. No poderia esquecer de agradecer inestimvel contribuio daqueles que fazem tudo acontecer: os funcionrios do DSC, especialmente as secretrias da COPIN, Aninha e Vera, sempre muito prestativas; D. Ins, pela maravilhosa tapioca com queijo, e as minhas ajudantes, Cona e Zoraide, que cuidaram bem de minha casa, da minha filha e de mim. Finalmente, um agradecimento enorme aos meus amigos e amigas, companheiros de vida, de Campina Grande (vindos de tantos lugares), de Salvador e de Recife, que me deram a fora necessria para realizar esse sonho, compartilhando risos e lgrimas. A tentativa de cit-los poderia incorrer na injustia de algum esquecimento.
iv
Lista de Figuras
Figura 1.1: Grfico comparativo entre a replicao e a gravao sncrona de um buffer.....................................................................................................5 Figura 1.1: Grfico comparativo entre a replicao e a gravao sncrona de um buffer.....................................................................................................5 Figura 2.2: Diagrama da manipulao de arquivos no Unix....................13 Figura 2.2: Diagrama da manipulao de arquivos no Unix....................13 Figura 2.2: Organizao de um sistema de arquivos do Unix, no disco...15 Figura 2.3: Blocos endereados por um n-i de um arquivo Unix............15 Figura 2.4: Tabelas internas do sistema de arquivos do Unix...................17 Figura 2.5: Vises do sistema de arquivos nos clientes NFS.....................26 Figura 2.6: Arquitetura do NFS...................................................................27 Figura 3.1: Exemplo de RAID Nvel 4.........................................................34 Figura 4.1: Uma comparao da organizao de disco do LFS com a do Unix.................................................................................................................46 Figura 4.2: Distribuio de dados nos sistemas Zebra e xFS...................49 Figura 5.3: Funcionamento bsico do SALIUS..........................................65 Figura 5.3: Funcionamento bsico do SALIUS..........................................65 Figura 5.2: Diagrama da manipulao de arquivos no Unix com SALIUS. 74
Figura 5.3: Estado de um sistema de arquivos na ocasio de um crash...78 Figura 5.4: Sistema de arquivos da Figura 5.3, aps gravao dos dados. 79 Figura 5.5: Sistema de arquivos da Figura 5.3, aps a recuperao........80 Figura 5.6: Estado de um sistema de arquivos na ocasio de um crash...81 Figura 5.7: Sistema de arquivos da Figura 5.6, aps gravao dos dados. 82 Figura 5.8: Sistema de arquivos da Figura 5.6, aps a recuperao........83 Figura 5.9: Sistema de arquivos antes do crash.........................................84 Figura 5.10: Restaurao do sistema de arquivos da Figura 5.9..............84 Figura 5.11: Situao especial na recuperao de um crash.....................85 Figura 6.1: Replicao Passiva.....................................................................94 Figura 6.2: Replicao Ativa........................................................................95
vi
Lista de Tabelas
Tabela 1.1: Resultados dos testes de viabilidade..........................................5 Tabela 2.1: Caractersticas das memrias utilizadas na simulao do sistema eNVy..................................................................................................57 Tabela 4.1: Quadro comparativo de trabalhos relacionados....................59 Tabela 5.1: Flags da operaco open, no SALIUS para Unix.....................68 Tabela 5.2: Primitivas do SALIUS..............................................................73 Tabela 5.3: Dados replicados pelas primitivas do SALIUS.......................75 Tabela 7.1: Quadro comparativo do SALIUS com trabalhos relacionados.................................................................................................116
vii
Sumrio
Resumo _____________________________________________________ i Abstract ____________________________________________________ ii Dedicatria _________________________________________________ iii Agradecimentos _____________________________________________ iv Lista de Figuras _______________________________________________ v Lista de Tabelas _____________________________________________ vi 1 Introduo.....................................................................................................1 1.1 Objetivo....................................................................................................2 1.2 Armazenamento Estvel..........................................................................2 1.3 Replicao................................................................................................2 1.4 Enfoque da Pesquisa................................................................................3 1.5 Estudo de Viabilidade..............................................................................4 1.6 Cenrio de Aplicao...............................................................................6 1.7 Contribuies da Dissertao...................................................................7 1.8 Organizao da Dissertao.....................................................................8 2 Sistema de Arquivos Tradicional..............................................................10 2.1 Evoluo dos Sistemas de Arquivos......................................................11 2.2 Sistema de Arquivos do Unix................................................................12
2.2.1 Manipulao de Arquivos........................................................................13 2.2.2 Implementao........................................................................................14
viii
Organizao do Disco.................................................................................14 Endereamento de Blocos...........................................................................15 Gerncia do Espao Livre...........................................................................16 Tabelas Internas...........................................................................................16 Buffer Cache................................................................................................17 Unix FFS.....................................................................................................18
2.5 Concluses.............................................................................................29 3 Evoluo Tecnolgica e o Novo Desafio...................................................30 3.1 Tecnologia para Sistemas de Arquivos..................................................31
3.1.1 Tecnologia de Processador......................................................................31 3.1.2 Tecnologia de Disco................................................................................32
3.1.2.1 Tecnologia RAID........................................................................................33 3.1.2.2 Tecnologia de Armazenamento tico.........................................................35
3.4 Tendncias das Aplicaes....................................................................42 3.5 Enfoque das Pesquisas Atuais................................................................42 3.6 Concluses.............................................................................................44
ix
4 Sistemas de Arquivos Robustos: Estado da Arte....................................45 4.1 Sistema de Arquivos Baseado em Log..................................................45
4.1.1 Localizao e Leitura de Dados...............................................................47 4.1.2 Recuperao de Crash.............................................................................47 4.1.3 Gerncia de Espao Livre........................................................................48 4.1.4 Sistemas Distribudos Baseados em Log.................................................48 4.1.5 Resultados e Anlise Crtica....................................................................49
5.4.2 s_creat.....................................................................................................69 5.4.3 write........................................................................................................70 5.4.4 s_mkdir....................................................................................................71 5.4.5 s_mknod..................................................................................................71 5.4.6 s_link.......................................................................................................71 5.4.7 s_unlink...................................................................................................72 5.4.8 s_chown e s_chmode...............................................................................72
6 Projeto de um Servio de Replicao de Buffers.....................................90 6.1 Requisitos do Servio de Replicao de Buffers...................................90 6.2 Grupo de Rplicas..................................................................................91
6.1.1 A Composio do Grupo de Rplicas......................................................92 6.1.2 A Consistncia das Rplicas....................................................................92
6.4.2 Operaes do Protocolo de Replicao..................................................100 6.4.3 Algoritmo de Replicao.......................................................................101 6.4.4 Algoritmo de Regenerao de uma Rplica...........................................106 6.4.5 Algoritmo de Recuperao....................................................................108
6.6 Consideraes Finais...........................................................................110 7 Concluses.................................................................................................112 7.1 Sumrio da Dissertao........................................................................112 7.2 Anlise do Trabalho.............................................................................114 7.3 Trabalhos Futuros ...............................................................................116 8 Bibliografia................................................................................................118 9 Dados Replicados pelas Primitivas do SALIUS.....................................125
xii
Captulo 1
1 Introduo
A evoluo tecnolgica exerce uma forte influncia nas pesquisas de sistemas computacionais. medida que a tecnologia avana, as caractersticas dos componentes de hardware mudam, exigindo que os algoritmos utilizados para gerenciar os sistemas sejam reexaminados e que novas tcnicas sejam desenvolvidas. As influncias tecnolgicas so particularmente evidentes nos projetos de sistema de arquivos: algumas tcnicas desenvolvidas nas duas ltimas dcadas j se tornaram obsoletas. Um grande problema enfrentado pelos sistemas de arquivos o ritmo evolutivo heterogneo dos componentes de hardware. O projeto de um sistema de arquivos depende da tecnologia de processador, de memria principal, de disco e, mais recentemente, da tecnologia de rede. Nas duas ltimas dcadas, processadores, memrias principais e redes melhoraram por vrias ordens de grandeza, tanto em desempenho, quanto em capacidade. A tecnologia de disco no acompanhou esse desenvolvimento, no que tange ao desempenho, em decorrncia das limitaes impostas pela natureza mecnica dos discos magnticos. A evoluo desigual dos componentes de hardware desafia os sistemas de arquivos a compensarem a lentido dos discos, permitindo que o desempenho cresa com a tecnologia de processador, de memria e de rede. O aumento do desempenho dos sistemas de arquivos deve superar o dos discos. Caso contrrio, as aplicaes sero incapazes de utilizar o rpido aumento da velocidade de processadores e dos demais componentes de hardware, para oferecer um melhor desempenho aos seus usurios. Tradicionalmente, os sistemas de arquivos adotam tcnicas de otimizao de desempenho baseadas na utilizao de memria principal. Porm, essas tcnicas reduzem a confiabilidade do sistema, em decorrncia da volatilidade da memria.
Captulo 1 Introduo 1
Algumas aplicaes necessitam de armazenamento estvel de dados, ou seja, no admitem a perda de informaes, mesmo que ocorram falhas no sistema. Nesse caso, as tcnicas de otimizao baseadas apenas em memria principal no podem ser utilizadas, porque um crash no sistema apaga todo o contedo da memria voltil. Uma soluo bastante simples, para crashes provocados pela interrupo do fornecimento de energia, a utilizao de nobreaks. Porm, essa soluo no atende aos casos de crash do sistema operacional. Os sistemas de arquivos tradicionais oferecem a gravao sncrona, como uma forma de prover armazenamento estvel: a aplicao solicita ao sistema que inicie imediatamente a gravao, em disco, dos dados de uma requisio de escrita e espera pela finalizao da operao de sada. Portanto, os sistemas de arquivos tradicionais obrigam as aplicaes a pagarem um alto custo pelo armazenamento estvel de dados, porque a gravao sncrona vincula o desempenho do sistema ao desempenho dos discos.
1.1 Objetivo
Este trabalho tem como objetivo apresentar a especificao de uma nova tcnica de armazenamento estvel, denominada SALIUS1 SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS , como uma alternativa gravao sncrona em disco. A idia fundamental garantir a sobrevivncia de todos os dados armazenados atravs do uso das primitivas do servio, no caso da ocorrncia de um crash no sistema, e, durante o funcionamento normal, possibilitar um desempenho superior ao obtido por sistemas que adotam a gravao sncrona.
1.3 Replicao
1
SALIUS (do latim) eram os doze sacerdotes de Marte, encarregados da guarda dos escudos sagrados que protegiam a estabilidade da Roma Antiga. Captulo 1 Introduo 2
A replicao possibilita a construo de servios tolerantes a faltas, atravs da reproduo de recursos vitais para o sistema, em componentes com modos independentes de falha. A replicao pode envolver tanto recursos de software, quanto de hardware [Lit92]. A replicao de recursos numa mesma mquina denominada replicao local, enquanto a replicao de recursos em diferentes mquinas de um sistema uma replicao remota. A replicao de dados e informaes de controle possibilita a recuperao de crashes: ao reiniciar, um sistema pode restaurar seu estado anterior ao crash e voltar a operar normalmente. O servio de armazenamento estvel apresentado nesta dissertao realiza a replicao remota de buffers da cache de arquivos. Assim, aps um crash, os dados e os metadados de um sistema de arquivos podem ser recuperados, a partir de uma cpia existente em outra mquina, restaurando o sistema de arquivos para um estado consistente.
Embora a especificao apresentada neste texto enfoque o sistema UNIX, a replicao remota de informaes da cache de arquivos, como uma alternativa gravao sncrona de
Captulo 1 Introduo 3
dados, tambm pode ser aplicada a outros sistemas de arquivos. Assim, a tcnica de armazenamento estvel proposta tem um sentido genrico, embora o sistema de arquivos do UNIX seja utilizado como contexto para a sua descrio.
que a replicao bastante vantajosa para buffers pequenos: replicar um buffer de um kilobyte vinte e cinco vezes mais rpido do que grav-lo no disco.
Tempo mdio de replicao (ms) 0,9 1 6,2 15 16,4 24,3 25,2 34,1 43,2
Tempo mdio de gravao sncrona (ms) 20 25,5 28,1 29 30,1 31,5 32,8 33,8 35,4
O grfico da Figura 1.1 demonstra o comportamento do tempo mdio de replicao e do tempo mdio de gravao sncrona: medida que o tamanho do buffer aumenta, a vantagem da replicao diminui; quando o buffer atinge dezesseis kilobytes, o tempo mdio praticamente o mesmo, para ambos os procedimentos; para buffers maiores, a replicao deixa de ser vantajosa. Portanto, existe um tamanho mximo de buffer (B-max), aps o qual a replicao passa a ser mais lenta do que a gravao sncrona em disco.
Tempo (ms)
Teste Comparativo
50 40 30 20 10 0 0 4 8 12 16 20 24 28
Replicao Gravao Sncrona
Tamanho do Buffer (KB) Figura 1.1: Grfico comparativo entre a replicao e a gravao sncrona de um buffer. primeira vista, portanto, a replicao seria vantajosa, apenas, para sistemas de arquivos com blocos de tamanho pequeno. Porm, uma anlise mais detalhada poderia demonstrar que o tamanho mximo de buffer (B-max) varia de acordo com as caractersticas dos
Captulo 1 Introduo 5
componentes de hardware do sistema (o item 5.7 apresenta as influncias dos componentes de hardware no desempenho da replicao). O B-max derivado da relao entre o tempo mdio de gravao sncrona (TmG) e o tempo mdio de replicao (TmR): se o TmG diminui, ento, o B-max diminui; se o TmR diminui, ento, o B-max aumenta. O tempo mdio de gravao sncrona depende do tempo de acesso a disco: quanto mais rpido o acesso a disco, menor o TmG e tambm menor o B-max. No entanto, as tendncias tecnolgicas apontam para uma melhoria muito tmida do tempo de acesso a disco, em relao aos demais componentes de hardware. Assim, o TmG tende a uma variao muito pequena. O tempo mdio de replicao depende da taxa de transmisso de dados na rede e do tempo de acesso memria principal: quanto mais velozes forem os acessos memria e a transmisso atravs da rede, menor o TmR e maior o B-max. Assim, com o uso de rede de alta velocidade e de memria com tempo de acesso reduzido, pode-se aumentar significativamente o B-max. As tendncias tecnolgicas apontam para um grande aumento na velocidade das redes e para um aumento na velocidade de acesso memria principal bem superior ao crescimento da velocidade de acesso a disco. Assim, as tendncias da tecnologia indicam um provvel crescimento progressivo de B-max. Os testes realizados foram considerados satisfatrios, tendo-se em vista as tendncias da tecnologia e os seguintes fatores: os testes utilizaram uma rede local, com taxa de transmisso mxima de dez megabits por segundo, sendo que atualmente esto disponveis redes com taxas de transmisso bem maiores, de cem megabits, ou na ordem de gigabits por segundo, que devem levar a um aumento no tamanho mximo de buffer; os testes utilizaram os protocolos de comunicao TCP/IP. Por ser orientado conexo e garantir a entrega confivel de mensagens, o TCP incorpora uma sobrecarga de processamento que retarda a transmisso de dados em uma rede convencional; os testes utilizaram processadores Intel 486, capazes de executar, aproximadamente, vinte MIPS (Milhes de Instrues Por Segundo). Atualmente, esto disponveis equipamentos com processadores mais velozes (mais de 500 MIPS) [Int97]; a quantidade de informaes normalmente trafegadas pelo servio pequena. Quando um bloco alterado, o servio envia uma mensagem de replicao contendo o contedo do bloco e um cabealho com informaes de controle, cujo tamanho de apenas algumas poucas dezenas de bytes. Assim, a quantidade de dados trafegados apenas ligeiramente maior que o tamanho do bloco do arquivo (a maioria dos sistemas de arquivos do UNIX utiliza blocos pequenos, sendo 4Kb o tamanho mais adotado).
Captulo 1 Introduo
medida que proliferam os sistemas computacionais ligados atravs de rede, crescem os clientes em potencial do SALIUS. Com o grande desenvolvimento da Internet, muitos servios novos passaram a ser oferecidos. Alguns destes servios requerem alta confiabilidade no armazenamento secundrio de informaes. Um cenrio tpico de aplicao do SALIUS consiste de um servidor de transaes, que utiliza um sistema de arquivos local para a gravao de seus logs. Como as informaes contidas em um log so imprescindveis para a recuperao de informaes gravadas por transaes j confirmadas, os dados de um log precisam de armazenamento estvel. Num sistema de arquivos tradicional, esses dados seriam armazenados atravs de gravao sncrona, o que acarretaria uma perda no desempenho. Estando o servidor de transaes ligado a uma rede local, o SALIUS pode ser utilizado para prover armazenamento estvel, evitando os atrasos introduzidos pelas gravaes sncronas. Sistemas de banco a domiclio e de comrcio eletrnico so exemplos tpicos de aplicaes que poderiam usar esse servio de transaes munido do SALIUS. Por exemplo, quando um cliente de um sistema de banco a domiclio deseja solicitar uma movimentao em sua conta, ele envia um formulrio com os dados necessrios. Ao receber tais informaes, o servidor deve realizar a transao solicitada e enviar uma resposta ao cliente. Os dados da transao precisam ser assegurados. Por isso, o servidor de transaes grava toda a movimentao num arquivo de log, que ser utilizado para aes de recuperao aps um crash. Num sistema de arquivos convencional, a aplicao deveria esperar pela gravao sncrona dos dados do log. Utilizando o SALIUS, os dados do log so replicados na memria principal de mquinas da rede local do servidor de transaes. Como a replicao potencialmente mais rpida do que a gravao sncrona em disco, com o servio oferecido pelo SALIUS, a aplicao pode garantir um melhor tempo de resposta. Adicionalmente, o mecanismo de recuperao para frente do SALIUS garante a restaurao dos dados do log, caso o servidor de transaes sofra um crash.
Captulo 1 Introduo
tcnica de armazenamento estvel proposta nesta dissertao, pelo contrrio, utiliza a tecnologia atualmente disponvel na maioria dos sistemas computacionais; o SALIUS possibilita que os avanos tecnolgicos em curso beneficiem mais o sistema, porque consegue diminuir a influncia da tecnologia de disco no desempenho global do sistema: eliminando a urgncia de gravar dados em disco, o servio permite que o sistema utilize mais agressivamente as tcnicas de otimizao de desempenho, baseadas no armazenamento em memria principal. O desempenho do sistema passa a depender mais dos processadores, da capacidade de memria disponvel, da velocidade de acesso memria, das taxas de transmisso da rede e da banda passante da rede disponvel para esse servio, enfraquecendo o vnculo existente com a tecnologia de disco; o SALIUS pode ser utilizado por sistemas de arquivo de propsito geral; o SALIUS assegura a estabilidade de todos os dados armazenados, atravs do uso de suas primitivas, incluindo as ltimas alteraes realizadas sobre o sistema de arquivos antes de um crash. Para isso, o servio adota um protocolo de replicao capaz de garantir a existncia de, pelo menos, uma cpia dos dados alterados na cache de arquivos, e um mecanismo de recuperao que utiliza essa cpia para restaurar o sistema de arquivos; o SALIUS capaz de tolerar crash de sistema operacional; o mecanismo de recuperao do servio simples e potencialmente rpido: no preciso verificar todos os metadados do sistema de arquivos, detendo-se apenas aos dados e metadados possivelmente afetados pelo crash, ou seja, aqueles que foram alterados na memria principal e replicados.
evidenciando os novos requisitos que precisam ser contemplados pelos projetos de sistema de arquivos. O Captulo 4 apresenta o estado da arte em sistemas de arquivos robustos, descrevendo e analisando, de forma crtica, os trabalhos relacionados, que visam a melhoria do desempenho e da confiabilidade dos sistemas de arquivos. Esse captulo tambm evidencia o diferencial da tcnica de armazenamento estvel proposta. O Captulo 5 apresenta a especificao do Servio de Armazenamento Estvel com Recuperao para Frente Baseado na Replicao Remota de Buffers. Inicialmente, esse captulo descreve os principais objetivos e requisitos do servio. Em seguida, apresenta o funcionamento geral do servio e descreve mais detalhadamente cada parte componente: a Interface, o Servidor de Arquivos Complementar e sua interao com o Servio de Replicao de Buffers, alm do Procedimento de Recuperao. Finalmente, o captulo apresenta consideraes sobre o desempenho e a confiabilidade do SALIUS. O Captulo 6 apresenta o Projeto de um Servio de Replicao de Buffers, descrevendo os requisitos do servio, as caractersticas do grupo de rplicas, o modelo de replicao utilizado, o protocolo de comunicao e o protocolo de replicao do servio. O Captulo 7 apresenta as concluses obtidas e as sugestes de trabalhos futuros, de continuao dos estudos apresentados nesta dissertao.
Captulo 1 Introduo
Captulo 2
2 Sistema de Arquivos Tradicional
Um sistema de arquivos um subsistema do sistema operacional, cujo propsito prover armazenamento de informaes a longo prazo [LS90]. Para isso, o subsistema armazena dados em unidades denominadas arquivos, em dispositivos de armazenamento secundrio, como os discos [Tan92]. Um sistema de arquivos atende s requisies de usurios, realizando operaes sobre os arquivos, tais como: criao, remoo, leitura e escrita. Projeto de sistema de arquivos uma rea de pesquisa da computao relativamente antiga. Muitos projetos j foram propostos e implementados. Esses projetos adaptam-se s mudanas dos sistemas computacionais, provocadas pela evoluo da tecnologia. Este captulo apresenta uma anlise breve da evoluo dos sistemas de arquivos. A especificao do Servio de Armazenamento Estvel com Recuperao para Frente Baseado na Replicao Remota de Buffers, apresentada nesta dissertao, voltada para o ambiente UNIX [RT78], em decorrncia de vrios fatores, dentre eles: o sistema de arquivos do UNIX amplamente utilizado, tanto na academia, quanto comercialmente; existe uma vasta bibliografia disponvel, documentando o funcionamento desse sistema e as pesquisas realizadas ele. Por isso, este captulo descreve as abstraes bsicas e as tcnicas de implementao do sistema de arquivos do UNIX, como ponto de referncia para a discusso sobre tcnicas de otimizao de sistemas de arquivos e tcnicas de armazenamento estvel. Mais propriamente, este captulo descreve a tcnica de armazenamento estvel empregada pelo sistema de arquivos do UNIX, cujo modelo adotado pela maioria dos sistemas de arquivos tradicionais. Adicionalmente, este captulo apresenta algumas tcnicas de otimizao de sistemas de arquivos, e descreve um sistema de arquivos em rede, o NFS [SGK+85], muito utilizado para a integrao de dados de sistemas de arquivos do UNIX.
10
12
Bibliotecas de interface
Chamadas de sistema Sistema de arquivos buffer cache Drivers dos dispositivos de E/S Nvel do ncleo Nvel do hardware Controladores de hardware Hardware
13
O UNIX oferece aos programas de usurio uma interface com muitas opes de chamadas de sistema [AT89]. As chamadas mais utilizadas so: open, utilizada para abrir ou criar um arquivo; read, que permite a leitura de uma quantidade informada de bytes de um arquivo; write, usada para armazenar dados em um arquivo; close, utilizada para fechar arquivos; mkdir, que serve para criar um novo diretrio; link, que permite a criao de um novo nome de caminho para um arquivo; unlink, utilizada para remover um nome de caminho, ou um arquivo inteiro, e seek, que permite alterar a posio corrente no arquivo. Existem, ainda, chamadas de sistema para recuperar e alterar os atributos do arquivo. O sistema de arquivos do UNIX utiliza um mecanismo de buffering, exibido na Figura 2.1 como buffer cache, que regula o fluxo de dados entre o ncleo do sistema e os dispositivos de armazenamento secundrio. O mecanismo de buffering interage com os drivers dos dispositivos de entrada/sada, para iniciar a transferncia dos dados. Alternativamente, o sistema de arquivos pode interagir diretamente com os drivers dos dispositivos de entrada/sada, sem a interveno do mecanismo de buffering.
2.2.2 Implementao
A implementao inicial do sistema de arquivos do UNIX [RT78] muito simples e no utiliza muitas tcnicas de otimizao. No entanto, a sua descrio importante, pois forma a base para as implementaes subseqentes de sistemas de arquivos para UNIX.
Lista de ns-i. Uma seqncia de ns-i, com os atributos de arquivos e diretrios. Blocos de dados. Blocos contendo os dados de arquivos e diretrios.
N-i
Atributos Direto 0 Direto 1
Dados
15
16
A existncia de dois tipos de tabelas, para controlar os arquivos abertos no sistema, tem o objetivo de possibilitar o compartilhamento da posio corrente de um arquivo entre dois processos. Se a entrada na tabela de descritores apontasse diretamente para o n-i do arquivo, a posio corrente desse arquivo seria armazenada nessa tabela, sendo, portanto, de uso exclusivo do processo. Armazenando a posio corrente do arquivo numa tabela separada, o sistema permite que processos filhos utilizem a mesma posio corrente de um arquivo aberto pelo processo pai [Bac86]. Assim, num dado momento, podem existir vrios apontadores para uma mesma entrada na tabela de arquivos abertos, provenientes de processos diferentes, mas que so relacionados. A Figura 2.4 ilustra as trs tabelas mantidas pelo ncleo. Observando dois arquivos abertos no sistema, o arquivo A e o arquivo B, nota-se que cada um possui uma entrada nica na tabela de ns-i. Seguindo as setas, pode-se observar que o processo 1 abriu o arquivo A duas vezes, primeiro para leitura e, a seguir, para escrita, enquanto o processo 2 abriu o arquivo B para leitura.
Processo 1
3 4 Processo 2
(arq A)
(arq B)
A cache implementada numa rea de memria de acesso exclusivo do ncleo. Portanto, no pode ser manipulada diretamente por processos de usurio. O sistema armazena os dados lidos do disco na cache, antes de envi-los para a rea de trabalho do processo de usurio. Uma nica chamada de sistema, para realizao de uma leitura, pode preencher vrios buffers da cache. Os dados permanecem por algum tempo na cache, de modo que requisies seguintes, dos mesmos dados, podem dispensar o acesso ao disco. Portanto, o sistema s precisa ler um dado do disco, se este no estiver disponvel na cache. De modo similar, os dados das operaes de escrita so transferidos da rea de trabalho do processo de usurio para a cache. Normalmente, o sistema de arquivos do UNIX realiza a propagao retardada das alteraes: os dados permanecem na cache, por trinta segundos, antes de ser gravados em disco. Nesse intervalo de tempo, vrias operaes de escrita podem ser realizadas sobre um mesmo bloco, sem que sejam propagadas para o disco. Durante o processamento de uma requisio de escrita, o sistema armazena os dados em buffers da cache, marca tais buffers como sujos e devolve imediatamente o controle para o processo de usurio. Portanto, quando uma operao de escrita retorna como bem-sucedida, o processo de usurio no tem a garantia de que os dados sero efetivamente gravados em disco. A ocorrncia de um crash, nos trinta segundos prximos, ocasiona a perda das modificaes realizadas. Para minimizar o risco de perder dados, a cada trinta segundos, o sistema executa a chamada sync, que realiza a gravao em disco de todos os buffers sujos da cache.
o gerenciamento do espao livre foi alterado, para tornar a alocao de blocos mais rpida. A lista de blocos livres foi substituda por um mapa de bits, que registra o estado de alocao de cada bloco e fragmento do disco. Como o mapa de bits pequeno, ele pode ser mantido na memria, dispensando acessos a disco durante a alocao de blocos; o UNIX FFS possui um novo algoritmo de alocao de blocos, que procura: alocar o n-i e os blocos de um arquivo no mesmo grupo de cilindros; alocar os blocos de um arquivo da forma mais contgua possvel e concentrar, sempre que houver espao, os arquivos de um mesmo diretrio em um nico grupo de cilindros. Dessa forma, o UNIX FFS consegue diminuir a quantidade de posicionamentos do brao, durante o processamento das requisies de acesso.
Quando uma aplicao realiza muitas operaes de escrita, a espera pela gravao sncrona pode comprometer o seu desempenho. Portanto, nem sempre as aplicaes podem arcar com o custo do armazenamento estvel de dados, no sistema de arquivos do UNIX.
20
21
22
23
24
25
O NFS vastamente utilizado em ambientes distribudos, para possibilitar o compartilhamento de arquivos entre sistemas UNIX. Utilizando as operaes de montagem, cada usurio pode criar uma hierarquia de nomes customizada. Assim, cada cliente NFS pode ter uma viso diferente da rvore de diretrios. A Figura 2.5 mostra rvores de clientes NFS: cada cliente pode importar e montar, em qualquer ponto de sua rvore local, diretrios que foram exportados pelos servidores. Dois clientes podem formar rvores bem diferentes.
/
jogos doc bin
/
doc serv
/
etc
trab
prova
trab
prova
trab
jogos
prova
SERVIDOR
CLIENTE 1
CLIENTE 2
O NFS um sistema sem informaes de estado. Para esse tipo de sistema mais fcil permanecer em operao aps uma falta. Cada requisio do cliente contm todas as informaes necessrias ao seu atendimento pelo servidor. Por outro lado, grandes mensagens trafegam pela rede, podendo comprometer o desempenho.
26
O sistema possui dois protocolos: o Protocolo de Montagem, com a funo de permitir que os servidores exportem diretrios e que os clientes os montem em seu sistema de arquivos local, e o Protocolo NFS, para realizao de operaes sobre arquivos remotos. O NFS est organizado em trs nveis, descritos a seguir, e exibidos na Figura 2.6. Nvel de Chamadas de Sistema. Verifica a sintaxe da chamada e valida parmetros, como o descritor de arquivo. Nvel VFS (Virtual File System). Distingue um arquivo local de um arquivo remoto. Para isso, verifica uma tabela com entrada uma para cada arquivo aberto, mantida pelo ncleo, contendo um identificador nico do arquivo em toda a rede, chamado de n-v (n virtual). Quando o arquivo local, o n-v aponta para um n-i do sistema de arquivos local. O VFS, ento, ativa procedimentos especficos desse sistema de arquivos para tratar a requisio. Quando o arquivo remoto, o n-v correspondente aponta para uma entrada na tabela de ns-r (ns remotos), no nvel de Protocolo NFS. Neste caso, o VFS ativa o citado nvel para realizar as requisies remotas. Nvel de Protocolo NFS. responsvel por realizar as chamadas remotas a procedimento para o nvel de Protocolo NFS do servidor apropriado a atender a uma requisio de arquivo remoto. Ele possui uma tabela com um n-r para cada arquivo remoto aberto. Em um n-r esto as informaes necessrias para o acesso ao arquivo, como o endereo do servidor e a autorizao de manipulao do arquivo.
CLIENTE
CHAMADAS DE SISTEMA
SERVIDOR
CLIENTE NFS
SERVIDOR NFS
RPC/XDR
RPC/XDR
DISCO REDE
DISCO
Essa poltica de atualizao de cache de cliente torna a semntica de compartilhamento do NFS confusa e dependente de temporizaes: um novo arquivo pode demorar trinta segundos para tornar-se visvel aos demais clientes do sistema. No NFS, um cliente faz a validao dos dados armazenados em sua cache no momento em que o arquivo aberto. Essa estratgia apresenta um problema em potencial: se um determinado cliente A abre um arquivo para leitura, copiando o mesmo para a sua cache e, a seguir, o cliente B abre o mesmo arquivo para escrita, as alteraes do arquivo realizadas por B no invalidam a cpia de A, pois A no tentar abrir o arquivo novamente. Para solucionar esse problema, os fornecedores do NFS oferecem um mecanismo opcional de bloqueio de arquivos. O sistema NFS implementa apenas caching de leitura nos servidores, gravando diretamente em disco os dados das operaes de escrita [Ste91] (note que o NFS implementa caching no cliente, tanto para operaes de leitura, quanto para operaes de escrita). Uma aplicao que requer armazenamento estvel dos dados, ela no pode se beneficiar com a cache de cliente, nem com a cache de servidor. Ao trmino de uma operao de escrita, o sistema precisa garantir de que os dados foram efetivamente gravados no disco do servidor. Os principais Sistemas de Arquivos Distribudos do mercado no oferecem esse tipo de servio. Tanto no UNIX quanto no NFS, o cliente precisa invocar explicitamente uma operao flush, para obrigar que os dados em buffer sejam gravados em disco. A aplicao espera pelo final da transferncia dos dados para disco. Por isso, o ambiente NFS tambm requer um Servio de Armazenamento Estvel mais eficiente.
2.5 Concluses
O contedo descrito neste captulo evidencia cinco pontos importantes, que devem ser considerados na elaborao do projeto de um servio de armazenamento estvel. Primeiro, tanto um sistema de arquivos tradicional, como o UNIX, quanto um sistema de arquivos em rede, como o NFS, oferecem a gravao sncrona como mtodo de prover estabilidade no armazenamento de dados. Segundo, a gravao sncrona apresenta um alto custo de desempenho. Terceiro, as tcnicas de otimizao baseadas em memria conseguem aprimorar o desempenho, mas diminuem a confiabilidade do sistema. Quarto, as tcnicas de otimizao de disco no conseguem melhorar significativamente o desempenho dos sistemas de arquivos de propsito geral. Quinto, com o advento dos sistemas distribudos, surgiram novas facilidades de comunicao, possibilitando a interao de processos executados em mquinas diferentes.
29
Captulo 3
3 Evoluo Tecnolgica e o Novo Desafio
Este captulo apresenta a motivao para novas pesquisas em tcnicas de armazenamento estvel de dados. O argumento bsico que o mtodo de armazenamento estvel adotado nos sistemas de arquivos tradicionais inadequado para a tecnologia atual. Mais especificamente, o armazenamento estvel de dados, baseado na gravao sncrona em disco, um entrave, cada vez maior, ao desempenho de muitas aplicaes, devido s tendncias da tecnologia corrente. Enquanto estiverem aguardando o processamento das requisies de armazenamento, as aplicaes no sero capazes de explorar plenamente as melhorias tecnolgicas, tais como: processadores, memrias e redes mais velozes. As necessidades de armazenamento das novas aplicaes exigem que os sistemas de arquivos sejam mais eficientes no atendimento aos requisitos de desempenho e confiabilidade. No entanto, as tendncias da tecnologia atual colocam os sistemas de arquivos diante de um impasse entre esses dois requisitos. Basicamente, as tcnicas de otimizao de desempenho adotadas fundamentam-se no uso ostensivo da memria principal. Porm, a volatilidade da memria diminui a confiabilidade do sistema, pois leva ao risco de perda de dados. Assim, as aplicaes que necessitam gravar dados de forma estvel continuam pagando um alto custo de desempenho, para realizar a gravao sncrona dos dados em disco. Paralelamente, ocorrem avanos significativos na tecnologia de redes: as altas taxas de transferncia, disponveis atualmente, representam um recurso em potencial, a ser utilizado nas tcnicas de otimizao de sistemas de arquivos. A tcnica de armazenamento estvel descrita nesta dissertao considera essa e as demais tendncias da tecnologia, assim como as necessidades de armazenamento das aplicaes. O servio proposto no requer tecnologia de hardware especial, nem alteraes no comportamento das aplicaes: possibilita que o sistema de arquivos utilize as mudanas tecnolgicas de modo favorvel.
Captulo 3 Evoluo Tecnolgica e o Novo Desafio 30
31
O exemplo ilustra o conceito conhecido como Lei de Amdahl [Amd67]: se parte de um sistema torna-se mais veloz e a outra parte no, ento o desempenho total ser prejudicado pela parte no melhorada. Na tecnologia atual, a parte que mais evolui so os processadores, enquanto os discos constituem a parte que no progride no mesmo ritmo. Na poca, Amdahl previu que grandes aumentos na velocidade de processadores resultariam apenas em pequenas melhorias no desempenho global do sistema, a no ser que fossem acompanhadas por avanos correspondentes na tecnologia de armazenamento secundrio.
Existem diversas tcnicas para a implementao de redundncia, que variam quanto ao mtodo utilizado para calcular e distribuir a informao redundante atravs do RAID. Embora alguns esquemas de RAID faam uso da codificao de Reed-Solomon ou Hamming, a maioria utiliza paridade. Alguns esquemas de RAID concentram a informao redundante num pequeno nmero de discos, enquanto outros distribuem a informao redundante uniformemente, atravs de todos os discos. A Figura 3.1 exibe um exemplo tpico de RAID Nvel 4. Os dados so segmentados em blocos e espalhados em quatro discos. Um quinto disco armazena os blocos de paridade (P1, P2, ...) contendo os valores calculados atravs da operao XOR (OU-exclusivo) dos blocos correspondentes nos discos de dados. Por exemplo, caba byte em P1 o XOR dos bytes correspondentes nos blocos B1, B2, B3 e B4. Se um disco falhar, sua informao pode ser restaurada, mediante uma simples operao XOR dos blocos de paridade com os blocos de dados correlatos dos outros discos. No exemplo apresentado, a redundncia de apenas vinte e cinco por cento. O espelhamento de disco o RAID Nvel 1, uma forma mais simples de RAID, com redundncia de cem por cento, ou seja, o nmero de discos dobrado [McK96]. O sistema de arquivos do NetWare [MMP94], do Windows NT [Cus94] e de outros realiza espelhamento de discos.
CONTROLADORA RAID
B1 B5
B2 B6
B3 B7
B4 B8
P1 P2
Figura 3.1: Exemplo de RAID Nvel 4. Apesar das melhorias do tempo de transferncia propiciadas pelo uso de RAID, o desempenho de um disco magntico afetado por outros componentes do tempo de acesso, que no possuem muitas opes de otimizao.
Captulo 3 Evoluo Tecnolgica e o Novo Desafio 34
As unidades magneto-ticas utilizam meios magnticos para armazenar informao por controle a laser. Essas unidades empregam cartuchos preenchidos com meios magnticos de leitura/gravao. Para gravar informaes, os discos utilizam as mudanas de polaridade no material magntico quando ele aquecido. Quando o laser aquece o material magntico do disco, torna-se fcil mudar a polaridade do material. Depois que o material esfria, a polaridade fixada dentro da nova orientao. A tecnologia MO oferece armazenamento de dados mais durvel do que a de discos magnticos e disquetes convencionais: os discos so feitos de plstico policarbonato de alta resistncia, semelhante ao material de vidros prova de balas; a camada de dados mantida em segurana entre um sanduche de policarbonato. Adicionalmente, os dados so imunes a campos magnticos, pois sua gravao tambm depende da tecnologia laser. As unidades magneto-ticas so utilizadas em aplicaes de arquivos off-line e, principalmente, para a realizao de cpias de segurana. Embora a tecnologia de armazenamento tico possa oferecer grandes densidades de armazenamento, com alta confiabilidade, seu desempenho ainda bastante inferior ao dos discos magnticos: o tempo mdio de acesso a um CD-ROM cerca de vinte vezes maior que maior que o tempo mdio de acesso a um disco magntico, enquanto uma unidade magneto-tica mais lentas tanto em transferncia, quanto em acesso de dados, do que uma unidade de disco magntico. Por isso, a tecnologia de disco magntico continua sendo o meio padro de armazenamento secundrio nos sistemas computacionais.
36
Com a disponibilidade de grandes memrias principais, possvel implementar tcnicas agressivas de leitura antecipada, que reduzem o tempo mdio de espera das aplicaes. De forma similar, medida que as caches de arquivo aumentam, cresce tambm a frao de requisies de leitura que podem ser atendidas sem a necessidade de fazer acesso a disco, contribuindo positivamente para o desempenho das aplicaes. No caso de caching de escrita, a maior disponibilidade de memria principal no leva a ganhos substanciais no desempenho. O maior benefcio consiste no aumento da eficincia dos acessos a disco, porque permite que o sistema faa a reordenao de um nmero maior de requisies de escrita, quando existe uma fila de pedidos pendentes. No entanto, essa reordenao leva apenas a um aumento modesto do desempenho. O benefcio que a caching de escrita consegue prover ao desempenho de um sistema mais afetado pelo tempo que os dados permanecem na cache, do que pelo tamanho da cache. Quanto mais tempo os dados de escrita permanecem na cache, maior a chance de que sejam absorvidos (reescritos ou apagados). Entretanto, o aumento desse tempo tambm leva a um maior risco de perder dados. Portanto, existe uma limitao das caches de arquivo para reduzir o trfego de escrita em disco, que independe do tamanho da cache [BAD+92]. As aplicaes que precisam gravar dados de forma estvel no admitem qualquer risco de perder dados. Por isso, realizam a gravao sncrona dos dados, sem tirar proveito da caching de escrita. Assim, um sistema de arquivos tradicional no consegue utilizar a memria principal para melhorar o desempenho do armazenamento estvel de dados.
37
A infra-estrutura de redes de alta velocidade permite a construo de sistemas distribudos capazes de realizar comunicao de alto desempenho. Essa facilidade pode ser utilizada nas tcnicas de otimizao de sistemas de arquivos. Por exemplo, a replicao de arquivos em vrias mquinas de um sistema distribudo uma tcnica utilizada para aumentar a disponibilidade e a confiabilidade do sistema [Tan95] [Sat93] [LS90]. Quando um sistema mantm cpias de arquivos em vrios servidores, a falta de alguns servidores no impede o acesso a um arquivo, a partir de uma cpia existente em um servidor em funcionamento. O sistema de arquivos precisa garantir a consistncia das rplicas, refletindo as modificaes de um arquivo em todas as cpias existentes. A atividade extra de propagar as atualizaes de arquivos, para todas as suas respectivas rplicas, provoca uma perda no desempenho, que minimizada quando os dados so transmitidos atravs de redes de alta velocidade. As redes de alta velocidade tambm representam um recurso estratgico para novas tcnicas de armazenamento estvel de dados. Estudos demonstraram que a latncia decorrente de um acesso atravs de uma rede de alta velocidade menor do que a latncia introduzida pela leitura de um bloco num disco local [Dah+94]. Baseado nesse fato, o SALIUS utiliza as redes de alta velocidade para replicar dados da cache de arquivos em vrias mquinas de um sistema distribudo, como forma de prover confiabilidade ao sistema de arquivos, eliminando a necessidade de realizar gravao sncrona de dados.
38
As requisies de armazenamento tambm podem ser classificadas em seqenciais e randmicas. Uma requisio seqencial provoca o acesso a um objeto numa ordem logicamente contgua, como, por exemplo, a leitura de um arquivo do incio ao fim. Qualquer requisio dita randmica, quando no seqencial. A tecnologia RAID beneficia mais as requisies seqenciais do que as randmicas, pois pequenos acessos seqenciais podem ser combinados num grande acesso seqencial, cujos dados podem ser gravados em mltiplos discos, paralelamente. Esse o caso, por exemplo, das aplicaes de supercomputadores, caracterizadas principalmente por acessos seqenciais a grandes arquivos. As requisies randmicas, pelo contrrio, normalmente sofrem maior influncia do tempo de latncia e do tempo de posicionamento dos discos. As aplicaes que realizam operaes de escrita com muita freqncia sofrem maior influncia da tecnologia de disco. Em ambientes de escritrio e engenharia, predominam aplicaes que atualizam dados com freqncia: o desenvolvimento de programas, a preparao de documentos, as simulaes e os projetos interativos. Na rea de suporte a deciso, de modo inverso, as aplicaes raramente modificam dados e prevalecem as operaes de leitura. Nesse caso, o desempenho pode ser otimizado com tcnicas que utilizam memria principal, como caching e leitura antecipada. As aplicaes diferem, ainda, quanto ao nvel de confiabilidade e de desempenho exigidos. Para algumas aplicaes, o desempenho um fator crtico, ao tempo em que admitem a perda eventual de uma pequena quantidade de dados. Por exemplo, no processamento de imagens, caracterizado pela exibio de seqncias de quadros, a perda eventual de alguns quadros no compromete o funcionamento da aplicao. Contudo, um atraso na exibio dos quadros pode chegar a invalidar a aplicao. Outras aplicaes, ao contrrio, exigem alta confiabilidade, no permitindo qualquer perda de dados. Um exemplo tpico um sistema de automao bancria, onde grande parte das operaes envolve valores monetrios, que precisam ser preservados. O desempenho tambm um requisito importante nessa aplicao, embora pequenos atrasos no processamento sejam tolerveis. Em geral, esse sistema caracteriza-se pelo processamento de transaes com muitas requisies de armazenamento, pequenas e randmicas, ou seja, aquelas cujo processamento individual no otimizado pela tecnologia RAID. No entanto, o paralelismo provido pelo uso de RAID possibilita o processamento concorrente de vrias transaes, melhorando o desempenho global do sistema. Como a confiabilidade um requisito fundamental, o sistema deve garantir a estabilidade dos dados armazenados. Portanto, a aplicao precisa realizar a gravao sncrona dos dados. Assim, mesmo com o auxlio de RAID, o desempenho prejudicado pelo tempo de acesso a disco.
39
40
Diferente das tecnologias citadas anteriormente, que possuem muitas possibilidades de evoluo, a tecnologia de discos magnticos est fadada a tornar-se um entrave progressivamente maior ao desempenho dos sistemas. O tempo de acesso a disco depende de movimentos mecnicos, que so muito difceis de aprimorar [WZ94]. Portanto, existe uma tendncia de ampliao da discrepncia entre as velocidades de processador e de disco. Assim, se uma aplicao gera um grande nmero de pequenas transferncias para disco, separadas por posicionamentos, mesmo que conte com processadores muito rpidos, no alcanar um bom desempenho, devido ao atraso introduzido pelos acessos a disco. A adio de memria no-voltil na cache dos sistemas computacionais [BAD+92] uma das tendncias das novas arquiteturas de computadores, permitindo a utilizao de esquemas mais agressivos de caching de escrita. No entanto, sistemas com alta demanda de operaes escrita ainda precisaro de uma forma eficiente de enviar os dados alterados para o disco, quando as caches estiverem cheias. Alm disso, quanto mais tempo os dados armazenados permanecerem na cache, maior a chance de que sejam corrompidos, em funo de um erro de software. O armazenamento no-voltil de dados deve passar, ento, por mudanas radicais, para permitir o surgimento de sistemas mais balanceados, com velocidades crescentes. Outras tecnologias de armazenamento devem substituir os discos magnticos. A tecnologia de discos de estado slido uma forte candidata.
41
O maior empecilho para a utilizao macia dos discos de estado slido so os custos elevados. Portanto, os discos magnticos ainda devem permanecer como o meio de armazenamento secundrio padro, pelo menos na prxima dcada. Por essa razo, uma tcnica eficiente de armazenamento estvel de dados, utilizando a tecnologia de discos magnticos, continua sob demanda.
42
O problema reside no fato da tecnologia de memria ser a principal alternativa utilizada para a implementao de tcnicas de otimizao do desempenho. A volatilidade da memria DRAM conduz os sistemas de arquivos a um impasse entre confiabilidade e desempenho [CNR+96]. As aplicaes que necessitam de alto desempenho e admitem alguma perda de dados adotam uma poltica de consistncia de cache do tipo write back, gravando os dados alterados em disco, de forma assncrona, somente quando requisitado pelo mecanismo de substituio de pginas da cache. Essa estratgia diminui a quantidade de acessos a disco, aumentando, dessa forma, o desempenho do sistema, mas no garante a estabilidade dos dados armazenados: enquanto permanecem na memria principal, os dados so vulnerveis a crashes, ou seja, todo o contedo da memria pode perder- se. As aplicaes que necessitam de armazenamento altamente confivel adotam uma poltica de consistncia de cache do tipo write through, ou seja, assim que um dado alterado na cache, o sistema providencia a transferncia desse dado para o disco. O sistema poderia iniciar a gravao do dado alterado e retornar imediatamente o controle para a aplicao. Entretanto, para garantir a estabilidade dos dados, essa gravao realizada de forma sncrona: o controle s retorna para a aplicao quando a informao j est realmente gravada no disco. Essa estratgia leva degradao do desempenho, porque aumenta o nmero de acessos a disco e obriga a aplicao a esperar pelo trmino da gravao fsica dos dados. O sistema de arquivos do UNIX adota como padro uma poltica de consistncia de cache, denominada dalayed write, que espera trinta segundos antes de enviar os dados alterados na cache para o disco [Bac86]. Essa estratgia minimiza a degradao do desempenho, causada pelas operaes de escrita, se comparada com a poltica de write through. No entanto, torna inevitvel a perda total dos dados escritos nos ltimos trinta segundos, anteriores a um crash [OCH+85]. Alm disso, o ganho no desempenho limitado, pois estudos demostraram que 1/3 a 2/3 do total de dados escritos continuam vlidos aps os trinta segundos [BHK+91] e so, portanto, inevitavelmente gravados em disco. As aplicaes que necessitam armazenar dados de forma estvel, no UNIX, tambm foram uma gravao sncrona, atravs dos comandos sync ou fsync [AT89].
A menos que a tecnologia corrente ou o comportamento das aplicaes sofram mudanas radicais imediatas, atender simultaneamente aos requisitos de confiabilidade e desempenho um importante desafio para os sistemas de arquivos. Muitos trabalhos foram desenvolvidos, com o objetivo de solucionar esse impasse, e alguns deles esto descritos no prximo captulo.
43
3.6 Concluses
A discusso sobre as influncias da evoluo tecnolgica evidenciou pontos importantes: os avanos tecnolgicos trouxeram benefcios ao desempenho de sistemas de arquivos; os componentes de hardware dos sistemas de arquivos evoluem em ritmos diferentes: a velocidade dos processadores apresenta uma taxa de crescimento bem maior do que a velocidade de acesso aos discos magnticos, condenando a tecnologia de disco a tornar-se um entrave progressivamente maior ao desempenho dos sistemas de arquivos; a tecnologia de rede apresenta taxas de transferncia cada vez maiores, mas esse recurso ainda pouco utilizado nas tcnicas de otimizao de sistema de arquivos; existe uma tendncia unnime dos sistemas de arquivos existentes, de utilizar a memria principal para amenizar o impacto negativo da tecnologia de disco. Entretanto, as tcnicas de otimizao baseadas em memria pouco beneficiam as operaes de escrita, especialmente quando a aplicao requer armazenamento estvel; os sistemas de arquivos carecem de uma nova tcnica de armazenamento estvel de dados, capaz de atender aos requisitos de desempenho e confiabilidade das aplicaes.
O SALIUS tem o objetivo de oferecer alta confiabilidade no armazenamento. Adicionalmente, considerando os dados existentes sobre as velocidades de acesso: processador-disco, processador-memria e memria-memria (via rede), uma implementao eficiente do servio provavelmente levar a um sistema capaz de oferecer armazenamento estvel, com desempenho superior gravao sncrona de dados.
44
Captulo 4
4 Sistemas de Arquivos Robustos: Estado da Arte
O contexto atual dos sistemas de arquivos exige solues para que os requisitos de desempenho e confiabilidade sejam atendidos satisfatoriamente. Muitos trabalhos foram desenvolvidos nesse sentido. Alguns enfocam somente a questo do desempenho e buscam solues para diminuir a quantidade de acessos a disco, ou para tornar as operaes de escrita em disco mais eficientes. Outros preocupam-se tambm com a confiabilidade e sugerem mtodos para tornar a memria principal capaz de armazenar dados, de forma persistente. Este captulo descreve trabalhos importantes e apresenta uma anlise crtica dos resultados obtidos.
Num LFS, que mantm os blocos de um arquivo e seus respectivos metadados situados em posies fsicas consecutivas, o acesso a um bloco de dados pode ser realizado atravs de um nico acesso a disco. Em contraposio, na maioria dos sistemas de arquivos, que seguem a organizao de disco do UNIX FFS (Unix Fast File System) [MJL+84], mantendo dados e metadados fisicamente espalhados no disco, uma operao de leitura, ou de escrita de dados, pode provocar vrios acessos a disco, intercalados com posicionamentos da cabea de leitura e gravao. Por exemplo, o UNIX FFS precisa realizar, pelo menos, cinco operaes de sada durante a criao de um arquivo: dois acessos para os atributos de arquivo, pelo menos um acesso para os dados do arquivo, um acesso para os dados do diretrio e outro para os atributos do diretrio. Nos sistemas de arquivos baseados em log, a criao de um arquivo pequeno pode ser realizada com uma nica operao de escrita em disco. O LFS possui estruturas de ndices similares quelas utilizadas pelo UNIX FFS (diretrios, ns-i, blocos diretos e blocos indiretos). A principal diferena que no LFS os ns-i no esto localizados em posies fixas no disco. Quando o LFS altera um bloco de dados, ele sabe que dever grav-lo no final do log. Ento, atualiza o n-i do arquivo, para apontar para a nova posio do bloco alterado e, finalmente, grava o bloco de dados, seguido do n-i, de uma s vez, no final do log. Essa diferena a chave para reduzir o nmero de posicionamentos e de operaes de sada, em requisies contendo pequenas modificaes de arquivos. Quando os ns-i esto em posies fixas, como no UNIX FFS, as alteraes de ns-i, blocos de diretrio e blocos de dados de um arquivo causam pequenas transferncias no seqenciais para o disco.
dir1
arq1
arq2 1 arq1
dir1
dir2
46
A Figura 4.1 mostra como os atributos, os dados e os ndices so alocados no log do LFS e compara a organizao do disco com a do UNIX FFS. A figura apresenta o contedo do disco, nos dois sistemas de arquivos, aps a criao de dois novos arquivos, denominados respectivamente de dir1/arq1 e dir2/arq2, cada um contendo apenas um nico bloco de dados. Cada sistema de arquivos grava o novo bloco de dados e o n-i para arq1 e arq2, mais o novo bloco de dados e o n-i para os diretrios dir1 e dir2. O UNIX FFS requer vrias operaes de sada no-seqenciais, enquanto o LFS armazena todas as informaes necessrias em uma nica e grande operao de escrita para disco.
48
Memrias de clientes Log de escrita do cliente1 Log de escrita do cliente2 Segmento de log Segmento de log
Fragmentos do log
Fragmento de paridade
Fragmentos do log
Fragmento de paridade
3
REDE
1 A
2 B
3 C
Discos de servidores
Nos dois sistemas, preciso existir um mecanismo de limpeza de segmentos que cria segmentos limpos e um gerente de arquivos que informa onde os clientes armazenam os dados ao longo do log. As principais diferenas entre os dois sistemas so: no sistema Zebra, os clientes espalham os dados dos seus logs por todos os discos da rede, enquanto no xFS, existem grupos de espalhamento de dados, ou seja, cada cliente espalha os dados de seu log apenas nos discos que pertencem ao seu grupo; no sistema Zebra, o gerenciamento centralizado, existindo apenas um gerente de arquivos e um nico limpador de segmentos, enquanto no xFS, o gerenciamento descentralizado, ou seja, existem vrios gerentes de arquivos e uma tabela, globalmente replicada, associa cada arquivo ao seu gerente, possibilitando que qualquer cliente possa identificar rapidamente o gerente de um arquivo. Alm disso, o xFS implementa um limpador de segmentos distribudo.
Agrupando os dados alterados na memria, para depois grav-los, atravs de uma nica e contnua operao de sada, o LFS consegue utilizar plenamente a banda passante do disco. Porm, essa estratgia diminui a confiabilidade do sistema. A ocorrncia de um crash provoca, necessariamente, a perda de dados. O mecanismo de recuperao para frente leva o sistema a um estado consistente, considerando apenas o contedo j gravado no log, antes da falta. O sistema no consegue recuperar os dados que estavam na cache no momento imediatamente anterior ao crash. Portanto, o LFS no consegue prover armazenamento estvel de dados. Os resultados das pesquisas realizadas demonstraram que o LFS s apresenta vantagens de desempenho sobre o UNIX FFS nas pequenas operaes de escrita. Em escritas longas e nas operaes de leitura, ambos os sistemas apresentam desempenhos equivalentes. Assim, os resultados do LFS so vantajosos apenas no ambiente para o qual foi projetado, ou seja, aquele cujas aplicaes realizam um grande nmero de pequenas operaes de escrita. A contribuio dos sistemas baseados em log, aumentando eficincia da utilizao dos discos magnticos, durante o processamento de pequenas requisies de escrita, apenas ameniza, mas no resolve o impacto negativo dessa tecnologia no desempenho. A natureza mecnica dos discos magnticos dificulta a reduo do tempo de acesso, predestinando o aumento da discrepncia existente entre a velocidade dos processadores e a velocidade de acesso a disco. O LFS tambm apresenta problemas de segurana, pois no consegue garantir privacidade de dados [Sta97]. Ele sempre aloca blocos novos, no final do disco, para gravar os novos dados. Portanto, as informaes apagadas do sistema de arquivos no so sobrescritas de imediato e permanecem no disco por algum tempo.
O trabalho de Mary Baker [BAD+92] estendeu os benefcios da memria no-voltil para o escopo de sistema de arquivos distribudo, demonstrando que a adio de pequenas quantidades de NVRAM, na memria cache de clientes, pode diminuir o trfego de rede cliente-servidor, decorrente de operaes de escrita. Esse trabalho foi implementado no sistema de arquivos Sprite LFS [RO92] e pode ser dividido em dois tpicos principais: a utilizao de NVRAM na cache de cliente e a utilizao de NVRAM na cache de servidor.
O modelo de cache unified apresenta vantagens sobre o modelo write-aside, pois gera menos trfego no barramento de memria, contribuindo, dessa forma, para um melhor desempenho do sistema. Alm disso, o espao da NVRAM tambm utilizado para armazenar dados solicitados por operaes de leitura.
51
52
o modelo de cache unified atingiu resultados melhores que o modelo write-aside, contribuindo para reduzir o trfego cliente-servidor, tanto nas operaes de leitura, quanto nas operaes de escrita; a introduo de memria NVRAM na cache de servidor resultou numa reduo de, pelo menos, vinte por cento dos acessos a disco, chegando at noventa por cento, numa simulao com o mesmo sistema de arquivos, sob utilizao intensa.
53
54
55
56
TIPO DE MEMRIA
Flash RAM SRAM
QUANTIDADE
2 Gb 16 Mb
TEMPO DE LEITURA
85 ns 85 ns
TEMPO DE ESCRITA
4 10 ms 85ns
Tabela 2.1: Caractersticas das memrias utilizadas na simulao do sistema eNVy. Os resultados da simulao foram os seguintes: tempo de latncia mdio de cento e oitenta nanossegundos, para as leituras, e de duzentos nanossegundos, para as escritas;
57
conforme a taxa de transaes por segundo for aumentando, mais dados vo sendo armazenados na memria. Quando o nvel de enchimento da Flash RAM ultrapassa oitenta por cento, o tempo das operaes de escrita aumenta para aproximadamente sete microssegundos, devido ao tempo consumido pelo mecanismo de limpeza.
4.5 Concluses
A Tabela 4.1 resume as principais caractersticas dos diversos trabalhos apresentados neste captulo. Todos eles visam melhorar o desempenho dos sistemas de arquivos e apresentam resultados positivos, em maior ou menor escala. Em alguns casos, o desempenho do sistema s vantajoso para um ambiente especfico, como alguns sistemas baseados em log [RO92] [SBM+93], projetados para aplicaes com predominncia de pequenas operaes de escrita, como os sistemas de automao de escritrio, e o sistema eNVy [WZ94], projetado para aplicaes com base de dados de pequeno e mdio portes. A melhoria no desempenho provida por sistemas baseados em log [ADN+95] [HO95] [RO92] [SBM+93] resulta da utilizao mais eficiente dos discos, durante as operaes de escrita. Assim, conseguem amenizar, temporariamente, o impacto negativo da tecnologia de disco magntico no desempenho. Porm, as tendncias da tecnologia, apresentadas no captulo anterior, apontam a necessidade de desvincular o desempenho do sistema do desempenho dos discos, o que no acontece em tais sistemas. A utilizao de cache de NVRAM [BAD+92] s consegue prover ganhos no desempenho enquanto a memria NVRAM tiver capacidade para armazenar os dados das operaes de escrita, evitando acessos a disco. Um aumento do trfego de escrita pode esgotar o espao da NVRAM, gerando a necessidade de transferir dados para o disco.
58
Os sistemas baseados em log no garantem a estabilidade dos dados armazenados. Os demais trabalhos apresentados conseguem garantir confiabilidade no armazenamento de dados: a cache de NVRAM, o Rio File Cache [CNR+96] e o sistema eNVy [WZ94]. Eles buscam capacitar a memria principal para armazenar dados de forma estvel. Todos utilizam algum hardware especial, ou seja, dispositivos que no fazem parte da arquitetura dos computadores utilizados em larga escala. A adoo desses dispositivos especiais geralmente implica em custos altos. Somente os sistema baseados em log e o Rio File Cache incluem um mecanismo de recuperao de crash. No caso dos sistemas baseados em log, o procedimento de recuperao utiliza apenas as informaes gravadas no log, para restaurar a consistncia do sistema de arquivos. Desse modo, as informaes presentes na cache, no momento do crash so irremediavelmente perdidas. Com exceo, do sistema eNVy, desenvolvido para um ambiente especfico, os demais trabalhos podem ser utilizados como sistemas de propsito geral. Embora o LFS [RO92] tenha sido desenvolvido para atender as necessidades de um ambiente bem definido, os sistemas baseados em log podem ser utilizados por aplicaes de diversas naturezas, sendo que o desempenho apresentado pode variar de um ambiente para outro.
SISTEMAS BASEADOS EM LOG CACHE DE NVRAM RIO FILE CAHE SISTEMA ENVY
ARMAZENAMENTO
ESTVEL
MELHORIA NO
DESEMPENHO
HARDWARE
ESPECIAL
MECANISMO DE
RECUPERAO
PROPSITO
GERAL
SIM NO SIM NO
Nenhum dos trabalhos apresentados constitui uma tcnica de armazenamento estvel de propsito geral a um custo acessvel, com desempenho superior gravao sncrona de dados, capaz de desvincular o desempenho do sistema do desempenho dos discos e de oferecer um mecanismo de recuperao para frente.
59
Captulo 5
5 Especificao do SALIUS
Este captulo apresenta a especificao de uma nova tcnica de armazenamento estvel, denominada SALIUS SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS , que visa atender, simultaneamente, aos requisitos de confiabilidade e desempenho de aplicaes que necessitam gravar dados de forma estvel, utilizando a tecnologia ora disponvel. Ele descreve os conceitos bsicos e as tcnicas empregadas, incluindo como os sistemas de arquivos so alterados, como a replicao utilizada e como a recuperao de crash realizada. O SALIUS um software capaz de realizar operaes sobre arquivos, de forma estvel, sempre que requisitadas pelos seus clientes. O SALIUS um software complementar ao sistema de arquivos, disponibilizando novas operaes de manipulao de arquivos para os clientes. Um cliente do servio um programa de usurio, ou seja, o mesmo cliente usual de um sistema de arquivos. Um cliente faz requisies ao SALIUS, quando deseja manipular um arquivo de forma estvel. Assim, o SALIUS um complemento do servio de arquivos, capaz de garantir a estabilidade dos efeitos de operaes realizadas sobre arquivos, a despeito da ocorrncia de crashes. Este Captulo apresenta os principais objetivos do SALIUS e os requisitos que devem ser cumpridos pelo servio, descreve o funcionamento geral do SALIUS e a interao entre seus componentes. A seguir, cada parte componente do SALIUS descrita em detalhe. Finalmente, algumas consideraes sobre o desempenho e a confiabilidade do servio so apresentadas.
60
5.2 Requisitos
O SALIUS deve atender a certos requisitos, para que consiga atingir os seus objetivos.
5.2.3 Transparncia
A transparncia pode ser analisada sob vrios aspectos. Na abordagem do SALIUS, a transparncia se traduz na iluso do usurio de que o comportamento do sistema de arquivos original permanece inalterado. O servio deve esconder da aplicao as aes internas, executadas com a finalidade de prover estabilidade. Para isso, deve ser transparente em alguns aspectos: transparente quanto localizao, ou seja, o programa de usurio no precisa saber onde os dados esto sendo replicados, nem de qual mquina sero recuperados; transparente quanto replicao, ou seja, a aplicao no deve tomar conhecimento de quantas rplicas existem, nem das aes necessrias para manter a consistncia; transparente quanto falha: deve oferecer meios de mascarar falhas, quando possvel, e, quando no, deve efetuar medidas de recuperao.
O SALIUS no precisa prover transparncia de acesso. O modo como um usurio invoca uma operao no servio pode ser diferente da forma como a mesma operao invocada no sistema de arquivos original. Isso porque, para a maioria das operaes, a semntica assumida no SALIUS difere da semntica do sistema de arquivos original. Se comparado com a gravao assncrona de dados, o servio, normalmente, consome mais recursos e apresenta um desempenho inferior, em decorrncia da replicao de dados. Em muitas ocasies, a aplicao no necessita pagar pela estabilidade de dados. Para prover flexibilidade ao usurio, de optar pela utilizao do servio, de acordo com a sua convenincia, a transparncia de acesso pode ser sacrificada.
62
Servio de Replicao de Buffers: um software que prov a replicao confivel de buffers, ou seja, garante o armazenamento de cpias das alteraes realizadas num sistema de arquivos. Adicionalmente, esse servio fornece as informaes necessrias para restabelecer o sistema de arquivos a um estado consistente, preservando os dados estveis. O Servio de Replicao de Buffers implementado por um ou mais processos Servidores de Replicao de Buffers (SRB) e possui dois tipos de clientes diferentes: o SAC e o Procedimento de Recuperao; Procedimento de Recuperao: um software que restabelece a consistncia do sistema de arquivos, aps um crash. O procedimento de recuperao interage com o SRB para recuperar as informaes replicadas, necessrias para restaurar a consistncia do sistema de arquivos, mantendo as informaes estveis.
Se uma aplicao quiser atualizar um arquivo, de forma estvel, basta invocar uma primitiva do SALIUS. Ento, o controle passa para o Servidor de Arquivos Complementar (SAC), que executa a operao requisitada: para isso, o SAC atualiza as estruturas do sistema de arquivos, em memria, e interage com o Servidor de Replicao de Buffers (SRB), solicitando a replicao de todas as alteraes efetuadas. O SRB realiza a replicao e envia uma resposta ao SAC, confirmando a estabilidade dos dados. Uma mensagem de confirmao s pode ser enviada quando o SRB puder garantir, com uma determinada probabilidade, que a informao est estvel. Somente aps receber a confirmao do SRB, o SAC retorna o controle para o programa de usurio, informando que a operao requisitada foi realizada com sucesso. Se a mensagem de confirmao no chega dentro de um intervalo de tempo predefinido, o SAC assume que o SRB falhou. Nesse caso, o SAC fora a gravao de todos os dados do sistema de arquivos alterados na memria e ainda no propagados para o disco, passando a estabilizar as informaes atravs de gravaes sncronas. Quando o SRB se recupera de uma falha, o SAC volta a utilizar o servio de replicao. O funcionamento bsico do SALIUS pode ser observado na Figura 5.1. A mquina 1 possui um sistema de arquivos, acrescido do Servidor de Arquivos Complementar do SALIUS, e um processo usurio U, que invoca uma primitiva do SALIUS para alterar um arquivo, passando os dados alterados como parmetro, num buffer de usurio. Quando a primitiva executada, o SAC copia esses dados para a buffer cache. Se necessrio, o superbloco e o n-i do arquivo tambm so atualizados. A seguir, num tempo t, o SAC envia as estruturas alteradas para o Servidor de Replicao de Buffers, executando na mquina 2. O SRB recebe as informaes enviadas e, depois de armazen-las na memria principal, envia uma mensagem de confirmao para o SAC. Se o SAC receber uma confirmao, dentro de um intervalo de tempo predefinido ( t ), ento retorna o controle para o processo U, informando o sucesso da operao. Caso contrrio, o SAC detecta que o SRB falhou e realiza a gravao sncrona dos dados em disco, antes de retornar.
Captulo 5 Especificao do SALIUS 64
Servidor de Arquivos
Servidor de Replicao
primitiva Processo U
Buffer de usurio
S
Processo SRB Superbloco Buffer cache Tabela de Ns-i
Se a replicao confirmada no tempo esperado ( t t + t ), os dados alterados na memria principal da mquina 1 permanecem na cache por um certo tempo e depois so gravados em disco, de forma assncrona, como no funcionamento padro do sistema de arquivos do UNIX. Assim, o SALIUS possibilita que o sistema de arquivos do UNIX realize caching de escrita e oferea armazenamento estvel, simultaneamente. A depender da relao entre o volume de dados alterados e a capacidade de memria principal disponvel nas mquinas do sistema, o tempo de permanncia dos dados alterados na cache pode ser aumentado para um valor maior do que o valor padro (que de trinta segundos, no UNIX), contribuindo para um melhor desempenho do sistema. O Servidor de Replicao de Buffers recebe os dados replicados e os armazena num log, mantido inicialmente na memria principal. Quando o espao na memria torna-se escasso, uma parte das informaes replicadas transferida para um disco. Periodicamente, o SRB realiza uma operao de limpeza do log, descartando as informaes que j tenham sido gravadas em disco, na mquina 1. Finalmente, aps um crash, o procedimento de recuperao do SALIUS deve ser executado, para restaurar a consistncia do sistema de arquivos. O procedimento de recuperao envia uma mensagem ao SRB, solicitando todos os dados replicados antes do crash. O SRB responde, fornecendo as informaes requisitadas. A seguir, o procedimento de recuperao grava tais informaes no sistema de arquivos, em disco.
65
O Servio de Replicao de Buffers, ilustrado na Figura 5.1, implementado por um nico processo servidor. Porm, esse servio pode ser implementado por vrias rplicas desse processo, executando em diferentes mquinas do sistema, com o objetivo de aumentar a sua confiabilidade, como no projeto apresentado no Captulo 6.
66
67
5.4.1 open
A primitiva open utilizada para abrir um arquivo existente, ou criar e abrir um novo arquivo. Atravs dela, o usurio pode optar pela utilizao do SALIUS. Sintaxe: fd = open(pathname, flags, mode)
fd um descritor de arquivo, que retornado para a aplicao; pathname o nome de caminho do arquivo; flags uma combinao de bits, com diretrizes importantes, resumidas na Tabela 5.1; mode contm as permisses de acesso associadas ao arquivo. Esse parmetro s obrigatrio para a criao de um arquivo.
A sintaxe do open do UNIX foi ligeiramente alterada, adicionando a opo O_STABLE no parmetro flags. Ao informar este flag, o usurio faz a opo de utilizar o SALIUS na manipulao do arquivo.
O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_STABLE O_EXCL O_TRUNC O_SYNC O_NOCTTY O_NDELAY
O arquivo aberto apenas para leitura. O arquivo aberto apenas para escrita. O arquivo aberto para leitura e escrita. Todas as escritas iro adicionar dados ao final do arquivo. Se o arquivo existir, no tem efeito algum. Caso contrrio, o arquivo criado e o parmetro mode deve ser especificado. Todas as alteraes do arquivo sero realizadas pelo SALIUS. O arquivo aberto em modo exclusivo. A operao retorna um erro, se o arquivo existir e o O_CREAT estiver prescrito. Se o arquivo existir, seu tamanho truncado para zero. Indica a gravao sncrona de todas as alteraes do arquivo. O Terminal especificado em pathname torna-se o terminal de controle. Afeta todas as leituras e escritas subseqentes. Se uma operao de leitura, ou escrita, no puder ser realizada, retorna, imediatamente, com erro, sem entrar em uma condio de bloqueio.
68
Semntica: a primitiva open abre o arquivo especificado em pathname, na forma indicada em flags. Se o arquivo no existir e o flag O_CREAT for informado, open realiza a criao do arquivo e armazena, no n-i associado, as permisses de acesso contidas em mode. Normalmente, o arquivo posicionado no incio, mas, se o flag O_APPEND for informado, o apontador da posio corrente inicializado com o tamanho do arquivo. Se o bit O_TRUNC estiver ligado, open ajusta o tamanho do arquivo para zero, liberando todos os blocos de dados. Finalmente, retorna um descritor de arquivos fd para o processo, atravs do qual o processo passa a referenciar o arquivo, nas chamadas de sistema subseqentes. Caso acontea algum erro, open retorna o valor -1 no fd. Quando o O_STABLE informado, todas as operaes de escrita subseqentes realizam o armazenamento estvel, usando a replicao do SALIUS. O_STABLE tambm afeta o comportamento da primitiva open, quando associado aos flags O_CREAT ou O_TRUNC: o open s retorna para a aplicao, quando as alteraes realizadas estiverem estveis, isto , gravadas em disco ou replicadas.
5.4.2 s_creat
A primitiva s_creat a verso estvel do creat original do UNIX, utilizada para criar um arquivo regular, ou rescrever sobre um existente. Sintaxe: fd = s_creat(pathname, mode)
fd um descritor de arquivo, que retorna para a aplicao; pathname o nome de caminho do arquivo; mode contm as permisses de acesso associadas ao arquivo.
Semntica: a primitiva cria um novo arquivo, com o nome indicado em pathname, e armazena as permisses de acesso, informadas em mode, no n-i associado. Se o arquivo existe, s_creat trunca o seu tamanho para zero. Aps ser criado, com sucesso, o arquivo aberto exclusivamente para escrita, com a opo O_STABLE, ou seja, indicando que deve ser alterado de forma estvel. A primitiva s_creat retorna um descritor do arquivo em fd, para uso em outras primitivas, ou retorna o valor -1, caso ocorra algum erro. A primitiva s retorna, aps realizar a replicao, ou gravao em disco dos dados alterados: o superbloco, o n-i do arquivo e do diretrio pai e a entrada do arquivo no diretrio pai.
69
5.4.3 write
A primitiva write utilizada para escrever dados em um arquivo. Sintaxe: num = write(fd, address, nbytes)
fd o descritor do arquivo; address o endereo de uma estrutura, na rea de memria da aplicao, contendo os dados que devem ser escritos no arquivo; nbytes indica o nmero de bytes que devero ser escritos; num retorna com o nmero de bytes gravados.
Semntica: a primitiva write tenta gravar nbytes de um buffer, apontado por adderess, no arquivo associado ao descritor fd. Se a operao for bem-sucedida, retorna em num o nmero de bytes efetivamente gravados, normalmente igual ao valor de nbytes. De outro modo, num retorna com o valor -1, indicando um erro. No retorno, write atualiza o apontador da posio corrente do arquivo, adicionando o nmero de bytes gravados. A primitiva write original adota, como padro, a gravao assncrona de dados. Desse modo, quando write retorna, as modificaes realizadas no arquivo ficam armazenadas na memria principal, em estruturas como a buffer cache, a tabela de ns-i e a cpia do superbloco. Posteriormente, essas mudanas so transferidas para o disco, de forma assncrona. Portanto, o usurio no tem garantias relativas estabilidade dessas informaes, que podem ser apagadas por um crash do sistema. Se o arquivo foi aberto com o bit O_SYNC ligado, write realiza a gravao sncrona de dados, ou seja, s retorna quando todos os dados e metadados do arquivo estiverem gravados em disco. Nesse caso, a aplicao tem a garantia de que as informaes gravadas podem sobreviver a crashes. Se o arquivo for aberto com o flag O_STABLE ligado, ou se for criado atravs da primitiva s_creat, write realiza o armazenamento estvel de dados, ou seja, s retorna aplicao, indicando sucesso, quando ocorre uma das seguintes situaes: as modificaes realizadas no sistema de arquivos esto armazenadas na memria principal e existem cpias dos dados e metadados alterados no Servidor de Replicao de Buffers. Posteriormente, essas mudanas sero transferidas para o disco, como na gravao assncrona; todos os dados e metadados do arquivo, alterados pela operao de escrita, j esto gravados em disco.
70
5.4.4 s_mkdir
Primitiva utilizada para criar um novo diretrio. Sintaxe: s_mkdir(pathname, mode)
pathname o nome de caminho do novo diretrio; mode contm as permisses de acesso ao novo diretrio.
Semntica: a primitiva s_mkdir cria um novo diretrio, com o nome pathname, com as permisses de acesso especificadas em mode. O novo diretrio criado vazio, com exceo das duas entradas, . e .., apontando, respectivamente, para o prprio diretrio e para o diretrio pai. A primitiva s retorna quando os dados alterados estiverem estveis: replicados ou gravados em disco.
5.4.5 s_mknod
A primitiva s_mknod utilizada para criar um arquivo regular, um pipe com nome, um diretrio ou um arquivo especial. Sintaxe: s_mknod(pathname, type-mode, dev)
pathname o nome de caminho do n-i a ser criado; type-mode contm o tipo de arquivo e as permisses de acesso; dev especifica o maior e o menor nmero de dispositivo, para os arquivos especiais.
Semntica: a primitiva cria o arquivo especificado em pathname e armazena o tipo de arquivo e as permisses de acesso, informados em type-mode, no n-i associado. Se o arquivo for especial, de caracter ou blocado, o menor e o maior nmero de dispositivo informados em dev tambm so armazenados no n-i. A primitiva s retorna aps a replicao, ou gravao em disco, dos dados alterados.
5.4.6 s_link
A primitiva s_link cria uma nova entrada de diretrio para um arquivo existente. Sintaxe: s_link(pathname1, pathname2)
pathname1 o nome de caminho do arquivo existente; pathname2 o novo nome de caminho associado ao arquivo.
71
Semntica: a primitiva s_link associa o arquivo indicado por pathname1 ao nome de caminho pathname2, na estrutura de diretrios do sistema de arquivos. Para isso, cria uma nova entrada para o n-i do arquivo, no diretrio indicado em pathname2. A primitiva s retorna aplicao, quando todas as estruturas alteradas no sistema de arquivos estiverem replicadas, ou gravadas em disco.
5.4.7 s_unlink
A primitiva s_unlink utilizada para remover uma entrada de diretrio e/ou excluir um arquivo. Sintaxe: s_unlink(pathname)
Semntica: a primitiva s_unlink remove a entrada de diretrio indicada em pathname. Quando a ltima entrada de diretrio de um arquivo removida, o arquivo excludo do sistema. Para isso, s_unlink libera todos os blocos de dados do arquivo e o seu n-i. A primitiva s retorna aps a replicao, ou gravao em disco, das alteraes realizadas.
Semntica: as primitivas s_chown e s_chmode alteram informaes armazenadas no n-i do arquivo indicado em pathname. Elas no afetam os blocos de dados do arquivo. A primitiva s_chown passa o direito de propriedade sobre o arquivo para o usurio owner, pertencente ao grupo indicado em group, enquanto s_chmode atribui as permisses de acesso, informadas em mode, ao arquivo. Ambas realizam a replicao do n-i do arquivo.
72
A Tabela 5.2 relaciona as primitivas do SALIUS com as primitivas correspondentes do sistema de arquivos do UNIX e descreve, sucintamente, a funo de cada primitiva.
PRIMITIVA NO UNIX
open write creat mkdir mknod link unlink chown chmode
PRIMITIVA NO SERVIO
Open Write s_creat s_mkdir s_mknod s_link s_unlink s_chown s_chmode
OPERAO
Criao e/ou abertura de um arquivo. Escrita de dados em um arquivo. Criao de um arquivo regular. Criao de um diretrio. Criao de um arquivo de qualquer tipo: regular, diretrio, especial de caracter, especial blocado ou pipe. Criao de uma nova entrada de diretrio para um arquivo existente. Remoo de uma entrada de diretrio de um arquivo existente. Alterao do proprietrio de um arquivo. Alterao das permisses de acesso de um arquivo.
73
Processos de usurio Primitivas do Unix Nvel do usurio Chamadas do Unix Sistema de arquivos UNIX buffer cache Drivers dos dispositivos de E/S Nvel do ncleo Nvel do hardware Controladores de disco Hardware de disco Drivers de rede Controladores de rede Hardware de rede Chamadas do SALIUS SAC do SALIUS Primitivas do SALIUS
74
X X X X
X X X
X X X X X
X X X X X
O superbloco pode ser alterado por quase todas as primitivas do servio, porque ele contm um sumrio de informaes sobre o sistema de arquivos. As mudanas no estado do sistema, em geral, modificam essas informaes. Por exemplo, qualquer alterao que implique na alocao ou na liberao de blocos de dados, ou de ns-i, tambm altera o superbloco, porque ele contm a lista de ns-i livres, o incio da lista de blocos livres e contadores com o nmero de ns-i livres e o nmero de blocos livres. O n-i de um arquivo pode ser alterado por todas as primitivas do servio: a adio e remoo de blocos de dados pode alterar a tabela de endereos armazenada no n-i; as operaes de criao de arquivos e diretrios alocam um n-i para o novo arquivo; operaes de criao e remoo de entradas de diretrio alteram o contador de referncias do n-i; certos atributos do arquivo, armazenados no n-i, podem ser explicitamente alterados, como o proprietrio e as permisses de acesso. Algumas primitivas alteram blocos de dados de um arquivo. A primitiva write sempre altera um ou mais blocos de dados. As primitivas s_mknod e s_mkdir tambm alteram blocos de dados, quando esto criando um diretrio, pois gravam, no primeiro bloco de dados do diretrio, as entradas contendo, respectivamente, o n-i do prprio diretrio e o n-i do diretrio pai. Certas primitivas alteram dados do diretrio pai de um arquivo, criando ou removendo entradas de diretrio para o arquivo. So as primitivas utilizadas para criar um novo arquivo, como s_creat, open, s_mkdir e s_mknod, ou primitivas que manipulam diretamente as entradas de diretrio, como s_link e s_unlink. Muitas vezes, essas alteraes exigem que novos blocos de dados sejam alocados para o diretrio pai, que aumenta de tamanho, alterando, conseqentemente, o n-i desse diretrio.
75
Nem sempre uma primitiva altera todos os dados contidos no conjunto a ela associado. A primitiva write, por exemplo, sempre altera blocos de dados. Porm, somente em algumas situaes um write precisa alterar o superbloco. A seguir, sero apresentados os dados alterados pelas primitivas s_creat, open e write. O Apndice A contm uma anlise dos dados alterados por todas as primitivas do SALIUS.
76
O mecanismo de recuperao do SALIUS se enquadra na classe de recuperao para frente: todos os dados e metadados atualizados no sistema de arquivos, que so perdidos em decorrncia de um crash, permanecem guardados no Servidor de Replicao de Buffers; o mecanismo de recuperao obtm esses dados e providencia a grav-los no disco, na mesma ordem em que foram gerados. Assim, o mecanismo de recuperao do SALIUS garante a durabilidade dos efeitos de operaes realizadas antes do crash. A seguir, sero apresentados, em detalhes, os possveis estados das estruturas de dados do sistema de arquivos, na ocasio de um crash, e as solues asseguradas pelo mecanismo de recuperao do SALIUS.
t1
S
n1 n2 n3 n4
S
sb n1 b2 n2 b3 n3 b4 n4 b5
b1
b2 b3 b4 Buffer Cache
b5
b1
Estruturas na memria Dado no alterado Dado alterado por uma primitiva do SALIUS
Estruturas no disco
78
Nas figuras desta seo, constam os componentes de um sistema de arquivos UNIX, em disco: o superbloco, os ns-i e os blocos de dados. O sistema realiza caching de tais componentes, com o objetivo de diminuir a quantidade de acessos a disco. Na memria, esses dados ficam armazenados em estruturas auxiliares: o superbloco copiado para um superbloco auxiliar, o contedo dos blocos de dados carregado na buffer cache, enquanto os ns-i so carregados na tabela de ns-i. Todas as figuras foram configuradas de forma didtica: na estrutura real de um sistema de arquivos em disco, normalmente, existe um nmero bem maior de ns-i e de blocos de dados, que no precisam estar armazenados contiguamente, nem de forma ordenada. As figuras exibem possveis estados dos dados mantidos em memria: os componentes em branco esto com o mesmo contedo lido do disco, significando que no sofreram alteraes; os componentes hachurados foram alterados, atravs de chamadas de sistema originais do sistema de arquivos do UNIX; os componentes em preto foram atualizados por primitivas do SALIUS. Na Figura 5.3, por exemplo, alguns dados modificados j foram gravados em disco, tornando-se, portanto, estveis: n-i n2 e blocos b2 e b4. Porm, a maioria das alteraes foi realizada apenas na memria. Na hiptese de no acontecer o crash e do sistema de arquivos permanecer inacessvel para atualizaes, durante um certo perodo, existir um tempo t2, quando todos os dados alterados na memria estaro estveis. Isso porque os sistemas de arquivos do UNIX gravam todos os dados no disco, periodicamente. O perodo entre as gravaes pode variar de um sistema de arquivos para outro, mas, em geral, no ultrapassa os trinta segundos.
t2
S
n1 n2 n3 n4
S
sb n1 b2 n2 b3 n3 b4 n4 b5
b1
b2 b3 b4 Buffer Cache
b5
b1
Estruturas na memria Dado no alterado Dado alterado por uma primitiva do SALIUS
Estruturas no disco
Dado alterado por uma chamada de sistema original do Unix Figura 5.4: Sistema de arquivos da Figura 5.3, aps gravao dos dados.
Captulo 5 Especificao do SALIUS 79
A Figura 5.4 ilustra o estado do sistema de arquivos da Figura 5.3, no tempo t2, com todas as alteraes j gravadas em disco. Assim, o contedo dos componentes de dados na memria idntico aos seus respectivos contedos no disco. Na hiptese do crash realmente acontecer em t1, o SALIUS deve garantir que, num tempo t3, aps a execuo do procedimento de recuperao, o sistema de arquivos contenha todos os dados gravados em disco, antes do crash, acrescidos dos dados alterados, em memria, pelas primitivas do servio.
t3
S
n1 n2 n3 n4
S
sb n1 b2 n2 b3 n3 b4 n4 b5
b1
b2 b3 b4 Buffer Cache
b5
b1
O sistema de arquivos, que se encontrava no estado apresentado pela Figura 5.3, antes do crash, levado para o estado apresentado na Figura 5.5, pelo mecanismo de recuperao do SALIUS. Note-se que o n-i n2 e os blocos de dados b2 e b4 j se encontravam estveis na ocasio do crash. O procedimento de recuperao do servio restaura, a partir de uma rplica, os dados em preto, ou seja, armazenados pelas primitivas do servio: o superbloco, o n-i n4 e os blocos b2 e b5. importante ressaltar que os dados armazenados pelas primitivas originais do sistema de arquivos do UNIX, e ainda no gravados em disco, so perdidos com o crash: o n-i n3 e o bloco b3. As Figuras 5.3, 5.4 e 5.5, apresentadas, ilustram a idia bsica que norteia o mecanismo de recuperao do SALIUS. Na prtica, entretanto, existem situaes mais complexas. Durante a permanncia de um item de dado na memria, ele pode sofrer vrias alteraes consecutivas, antes de ser gravado em disco. Algumas alteraes podem envolver apenas parte do contedo de um item.
Captulo 5 Especificao do SALIUS 80
As figuras seguintes expem uma situao mais abrangente, onde aparecem itens cujos contedos foram apenas parcialmente alterados, ora por primitivas do SALIUS, ora por chamadas de sistema originais do sistema de arquivos do UNIX.
t1
n1 n2 S n3 n4 Superbloco Tabela de Ns-i sb b1 b6 b2 b7 b3 b8 b4 b5 b9 b10
n1 b2 b7
n2 b3 b8
n3 b4
n4 b5
b1 b6
Buffer Cache
b9 b10
Estruturas na memria Dado no alterado Dado alterado por uma primitiva do SALIUS
Estruturas no disco
Dado alterado por uma chamada de sistema original do UNIX Figura 5.6: Estado de um sistema de arquivos na ocasio de um crash.
A Figura 5.6 apresenta um sistema de arquivos na ocasio de um crash. Os dados exibidos esto nos seguintes estados: o n-i n1 e o bloco b1 foram carregados na memria e permanecem inalterados; o superbloco, o n-i n4 e o bloco de dados b8 foram alterados atravs de primitivas do SALIUS e ainda no foram gravados no disco; o bloco b2 foi atualizado por uma primitiva do SALIUS e j foi gravado em disco; parte do contedo do n-i n3 e o bloco b3 foram atualizados por chamadas de sistema originais do sistema de arquivos do UNIX e essas alteraes ainda no foram propagadas para o disco; o n-i n2 e o bloco b9 foram atualizados por chamadas de sistema originais do sistema de arquivos do UNIX e j foram gravados em disco; apenas uma parte do contedo do bloco b4 foi atualizada por uma chamada de sistema original do UNIX. A alterao ainda no foi propagada para o disco;
81
apenas uma parte do contedo do bloco b5 foi atualizada por uma primitiva do SALIUS. A alterao ainda no foi propagada para o disco; o bloco b6 sofreu duas alteraes consecutivas. Primeiro, o seu contedo foi atualizado por uma chamada de sistema do UNIX e o bloco foi gravado em disco. A seguir, apenas uma parte do bloco foi alterada pelo SALIUS e os efeitos dessa operao ainda no foram refletidos no disco; o bloco b7 pode ser dividido em trs partes. Uma poro inicial foi atualizada pelo SALIUS. A segunda parte do bloco permaneceu inalterada, enquanto o restante do contedo do bloco foi modificado por uma chamada de sistema do UNIX. As alteraes ainda no foram propagadas para o disco; uma parte do bloco b10 foi atualizada por uma chamada de sistema do UNIX e outra parte, pelo SALIUS. As alteraes j foram gravadas em disco.
A Figura 5.7 ilustra a situao do sistema de arquivos apresentado pela Figura 5.6, num estado completamente estvel. Esse estado pode ser conseguido num tempo t2, aps a gravao de todos os dados no disco, caso o sistema permanea operacional e no sofra alteraes no perodo entre t1 e t2. Nesse caso, todas as alteraes so refletidas no sistema de arquivos em disco.
t2
S
n1 n2 n3 n4
S
sb n1 b2 b7 n2 b3 b8 n3 b4 n4 b5
b1 b6
b2 b7
b3 b8
b4
b5
b1 b6
b9 b10
b9 b10
Buffer Cache
Estruturas na memria Dado no alterado Dado alterado por uma primitiva do SALIUS
Estruturas no disco
Dado alterado por uma chamada de sistema original do Unix Figura 5.7: Sistema de arquivos da Figura 5.6, aps gravao dos dados.
82
A Figura 5.8 apresenta a situao do sistema de arquivos da Figura 5.6, no tempo t3, aps a recuperao de um crash, ocorrido no tempo t1. Note-se que apenas os dados armazenados pelas primitivas do SALIUS foram recuperados.
t3
S
n1 n2 n3 n4
S
sb n1 b2 b7 n2 b3 b8 n3 b4 n4 b5
b1 b6
b2 b7
b3 b8
b4
b5
b1 b6
b9 b10
b9 b10
Buffer Cache
A Figura 5.9 exibe o mesmo sistema de arquivos da Figura 5.3, no momento da ocorrncia de um crash, incluindo as informaes j replicadas. O crash provoca a destruio de todos os dados armazenados na memria principal. Alguns dados j se encontram gravados em disco: o n-i n2 e os blocos b2 e b4. Algumas estruturas foram replicadas: o superbloco, o n-i n4 e os blocos b2 e b5.
n1 n2 n3 n4
S Superbloco
n4
S
sb n1 b2 n2 b3 n3 b4 n4 b5
b1
b2 b3 b4 Buffer Cache
b5
b1
b2
b5
Estruturas Replicadas
A Figura 5.10 mostra como o procedimento de recuperao do SALIUS restaura o sistema de arquivos: l os dados armazenados na rplica de recuperao e, a seguir, grava os dados recuperados no disco.
S Superbloco
n4 Tabela de Ns-i Buffer Cache
Recuperao
S
sb b1 n1 b2 n2 b3 n3 b4 n4 b5
b2
b5
Rplica de Recuperao
84
t4
t5 Rplica
Recuperao Disco
86
A confiabilidade da memria principal. Quanto mais confivel o armazenamento em memria, menores as chances de um dado da memria ser destrudo, aumentando a probabilidade de manter as informaes estveis. A quantidade de memria principal disponvel. Quanto maior a capacidade da memria principal das mquinas do sistema, maior a quantidade de dados que podem ser mantidos na cache e replicados. A falta de memria pode tornar a replicao impossvel, levando o SALIUS a realizar gravaes sncronas e degradando, assim, o desempenho do sistema. Com uma grande disponibilidade de memria, o SALIUS pode realizar a replicao com xito. Adicionalmente, pode-se aumentar o intervalo de tempo no qual os dados alterados permanecem na cache, contribuindo para diminuir a quantidade de operaes de escrita em disco e melhorando o desempenho do sistema. A taxa de transmisso de dados atravs da rede. Quanto maior a taxa de transmisso de dados na rede, mais rpida ser a replicao, diminuindo o tempo de resposta das aplicaes que usam o servio e aumentando o desempenho do sistema. A confiabilidade do meio de transmisso de dados. Quanto mais confivel for o meio de transmisso de dados, menores as chances de mensagens perdidas ou corrompidas, aumentando a probabilidade de manter as informaes estveis. A replicao torna-se mais rpida, porque diminui a quantidade de retransmisses de mensagens, aumentando o desempenho. Adicionalmente, crescem as chances de sucesso da replicao, diminuindo a necessidade de gravaes sncronas, o que tambm contribui para um melhor desempenho do sistema. A banda passante da rede. Quanto maior a banda passante da rede utilizada pelo servio, menor a probabilidade do trfego gerado causar um congestionamento. Um congestionamento pode causar uma falha de tempo no Servio de Replicao de Buffers, levando o SALIUS a realizar gravaes sncronas. Por isso, aumentando a banda passante da rede, crescem as chances de sucesso das operaes de replicao, contribuindo para um melhor desempenho do sistema.
importante frisar que o trfego na rede um fator crucial ao desempenho do SALIUS. Toda a operao do SALIUS envolve a troca constante de mensagens atravs da rede. Um alto trfego na rede, pode tornar-se um gargalo ao desempenho do servio, ou chegar a inviabilizar o seu funcionamento. Portanto, quanto melhor a estrutura de rede e a memria principal utilizadas pelo sistema, melhor o desempenho e a confiabilidade do SALIUS. Quando os componentes de hardware utilizados possibilitam o funcionamento pleno do SALIUS, com a realizao bem-sucedida da replicao, a gravao dos dados em disco realizada de forma assncrona. Enquanto o sistema est gravando buffers da cache, a aplicao continua o seu processamento e o SALIUS atende a outras requisies.
Captulo 5 Especificao do SALIUS 87
O tempo de processamento de uma primitiva do SALIUS depende do tempo de replicao dos dados: a aplicao no espera pela gravao em disco, a menos que ocorra uma falha no Servio de Replicao de Buffers. Por isso, quando todos os componentes do SALIUS esto funcionando corretamente, a influncia do tempo de acesso a disco no desempenho global do sistema minimizada. O desempenho do sistema passa a depender muito mais da tecnologia de memria e da tecnologia de rede. Adicionalmente, quanto melhor a estrutura de rede e a tecnologia de memria utilizadas, maiores as chances de sucesso da replicao e maior a probabilidade de garantir a estabilidade das informaes, aumentando a confiabilidade do SALIUS.
Uma segunda implementao bastante simples seria um SRB executando em uma nica mquina da rede local, ligada a um no-break. Nesse caso, o desempenho seria priorizado: a replicao poderia ser muito rpida, pois o cliente s estaria enviando dados e recebendo a confirmao de um nico SRB. No entanto, a confiabilidade do servio seria sacrificada, pelo fato do SRB no ser tolerante a crashes no sistema operacional. Uma variao da segunda soluo apresentada seria a implementao de um SRB executando numa nica mquina, ligada ao servidor de arquivos por um barramento de alta velocidade. Neste caso, o desempenho seria ainda maior, devido comunicao veloz provida pelo barramento. Entretanto, a confiabilidade oferecida seria limitada, pelo fato de haver apenas uma rplica de dados. A implementao de um Servio de Replicao de Buffers deve balancear, da melhor forma possvel, o atendimento aos requisitos de desempenho e confiabilidade. No prximo captulo, ser apresentado um projeto para o Servio de Replicao de Buffers, que busca um equilbrio no atendimento a esses requisitos.
89
Captulo 6
6 Projeto de um Servio de Replicao de Buffers
Este captulo apresenta um projeto de um Servio de Replicao de Buffers para o SALIUS. Inicialmente, so especificados os requisitos do servio. A seguir, o projeto detalhado, com a descrio da utilizao de um grupo de rplicas na implementao do servio e a apresentao do modelo de replicao adotado. As rplicas que implementam o SRB interagem entre si, e com os clientes, de acordo com um protocolo de replicao. Em tais interaes, a comunicao tambm obedece a um protocolo. Este captulo descreve o protocolo de comunicao utilizado e detalha as operaes e os algoritmos do protocolo de replicao do Servio de Replicao de Buffers.
Portanto, o Servio de Replicao de Buffers do SALIUS provido por um grupo de rplicas. Os clientes desse servio so de dois tipos: um Servidor de Arquivos Complementar (SAC), que requisita a replicao de informaes, e um Procedimento de Recuperao, que requisita as informaes necessrias para restaurar o sistema de arquivos a um estado consistente, mantendo estveis as informaes armazenadas atravs de primitivas do SALIUS.
ANSA (Advanced Network Systems Architecture), um projeto britnico, liderado por Andrew Herbert, que constituiu a primeira tentativa sistemtica de desenvolver tecnologia para modelar sistemas distribudos complexos. Consiste de um conjunto de modelos que tratam de vrios aspectos de projeto de sistemas distribudos, com um enfoque de orientao a objetos. 2 CORBA (Common Object Request Broker Architecture), um projeto posterior ao ANSA, iniciado por um consrcio de fabricantes de computadores, que tem como objetivo definir padres avanados para conseguir a interoperabilidade de sistemas distribudos complexos, orientados a objetos, construdos por fabricantes diferentes. CORBA define padres para um grande conjunto de servios. CORBA basicamente um molde para construo de sistemas distribudos e tornou-se uma tendncia. Captulo 6 Projeto de um Servio de Replicao de Buffers 91
92
Se cada pedido de replicao for recebido por um conjunto diferente de rplicas, aps um crash no cliente, o grupo de rplicas pode estar em situaes que dificultam, ou que impossibilitam a recuperao do sistema de arquivos, tais como: a) nenhuma rplica contm todos os pedidos de replicao, enviados antes do crash, ou b) alguns pedidos foram irremediavelmente perdidos, devido a falhas anteriores, justamente nas nicas rplicas que armazenavam aquele pedido. Na situao a, ainda possvel recuperar o sistema de arquivos: basta que o procedimento de recuperao faa um merge das informaes armazenadas nas diversas rplicas. Contudo, na situao b, a recuperao de todas as informaes armazenadas antes do crash impossvel. O servio precisa garantir que, no mnimo, r rplicas, sendo r = f, permanecem sempre atualizadas: caso ocorram f crashes simultneos, nas mquinas do sistema, envolvendo, inclusive, a mquina que executa o sistema de arquivos, restar, pelo menos, uma rplica com todas as informaes necessrias para manter a estabilidade dos dados armazenados antes do crash. Todo o funcionamento de um grupo de rplicas ordenado atravs de um protocolo de replicao, inclusive as aes realizadas para manter a consistncia das rplicas. Este protocolo especifica como sero as interaes entre os clientes e os grupos, e entre os membros que compem um grupo. O protocolo de replicao depende do modelo de replicao e do protocolo de comunicao utilizados, que sero apresentados a seguir.
1 3
CLIENTE
2 1
primrio
GRUPO DE RPLICAS
As falhas temporais do membro primrio so interpretadas como um crash, ou seja, se o primrio demorar para responder a um cliente, ou para realizar um checkpoint, o cliente e/ou os membros passivos do grupo vo deduzir, por decurso de tempo, que o primrio parou de funcionar. Se o primrio falha, os membros remanescentes elegem um novo primrio, que assume como o nico membro ativo do grupo. Durante a eleio, o grupo torna-se indisponvel.
94
CLIENTE
GRUPO DE RPLICAS
Esse modelo define as condies que devem ser satisfeitas, a fim de garantir a consistncia das rplicas: a) cada membro operacional do grupo deve receber toda requisio de cliente e b) todos os membros operacionais devem processar as requisies recebidas numa mesma ordem relativa.
O processamento nas rplicas do Servidor de Replicao de Buffers mnimo: apenas o recebimento da mensagem e atualizao de estruturas de dados, na memria, portanto pode ser realizado em todas as rplicas. O nmero de rplicas necessrias, em geral, pequeno, porque a probabilidade de ocorrerem crashes simultneos, em diversas mquinas do sistema, tambm normalmente baixa. O protocolo de comunicao utilizado pelo Servio de Replicao de Buffers pode ser simplificado, mesmo adotando o modelo de replicao ativa. Por exemplo, o protocolo de comunicao no precisa garantir a entrega ordenada de mensagens: nas rplicas, as mensagens que chegam podem ser armazenadas de forma desordenada; a ordem importante apenas para o procedimento de recuperao, que precisa gravar os dados alterados na mesma ordem em que foram gerados. Como o sistema de arquivos do UNIX centralizado, as mensagens de replicao so geradas por processos executando numa mesma mquina; as mensagens podem incluir informaes que possibilitem uma ordenao posterior, quando um cliente iniciar um procedimento de recuperao.
O Servio de Replicao de Buffers utiliza unicasting em algumas de suas interaes, como, por exemplo, quando uma rplica envia dados para o procedimento de recuperao do cliente. Porm, na maioria das interaes, o servio utiliza um tipo mais sofisticado de comunicao, denominada multiponto, envolvendo um transmissor e vrios receptores: um cliente do servio de replicao envia mensagens para todo o grupo de rplicas, pois o modelo adotado de replicao ativa; eventualmente, uma rplica pode precisar interagir com as demais rplicas do grupo, a fim de restabelecer a sua consistncia. Existem vrias maneiras de implementar a comunicao multiponto. O transmissor pode, por exemplo, fazer mltiplos unicasts, sendo um para cada receptor. Nesse caso, o transmissor deve conhecer todos os membros do grupo, para que possa enderear as mensagens enviadas. Para cada interao entre um processo transmissor e um grupo de n rplicas, circulam n mensagens, contribuindo para aumentar o trfego na rede.
96
Multicasting uma tcnica mais eficiente de implementar a comunicao multiponto [ANS90] [Lit92]. Um multicast uma mensagem enviada a um grupo e encaminhada, atravs da rede, para todos os membros do grupo. Em cada interao entre um processo transmissor e um grupo, trafega apenas uma mensagem na rede. Multicasting uma forma transparente de comunicao grupal, pois o transmissor no precisa saber quantos so os membros de um grupo, nem onde eles esto localizados [Tan95]. O esquema de multicasting pode ser implementado de vrias maneiras e em vrias camadas diferentes (enlace, rede, transporte). Em algumas redes, por exemplo, possvel criar um endereo de rede especial, para multicasting, como o endereo de Internet de classe D, atravs do qual vrias mquinas podem escutar. Assim, se o transmissor enviar uma mensagem para um endereo de multicasting, a mensagem ser entregue a todas as mquinas que estiverem escutando nesse endereo [Tan95]. possvel, ento, assinalar todos os membros de um grupo de rplicas a um mesmo endereo de multicasting. A escolha de um protocolo de comunicao deve considerar as garantias oferecidas, referentes entrega de mensagens, e o impacto dessas garantias no desempenho. Quanto menos garantias o protocolo de comunicao oferece, menor a carga de processamento introduzida no sistema, contribuindo para um melhor desempenho. Em contraposio, o protocolo de replicao precisa ser mais complexo, para a manuteno da consistncia das rplicas. Quanto mais garantias o protocolo de comunicao oferece, mais simples pode ser o protocolo de replicao. Porm, maior tambm a carga de processamento introduzida pelo protocolo de comunicao, diminuindo o desempenho do sistema.
O Servio de Replicao de Buffers adota o protocolo de comunicao UDP Multicast. Esse protocolo adiciona a facilidade de realizar multicasting ao protocolo UDP (User Datagram Protocol) [Bir96]. O UDP Multicast no garante a entrega confivel de mensagens a todos os membros do grupo, ou seja, uma mquina pode receber uma mensagem que outras perderam. Esse protocolo tambm no garante a entrega ordenada das mensagens. Alm disso, pode ocorrer duplicao de mensagens. Na maioria dos servios implementados atravs de replicao ativa, necessrio garantir a entrega atmica, ordenada e no duplicada de mensagens, para a manuteno da consistncia das rplicas. Por isso, a utilizao do protocolo UDP Multicast nesses sistemas introduziria uma grande complexidade ao protocolo de replicao, a fim de suprir os requisitos de comunicao no atendidos pelo protocolo de comunicao.
97
Entretanto, O UDP Multicast um protocolo adequado ao Servio de Replicao de Buffers do SALIUS, porque: apesar das limitaes citadas, o protocolo UDP Multicast tem a vantagem de ser simples e adicionar uma carga de processamento menor ao sistema, se comparado com os protocolos de multicasting confivel (que garantem a entrega atmica, ordenada e no duplicada de mensagens), possibilitando uma entrega mais rpida de mensagens; o Servio de Replicao de Buffers est projetado para ser utilizado numa estrutura de rede local, com uma probabilidade pequena de perder pacotes. Assim, o projeto assume uma abordagem otimista, considerando que as mensagens sero entregues, na maioria das vezes; as mensagens trafegadas pelo servio so pequenas (aproximadamente, o equivalente a um bloco do arquivo). Portanto, para a maioria dos sistemas de arquivos UNIX, com tamanho de bloco de 4Kb, cada mensagem no SALIUS pode equivaler a uma nica mensagem UDP, cujo tamanho mximo tipicamente de 8Kb[Bir96].
O Servio de Replicao de Buffers do SALIUS consegue contornar as limitaes do UDP Multicast, atravs de um protocolo de replicao simples, que ser descrito a seguir.
99
100
Quando termina de montar a mensagem, o cliente tenta realizar a replicao. Para isso, envia o pedido ao grupo de rplicas e espera pela confirmao da replicao, durante um intervalo de tempo predefinido. Se, nesse tempo, chegarem mensagens de confirmao de, pelo menos, r rplicas distintas do servidor, todas da encarnao mais recente, o cliente assume que a replicao foi bem-sucedida. Caso contrrio, o cliente retransmite o pedido e aguarda novamente por respostas. Isso acontece um nmero finito de vezes (max_retry, configurado pelo administrador do sistema), antes do cliente interpretar uma falha no servio de replicao. Se a replicao for bem-sucedida, o cliente ajusta a encarnao corrente do SRB, guardando na varivel i_srb o maior nmero de encarnao recebido nas mensagens de confirmao. Se o SRB no estava inicializado, o cliente tambm atualiza a varivel srb_inicializado, indicando que o SRB foi inicializado com sucesso. A seguir, o cliente retorna o controle para a aplicao, informando o sucesso da operao solicitada. Quando um cliente detecta uma falha no SRB, durante uma tentativa de replicar dados, suas aes dependem do estado do SRB, indicado pela varivel srb_inicializado: a) se o SRB estiver inicializado, significa que essa a primeira tentativa de replicar dados que falha, desde a ltima inicializao: o cliente torna falsa a varivel srb_inicializado e executa o comando sync, gravando no disco todas as atualizaes pendentes do sistema de arquivos, inclusive os dados da operao em curso; b) se o SRB no estiver inicializado, significa que o comando sync j foi executado anteriormente, no havendo atualizaes pendentes na memria: o cliente realiza a gravao sncrona apenas dos dados e metadados alterados pela operao em curso.
102
CLIENTE: altera dados em memria; adquire contador (p); incrementa contador (p); if (srb_inicializado) then flag_init = false; else flag_init = true;
/* adquire o contador de pedidos */ /* incrementa o contador de pedidos */ /* preenche flag de inicializao do SRB */
retry = 0; /* inicia o contador de tentativas */ do { retry = retry + 1; send_replica (p, flag_init, i_srb); start_timeout; /* inicia a contagem do tempo */ num_replies = 0; /* inicia o nmero de respostas da tentativa */ i_max = 0; do { receive_reply (p, i); if (i > i_max) then { i_max = i; num_replies = 1; /* reinicia a contagem de respostas */ } else incrementa num_replies; } while not (timeout) and (num_replies < r); } while (num_replies < r) and (retry < max_retry); if (num_replies r) then { libera contador (p); if not (srb_inicializado) then { srb_inicializado = true; i_srb = i_max; } } else { decrementa contador (p); libera contador (p); if (srb_inicializado) then { srb_inicializado = false; sync (); } else gravao sncrona; } return ok;
Captulo 6 Projeto de um Servio de Replicao de Buffers
/* sucesso na replicao */
103
Ao receber um pedido de um cliente, o Servidor de Replicao de Buffers, primeiro, verifica se esse pedido j foi atendido, descartando as mensagens duplicadas. Se for um novo pedido, o servidor cria um processo filho para processar o pedido e volta a aguardar novas requisies, possibilitando o atendimento de pedidos de outros clientes. O processo filho, ento, realiza o processamento adequado ao tipo de pedido. Quando se trata de um pedido de replicao, o servidor verifica se o cliente solicitou o procedimento de inicializao, atravs do flag_init. Se o flag estiver ligado, o servidor realiza o procedimento de inicializao: descarta todos os dados do log de replicao, relacionados com o sistema de arquivos informado no pedido. Ao inicializar, o servidor tambm atualiza a sua encarnao para uma encarnao imediatamente seguinte encarnao atual do SRB, informada no pedido do cliente (i_srb). Durante uma inicializao do SRB, uma rplica pode receber vrios pedidos do cliente, solicitando a inicializao: o cliente s considera o SRB inicializado quando recebe a confirmao de r rplicas; enquanto essa condio no satisfeita, o cliente continua enviando pedidos com o flag_init ligado. Cada rplica do servidor s deve incrementar a sua encarnao uma nica vez, a cada inicializao do SRB. Por isso, o servidor mantm uma varivel de controle, em_inicializao. Se a varivel estiver falsa, significa que esse o primeiro pedido de inicializao recebido pela encarnao atual: nesse caso, o servidor atualiza o nmero da sua encarnao e torna a varivel em_inicializao verdadeira. Ao receber o primeiro pedido de replicao com o flag_init desligado, significa que a inicializao do SRB foi concluda com sucesso, ento o servidor torna a varivel em_inicializao novamente falsa. Quando um servidor recebe um pedido de replicao com o flag_init desligado, ele verifica o nmero do pedido e a encarnao atual do SRB: se o nmero do pedido for maior que o pedido esperado, significa que o servidor deixou de receber algum pedido; se o nmero da encarnao informada for maior que o da encarnao atual do servidor, significa que o servidor deixou de passar por algum processo de inicializao. Nos dois casos, a rplica encontra-se desatualizada. Portanto, o servidor executa um procedimento de regenerao, antes de voltar a atender aos pedidos de replicao. Ao reiniciar de um crash, uma rplica atribui zero a sua encarnao, para que ela passe, necessariamente, por um procedimento de regenerao. Finalmente, o servidor envia uma mensagem de confirmao ao cliente, informando a sua encarnao corrente, e armazena os dados recebidos num log de replicao, na memria principal.
104
SERVIDOR: for (; ;) { receive_request (p, flag_init, i_srb); verifica duplicidade; if novo_pedido then { cria processo filho; } }
if (flag_init) then { /* inicializao */ reinicia log; /* descarta log */ if not (em_inicializao) then { / * primeiro pedido de inicializao */ i_replica = i_srb + 1; /* atualiza a encarnao da rplica*/ em_inicializao = true; } } else { /* cliente no detectou falha no SRB */ if ((i_srb > i_replica) or (p > pedido_esperado)) then { proc_regeneration; if (em_inicializao) then em_inicializao = false; } send_reply (p, i_replica); pedido_esperado = p + 1; armazena dados no log; } else if recovery then proc_serve_recovery; /* atende ao pedido de recuperao */
105
a) se a encarnao da rplica em regenerao for anterior maior encarnao recebida (se ela estiver se recuperando de um crash, a sua encarnao estar com valor zero), o processo de regenerao atribui o valor zero a p, requisitando todo o log rplica eleita. Ao receber o log de replicao, o processo de regenerao armazena esse log em sua memria, descartando qualquer log antigo existente; b) se a rplica em regenerao estiver na mesma encarnao da rplica eleita, significa que ela apenas deixou de receber alguns pedidos, mas no precisa substituir seu log de replicao. Assim, o processo de regenerao informa em p o nmero do ltimo pedido de replicao existente no log local. Ao receber os dados da rplica eleita, o processo de regenerao completa o log com dados dos pedidos que faltavam.
Captulo 6 Projeto de um Servio de Replicao de Buffers 106
PROCEDIMENTO DE REGENERAO: proc_regeneration { do { init_recovery; /* informa o incio da regenerao */ start_timeout; /* inicia a contagem do tempo */ num_replies = 0; /* inicia o nmero de respostas */ i_max = 0; do { receive_status (p, i); if (i > i_max) then { i_max = i; num_replies = 1; } else incrementa num_replies; } while not (timeout) and (num_replies < u); } while (num_replies < u); elege uma rplica; if (i_replica < i_max) then p = 0; else p = maior pedido do log; request_data_recovery (p); receive_data_recovery (l); armazena dados no log; }
SERVIDOR: proc_serve_recovery; { if init_recovery then send_status (p, i); else { ler dados do log (p); send_data_recovery (l); } }
107
CLIENTE: retry = 0; do { retry = retry + 1; init_recovery; /* informa o incio da recuperao */ start_timeout; /* inicia a contagem do tempo */ num_replies = 0; /* inicia o nmero de respostas */ i_max = 0; do { receive_status (p, i); if (i > i_max) then { i_max = i; num_replies = 1; } else incrementa num_replies; } while not (timeout) and (num_replies < u); } while (num_replies < u) and (retry < max_retry); if (num_replies u) then { elege uma rplica; request_data_recovery (0); receive_data_recovery (l); ordena pedidos do log; grava dados no disco; } else fail;
O cliente envia uma mensagem para o grupo de rplicas, informando o incio da recuperao. O servidor executa o procedimento proc_serve_recovery, para atender a um pedido de recuperao de um cliente (o mesmo procedimento que atende um pedido de uma rplica em regenerao). Cada rplica operacional envia uma resposta ao cliente,
108
informando o seu estado de atualizao, ou seja, a sua encarnao e o ltimo pedido de replicao atendido. O cliente espera, por um tempo mximo e predefinido, pela resposta de, pelo menos, u rplicas (n - f < u n), sendo u um parmetro informado ao procedimento de recuperao. Caso no cheguem as u respostas esperadas, o cliente retransmite o pedido e aguarda novamente por respostas. Isso acontece um nmero finito de vezes (max_retry). Quando o nmero de tentativas se esgota, caso o cliente no tenha recebido as respostas esperadas, o processo de recuperao falha. O administrador do sistema pode repetir o processo de recuperao, atribuindo um valor menor para u. O restante do procedimento de recuperao acontece da seguinte maneira: com base nas informaes recebidas, o cliente elege uma rplica atualizada e requisita mesma o log de replicao; a rplica eleita envia o log de replicao para o cliente; de posse do log, o cliente grava os dados de cada pedido de replicao no sistema de arquivos em disco, obedecendo ordem na qual os pedidos foram originalmente gerados.
um pedido de replicao, o cliente consulta a tabela de pedidos pendentes, para enviar ao grupo de rplicas o nmero do maior pedido j estabilizado. A informao adicional enviada em cada pedido de replicao pequena (apenas o nmero do maior pedido j estabilizado). Portanto, no influencia significativamente no tempo da replicao. Adicionalmente, essa soluo apresenta uma alta probabilidade de evitar a Situao Atpica da Recuperao, apresentada no item 5.6.3. Contudo, o processamento adicional no cliente pode atrapalhar o desempenho do sistema. Existe uma forma mais simples de realizar a limpeza dos logs: periodicamente, o servidor descarta do log todos os pedidos armazenados por um perodo superior a 2t, sendo t o tempo mximo que um bloco permanece na cache de arquivos do cliente, antes de ser gravado em disco. Caso essa ao no libere espao suficiente na memria, o procedimento de limpeza grava uma parte de cada log no disco, comeando pelos logs maiores, at reduzir o tamanho de todos os logs para um percentual predefinido pelo administrador do sistema. Essa soluo apresenta o inconveniente de vincular o comportamento do servidor ao comportamento do cliente: se um cliente aumentar o seu tempo t, o servidor precisar ajustar o tempo mximo que um pedido de replicao permanece no log. Na prtica, entretanto, existe um valor padro para t (de trinta segundos), adotado pela maioria dos sistemas de arquivos do UNIX. Assim, embora a primeira soluo seja mais genrica e elegante, essa soluo uma forma prtica de reduzir o custo da operao de limpeza dos logs.
pelo menos, f rplicas no falharem no atendimento a um pedido de replicao, diminuindo a ocorrncia de gravaes sncronas. Sendo freal o nmero de rplicas que realmente falham (freal f), o SRB s atende a um pedido de replicao, quando n - freal f. Como o freal mximo igual a f (nmero mximo de faltas suportado pelo SALIUS), fazendo n 2f, a nica possibilidade de falha do SRB ser devida a uma falha na comunicao entre o cliente e as rplicas. Num cenrio prtico, pode-se adotar uma abordagem otimista, assumindo que falhas na comunicao so raras e que durante um intervalo de tempo pequeno (suficiente para que o sistema de arquivos do UNIX grave as informaes "estveis" no disco) a probabilidade de duas rplicas falharem desprezvel. Assim, pode-se estabelecer: n = 2 e r = f = 1. Obviamente, muitos outros cenrios so possveis, mas somente uma experimentao, com uma implementao do servio, poderia indicar qual o melhor cenrio para uma determinada plataforma.
111
Captulo 7
7 Concluses
As tendncias da tecnologia e as necessidades das novas aplicaes motivam o desenvolvimento de novas tcnicas de armazenamento estvel, capazes de desvincular o desempenho dos sistemas de arquivos do desempenho dos discos. Esta dissertao apresentou a especificao de uma nova tcnica de armazenamento estvel, denominada SALIUS SERVIO DE ARMAZENAMENTO ESTVEL COM RECUPERAO PARA FRENTE BASEADO NA REPLICAO REMOTA DE BUFFERS , como uma alternativa s solues baseadas em gravao sncrona. A tcnica proposta baseia-se na replicao remota de buffers alterados na cache de arquivos. Assim, aps a ocorrncia de um crash, os dados apagados da memria principal podem ser recuperados, a partir de uma cpia mantida na memria principal de uma mquina remota, para que sejam, finalmente, gravados em disco, restabelecendo a consistncia do sistema de arquivos e mantendo as informaes estveis. O SALIUS constitudo de quatro componentes: uma interface, formada por um conjunto de primitivas, que so utilizadas pelas aplicaes, para solicitar que o SALIUS realize operaes sobre arquivos; um Servidor de Arquivos Complementar, que executa as operaes requisitadas ao SALIUS; um Servio de Replicao de Buffers, responsvel pela replicao confivel dos dados alterados na execuo de primitivas do SALIUS e pelo fornecimento de informaes necessrias recuperao do sistema de arquivos, aps um crash, e, finalmente, um Procedimento de Recuperao, cuja funo ler os dados alterados, a partir de uma rplica, e restaurar a consistncia do sistema de arquivos, garantindo a estabilidade de informaes gravadas atravs das primitivas do SALIUS. Uma aplicao pode escolher entre utilizar as primitivas do SALIUS, ou as primitivas do UNIX, de acordo com as suas necessidades. Quando o Servidor de Arquivos Complementar executa uma primitiva do SALIUS, solicita ao Servidor de Replicao de Buffers a replicao de todos os dados e metadados alterados. O SRB recebe os pedidos de replicao e mantm os dados replicados em um log de replicao. O procedimento de recuperao do SALIUS garante a recuperao de todos os dados armazenados atravs das primitivas do servio. Ele solicita ao Servidor de Replicao de Buffers o fornecimento de todos os dados replicados antes do crash. De posse desses dados, o procedimento de recuperao providencia grav-los em disco, refletindo no sistema de arquivos o efeito de todas as operaes que tenham sido realizadas com o uso do servio, antes do crash. As informaes so gravadas em disco, exatamente na mesma ordem na qual aconteceram originalmente, simulando uma repetio das atualizaes. O procedimento de recuperao do UNIX continua sendo necessrio, porque a alterao de dados e metadados, atravs da utilizao de primitivas originais do UNIX, pode levar o sistema de arquivos a um estado inconsistente.
Captulo 6 Concluses
113
Este trabalho evidenciou que a probabilidade do SALIUS conseguir alcanar os objetivos estabelecidos, de prover armazenamento estvel e de oferecer um desempenho superior s solues baseadas na gravao sncrona, depende da tecnologia utilizada e da forma como o Servio de Replicao de Buffers implementado. Foi apresentado um projeto de implementao para o Servio de Replicao de Buffers do SALIUS, atravs de um grupo de rplicas de um processo Servidor de Replicao de Buffers, executando em mquinas remotas. O projeto sugerido para o Servio de Replicao de Buffers adota o modelo de replicao ativa e utiliza o protocolo de comunicao UDP Multicast. O projeto tambm especifica um protocolo de replicao para o servio, detalhando as operaes possveis e os algoritmos utilizados na replicao de dados, na recuperao de um sistema de arquivos e na regenerao de uma rplica. O trabalho, tambm, demonstrou que o Servio de Replicao de Buffers pode balancear o atendimento aos requisitos de desempenho e confiabilidade, bastando ajustar o nmero de rplicas do grupo e o nmero de rplicas que precisam enviar uma mensagem de confirmao, para que a replicao seja considerada bem-sucedida.
Captulo 6 Concluses
114
o SALIUS mantm a semntica de compartilhamento do UNIX, porque preserva a ordem das operaes de escrita, quando um arquivo est sendo compartilhado. Para isso, o SALIUS utiliza um contador nico de pedidos de replicao, para cada sistema de arquivos. Quando um processo est atualizando o sistema de arquivos, adquire um nmero de pedido, o qual enviado no cabealho da mensagem de replicao. O procedimento de recuperao utiliza esse nmero de pedido para ordenar a gravao dos dados do log de replicao no disco; a especificao do SALIUS no requer a utilizao de hardware especial para a sua implementao. Assim, o objetivo de no acrescentar custos ao sistema consegue ser atendido; o procedimento de recuperao do SALIUS torna possvel a recuperao do sistema de arquivos aps um crash, garantindo a estabilidade das informaes armazenadas com o uso do servio; o SALIUS vincula o desempenho das operaes de escrita ao desempenho da rede, da memria e dos processadores utilizados na implementao, diminuindo a influncia da tecnologia de disco. Como as tendncias da tecnologia apontam para um grande aumento no potencial de processamento, na velocidade de acesso memria e nas taxas de transmisso de dados atravs de redes, o desempenho oferecido pelo SALIUS tambm tende a crescer; a confiabilidade do SALIUS tambm tende a aumentar com os avanos tecnolgicos, medida em que forem surgindo memrias e redes mais confiveis, pois diminui o risco de dados serem perdidos ou corrompidos enquanto estiverem armazenados na memria, ou enquanto estiverem trafegando pela rede; finalmente, uma implementao eficiente do Servio de Replicao de Buffers fundamental para que os objetivos de desempenho e confiabilidade do SALIUS sejam alcanados.
A Tabela 7.1 uma extenso da Tabela 4.1, apresentada no Captulo 4, e relaciona as caractersticas de vrios sistemas de arquivos robustos e do SALIUS, num quadro comparativo. Cada caracterstica apresentada refere-se a um dos objetivos do SALIUS, descritos no Captulo 5. As informaes associadas ao SALIUS consideram a probabilidade de uma implementao eficiente poder atender a cada um desses objetivos. Assim, o SALIUS tem um grande potencial para constituir um servio de armazenamento estvel de propsito geral, capaz de oferecer um melhor desempenho que os sistemas convencionais (baseados na gravao sncrona em disco), dotado de um mecanismo de recuperao para frente, que garante a estabilidade de dados de cache replicados, e a um custo acessvel, porque no depende de um hardware especial.
Captulo 6 Concluses
115
SISTEMAS BASEADOS EM LOG CACHE DE NVRAM RIO FILE CAHE SISTEMA ENVY SALIUS
ARMAZENAMENTO
ESTVEL
MELHORIA NO
DESEMPENHO
HARDWARE
ESPECIAL
MECANISMO DE
RECUPERAO
PROPSITO
GERAL
O SALIUS apresenta a desvantagem de aumentar o consumo da banda passante do meio de comunicao, pois o funcionamento do servio exige a troca constante de mensagens entre os clientes e o SRB. Teoricamente, a utilizao de redes de alta velocidade diminuiria a probabilidade de um congestionamento inviabilizar a replicao de dados. Porm, somente a experimentao, atravs de uma implementao do servio, permitir uma avaliao mais precisa dos efeitos do aumento do trfego de dados na rede, causados pelo SALIUS.
Captulo 6 Concluses
Outro trabalho a ser desenvolvido o estudo do nmero ideal de rplicas do Servidor de Replicao de Buffers (n) e o nmero de rplicas que devem responder aos pedidos de replicao de um cliente (r), de modo a otimizar o atendimento aos requisitos de desempenho e confiabilidade. Este estudo pode ser realizado atravs de experincias com uma implementao do SALIUS, para diferentes valores de n e r. Um trabalho possvel a flexibilizao do tempo de permanncia dos dados na cache de arquivos, para os dados armazenados com o uso do SALIUS, conforme a disponibilidade de memria principal. Assim, havendo memria suficiente, esses dados poderiam ser mantidos na memria por um tempo maior. Quando o espao em memria se tornasse escasso, o tempo de permanncia dos dados na cache tambm diminuiria, dinamicamente. O efeito dessa estratgia para a otimizao do desempenho do sistema deve ser testado na prtica. A associao do SALIUS com outras tcnicas pode vir a otimizar o servio de armazenamento estvel oferecido: o uso de novas tecnologias de armazenamento secundrio, como a tecnologia RAID, pode contribuir para uma melhoria no desempenho do servio, enquanto a confiabilidade pode ser aprimorada, atravs de um mecanismo de proteo de memria, capaz de evitar que a memria seja sobregravada acidentalmente pelo sistema.
Captulo 6 Concluses
117
8 Bibliografia
[ABC+97] G. Alverson, P. Briggs, S. Coatney, S. Kahan and R. Korry. Tera Hardware-Software Cooperation. In Proceedings of the ACM/IEEE SC97, pp. 15-21, November 1997. T. Anderson, D. Culler and D. Patterson. A Case for NOW (Networks of Workstations). IEEE Micro 15(1): 54-56, February 1995. Also http:\\www.now.cs.berkeley.edu. G. Abandah, E. Davidson. Effects of Architectural and Technological Advances on the HP/Convex Exemplars Memory and Communication Performance. In Proceedings of the 25th Annual International Symposium on Computer Architecture, pp. 318-329, June 1998. T. Anderson, M. Dahlin, J. Neefe, D. Patterson, D. Roselli and R. Wang. Serverless Network File Systems. In Proceedings of the 15th Symp. on Operating Systems Principles, 109-126, December 1995. Also ACM Trans. On Computing Systems, 14(1): 41-79, February 1996. G. Amdahl. Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities. In Proceedings of the AFIPS Spring Joint Computer Conference, April, 1967. Advanced Micro Devices, Inc. Technology Background AMDDL160 and DL320 Series Flash: New Densities, New Features. Publication 22271, May 1999. Advanced Micro Devices, Inc. Technology Background 3.0 Volt-only Page Mode Flash Memory Technology. Publication 22249, May 1999.
[ACP95]
[AD98]
[ADN+95]
[Amd67]
[AMD99]
[AMD99a]
Bibliografia
118
[ANS90]
ANSA. A Model for Interface Groups. ANSA, ISA Project, APM/RC 093.00, May 1990. ANSA. An Abstract Model for Groups. ANSA, ISA Project, APM/RC 259.01, June 1991. AT&T. UNIX System V, Release 3.2. System Administrators Guide. Prencice Hall, Inc. 1989. M. Bach. The Design of the UNIX Operating System. Prentice Hall T R, 1990. P
[ANS91]
[AT89]
[Bac86]
[BAD+92]
M. Baker, S. Asami, E. Deprit, J. Ousterhout and Margo Seltzer. NonVolatile Memory for Fast Reliable File Systems. In Fifth International Conference on Architectural Support for Programming Languages and Operating Systema (ASPLOS-V), pp. 10-22, October 1992. M. Beck, H. Bhme, M. Dziadzka, U. Kunitz, R. Magnus and D. Verworner. LINUX Kernel Internals. Second edition. Addison-Wesley, 1997. BGI Datentechnik GmbH. Solid State Disk Frequently Asked Questions. In www.silicondisk.com/SSD_tech_faq.html, October 1997. M. Baker, J. Hartman, M. Kupfer, K. Shirriff and J. Ousterhout. Measurements of a Distributed File System. In Proceedings of the 13th Symp. on Operating Systems Principles, pp. 198-212, October 1991. K. P. Birman. Building Secure and Reliable Network Applications. Manning Publications Co., 1996. M. Benatre, G. Muller, B. Rochat and P. Sanchez. Design decisions for the FTM: a general purpose fault tolerant machine. In Proceedings of the 1991 International Symposium on Fault-Tolerant Computing, pp. 71-78, June 1991. C. Cassidy. Understanding the Performance of Quantum Solid State Disks. In www.quantum.com/src/whitepapers/wp_ssdperformance.htm, Quantum Corporations whitepaper, 1998.
[BBD+97]
[BGI97]
[BHK+91]
[Bir96]
[BMR+91]
[Cas98]
Bibliografia
119
[CLG+94]
P. M. Chen, E. Lee, G. Gibson, R. Katz and D. Petterson. RAID: HighPerformance, Reliable Secondary Storage. ACM Computing Surveys, 26(2): 145-188, June 1994. P. M. Chen, Wee Teck Ng, G. Rajamani, C. M. Aycock. The Rio File Cache: Surviving Operating Systems Crashes. Seventh International Conference on Architectural Support for Programming Languages and Operating Systems, SIGPLAN Notices, 31(9): 74-83, September 1996. F. Cristian. Understanding Fault-Tolerant Distributed Systems. ACM Communications, 34(2): 56-78, February 1991. D. Comer and D. Stevens. Internetworking with TCP/IP,Principles, Protocols and Architecture. Vol. I. Prentice Hall International, Inc., 1991. D. Comer and D. Stevens. Internetworking with TCP/IP, Client/Server Programming and Applications BSD Socket Version. Vol. III. Prentice Hall International, Inc., 1993. H. Custer. Inside the Windows NT File System. Microsoft Press, 1994. M. Dahlin et al. A Quantitative Analysis of Cache Policies for Scalable Network File Systems. In Proceedings of the SIGMETRICS Conference on Measurement and Modeling of Computer Systems, pp. 150-160, May 1994. DEC 3000 300/400/500/600/700/800/900 AXP Models System Programmers Manual. Technical Report, Digital Equipament Corporation, July 1994. T. von Eicken, D. Culler, S. Goldstein and K. Schauser. Active Messages: A Mechanism for Integrated Communication and Computation. In Proceedings of the 19th ISCA, pp. 256-266, May 1992. J. Hartman, and J. Ousterhout. The Zebra Stripped Network File System. ACM Trans. On Computer Systems, 13(3): 274-310, August 1995. IEEE (Institute of Electrical and Eletronics Engineers) Standards. IEEE 802.3-1998 Edition. June 1998. Intel Corporation. Flash Memory, 1994.
120
[CNR+96]
[Cri91]
[CS91]
[CS93]
[Cus94] [Dah+94]
[DEC94]
[ECG+92]
[HO95]
[IEE98]
[Int94]
Bibliografia
[Int97]
Intel Corporation. Intel Architecture Software Developers Manual, Vol.1: Basic Architecture, Order Number 243190, 1997. P. Jalote. Fault Tolerance in Distributed Systems. Prentice Hall, 1994. L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. ACM Communications, 21(7): 558-565, July 1978. L. Liang, S. T. Chanson, and G. W. Neufeld. Process Groups and Groups Communications: Classifications ans Requirements. IEEE Computer, February 1990. R. LaRowe, C. Ellis and L Kaplan. The Robustness os NUMA Memory Management. In Proceedings os Thirteenth Symposium on Operating Systems Principles, ACM, pp. 137-151, 1991. M. C. Little. Object Replication in a Distributed System. Ph.D. Thesis, University of Newcastle upon Tyne, Computing Laboratory, Technical Report Series, N 376, February 1992. E. Levy, and A. Silberschatz. Distributed File System: Concepts and Examples. Computing Surveys, 22(1): 321-374, December 1990. M. McKusick. Secondary Storage and Filesystems. ACM Computing Surveyes, 28(1), March 1996. P. Messina, D. Culler, W. Pfeiffer, W. Martin, J. Oden and G. Smith. Architecture. Communications of the ACM, 41(11): 36-44, November 1998. J.Menon and M. Hartung. The IBM 3990 Disk Cache. In Proceedings of the COMPCON, pp. 146-151, June 1988. M. McKusick, W. Joy, S. Leffler and S. Fabry. A Fast File System for UNIX. ACM Transactions on Computer Systems, 2(3): 181-197, August 1984. D. Major, G. Minshall and K. Powell. An Overview of the NetWare Operating System. In Proceedings of the 1994 Winter USENIX, pp. 355372, January 1994.
[Jal94] [Lam78]
[LCN90]
[LEK91]
[Lit92]
[LS90]
[McK96]
[MCP+98]
[MH88]
[MJL+84]
[MMP94]
Bibliografia
121
[MSC+90]
J. Moran, R. Sandberg, D. Coleman, J. Kepecs and B. Lyon. Breaking Through the NFS Performance Barrier. In Proceedings of the EUUG Spring, pp. 199-206, April 1990. T. Mudge et al. Strategic Directions in Computer Architecture. ACM Computing Surveyes, 28(4): 671-678, December 1996. P. Norton. Peter Nortons Inside the PC. Sams Publishing, 1995. M. Nelson, B. Welch, and J. K. Ousterhout. Caching in the Sprite Network File System. ACM Trans. on Computer Systems, 6(1): 134-154, February 1988. J. K. Ousterhout, A. Cherenson, F. Douglis, M. Nelson and B. Welch. The Sprite Network Operating System. IEEE Computer, 21(2): 23-36, February 1988. J. K. Ousterhout, Herve Da Costa, D. Harrison, J. Kunze, M. Kupfer and J. Thompson. A Trace-Driven Analysis of the UNIX 4.2 BSD File System. In Proceedings of the 1985 Symposium on Operating System Principles, pp. 15-24, December 1985. J. K. Ousterhout, and F. Douglis. Beating the I/O Bottleneck: A Case for Log-Structured File Systems. Technical Report, UCB/CSD 88/467, Computer Science Division, UC Berkeley, October 1988. Object Management Group. CORBA Services: Common Object Services Specification. Reference OMG 1995, http://www@omg.org. M. H. Olsen, E. Oskiewicz, and J.P. Warne. A Model for Interface Groups. Proceedings of SRDS-10. October 1991. S. Pakin, M. Lauria and A. Chein. High Performance Messagins on Workstations: Illinois Fast Messages (FM) for Myrinet. In Proceedings of Supercomputing 95, 1995. M. Rosenblum, and J. K. Ousterhout. The Design and Implementation of a Log-Structured File System. ACM Transactions on Computing Systems, 10(1): 26-52, February 1992. D. Ritchie and K. Thompson. The UNIX Time-Sharing System. The Bell System Thecnical Journal, 57(6): 1905-1930, July 1978.
122
[Mud+96]
[Nor95] [NWO88]
[OCD+88]
[OCH+85]
[OD88]
[OMG95]
[OOW91]
[PLC95]
[RO92]
[RT78]
Bibliografia
[Sat93] [SBM+93]
M. Satyanarayanan. Distributed System. ACM Press, 1993. M. Seltzer K. Bostic, M. McKusick and C. Staelin. An Implementation of a Log-Structured File System for UNIX. In Proceedings of the Winter 1993 USENIX Conference, pp. 307-326, January 1993. F. B. Schneider. Implementing Fault-Tolerant Services Using State Machine Approach: A Tutorial. ACM Computing Surveys, 22(4): 299319, December 1990. M. Seltzer, P. Chen and J. Ousterhout. Disk Scheduling Revisted. In Proceedings of the Winter 1990 USENIX Techinical Conference. January 1990. R. Sandberg, D. Goldberg, S. Kleiman, D. Walsh and B. Lyon. Design and Implementation of the Sun Network File System. In Proceedings. of the Summer 1985 USENIX, pp. 119-130, June 1985. C. Stunkel, D. Shea, B. Abali, M. Atkins, C. Bender, D. Grice, P. Hochschild, D. Joseph, B. Nathanson, R. Swetz, R. Stucke, M. Tsao and P. Varker. The SP2 High-Performance Switch. IBM System J, 34(2): 185-204, 1995. T. Stabell-Kulo. Security and Log Structured File Systems. Operating Systems Review, 31(2): 9-10, April 1997. H. Stern. Managing NFS and NIS. OReilly & Associates, Inc, 1991, ISBN 0-937175-75-7. W. Stevens. Advanced Programming in the UNIX Environment. Addison Wesley, 1992. S.Sumimoto, H. Tezuka, A. Hori, H. Harada, T. Takahashi and Y. Ishikawa. The Design and Evalution of High Performance Communication using a Gigabit Ethernet. In Proceedings of the International Conference on Supercomputing, pp. 260-267, 1999. Tanenbaum, A. S. Modern Operating Systems. Prentice Hall, Inc, 1992. Tanenbaum, A. S. Distributed Operating Systems. Prentice Hall, Inc, 1995.
[Sch90]
[SCO90]
[SGK+85]
[SSA+95]
[Sta97]
[Ste91]
[Ste92]
[STH+99]
[Tan92] [Tan95]
Bibliografia
123
[TE95]
TIA (Telecommunications Industries Association) / EIA (Eletronics Industries Alliance) Standards. TIA/EIA-568-A. Commercial Building Telecommunications Cable Standard. Comittee TR-41.8.1, October 1995. Michael Wu and Willy Zwaenepoel. eNVy: Non-Volatile, Main Memory Storage Syatem. In Proceedings of the 1994 International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), October 1994.
[WZ94]
Bibliografia
124
Apndice A
9 Dados Replicados pelas Primitivas do SALIUS
Cada primitiva do SALIUS est associada a um conjunto de dados, os quais ela possivelmente altera e replica. Esse apndice analisa, para cada primitiva do servio, os dados que podem ser alterados e em que situaes tais alteraes acontecem.
a) s_creat
A primitiva s_creat utilizada para criar um arquivo. Ela aloca um n-i para o novo arquivo. Para isso, retira um n-i da lista de ns-i livres. Conseqentemente, a primitiva altera o superbloco, onde a lista de ns-i livres est armazenada e onde existe um contador de ns-i livres, que decrementado quando o n-i alocado. A primitiva tambm cria uma entrada para o n-i do arquivo no diretrio pai, alterando um bloco de dados desse diretrio. Se o tamanho do diretrio pai aumentar, a primitiva ajusta o tamanho de arquivo, armazenado no n-i desse diretrio. Se o ltimo bloco de dados do diretrio pai estiver cheio, a primitiva s_creat deve alocar um novo bloco para armazenar a entrada do arquivo, retirando um bloco da lista de blocos livres e alterando o contador de blocos livres, no superbloco. A primitiva s_creat precisa replicar todas as estruturas alteradas durante a sua execuo, o que pode consistir de: o superbloco, o n-i do novo arquivo, o n-i do diretrio pai e o bloco de dados do diretrio pai, com a entrada do novo arquivo.
125
b) open
A primitiva open abre um arquivo existente e pode criar um novo arquivo, caso o flag O_CREAT seja informado. No caso da criao de um arquivo, os dados que devem ser replicados so os mesmos da primitiva s_creat. Quando um arquivo existente aberto, normalmente, nenhum dado alterado, com exceo da situao em que o flag O_TRUNC informado. Nesse caso, todos os blocos do arquivo so liberados e a primitiva altera o n-i do arquivo, ajustando o tamanho do arquivo para zero. A operao de truncamento do arquivo tambm afeta o superbloco, pois os blocos liberados so inseridos na lista de blocos livres e o tamanho dessa lista incrementado. Assim, a primitiva open, quando invocada com a opo O_TRUNC, deve replicar o n-i do arquivo e o superbloco.
c) write
A primitiva write utilizada para escrever dados em um arquivo. Quando uma aplicao invoca essa primitiva, ela passa, como parmetro de entrada, um buffer de usurio contendo os dados a serem alterados. A primitiva deve replicar os dados informados, bem como a posio no arquivo, onde deve iniciar a gravao desses dados. Essa posio lida na tabela de arquivos abertos. Se o arquivo tiver sido previamente aberto com a opo O_APPEND, significa que os dados sero acrescidos ao final do arquivo, aumentando o seu tamanho. Nesse caso, a primitiva ajusta o tamanho do arquivo, no seu respectivo n-i. Quando o tamanho de um arquivo aumenta, novos blocos precisam ser alocados, alterando a lista de blocos livres e o superbloco. Desse modo, a primitiva write pode precisar replicar tambm o superbloco e o n-i do arquivo.
d) s_mkdir
A primitiva s_mkdir cria um novo diretrio. Assim, deve replicar os mesmos dados que a primitiva s_creat, com uma pequena diferena: ao invs do n-i de um arquivo, a primitiva vai replicar o n-i do novo diretrio. Adicionalmente a primitiva s_mkdir deve replicar o primeiro bloco de dados do diretrio, contendo as entradas . (do prprio diretrio) e .. (do diretrio pai).
126
e) s_mknod
A primitiva s_mknod utilizada para criar qualquer tipo de arquivo. Assim, deve replicar os mesmos dados que a primitiva s_mkdir, no caso da criao de um diretrio, ou os mesmos dados replicados pela primitiva s_creat, nos demais tipos de arquivos.
f) s_link
A primitiva s_link utilizada para criar uma nova entrada para um arquivo existente, num diretrio informado. Para isso, altera um bloco de dados desse diretrio, acrescentando a entrada para o arquivo. O diretrio aumenta de tamanho e a primitiva incrementa o tamanho do diretrio, armazenado no seu respectivo n-i. Se o ltimo bloco de dados do diretrio no comportar a nova entrada, a primitiva s_link precisa alocar um novo bloco de dados, alterando, portanto, a lista de blocos livres e o superbloco. Finalmente, a primitiva altera o n-i do arquivo, incrementando o contador de ligaes. Assim, a primitiva s_link sempre precisa replicar o n-i do arquivo, o n-i do diretrio o e o bloco de dados do diretrio contendo a nova entrada. Eventualmente, a primitiva pode necessitar alterar e replicar o superbloco.
g) s_unlink
A primitiva s_unlink utilizada para remover uma entrada de diretrio. Portanto, o bloco de dados do diretrio, onde a entrada est armazenada, alterado. Alm disso, a primitiva ajusta o tamanho do diretrio, que diminui, no seu respectivo n-i. Finalmente, a primitiva altera o n-i do arquivo, decrementando o nmero de ligaes existentes. Assim, a primitiva precisa replicar o bloco de dados de onde a entrada foi excluda, o n-i do diretrio e o n-i do arquivo. Quando a ltima entrada de diretrio de um arquivo removida, o arquivo excludo do sistema. Para isso, a primitiva s_unlink libera todos os blocos de dados do arquivo e o n-i associado. O superbloco tambm alterado, porque os blocos de dados liberados so inseridos na lista de blocos livres, enquanto o n-i do arquivo inserido na lista de ns-i livres. Nesse caso, a primitiva replica o superbloco e no replica o n-i do arquivo excludo, obviamente.
h) s_chown e s_chmod
As primitivas s_chown e s_chmode s alteram o n-i de um arquivo, ou de um diretrio, mudando, respectivamente, os atributos proprietrio e permisses de acesso. Assim, tais primitivas s precisam replicar o n-i do arquivo, ou do diretrio que est sendo alterado.
Apndice A: Dados Replicados pelas Primitivas do SALIUS 127