• Nenhum resultado encontrado

Num sistema de armazenamento distribuído composto por até milhares de repositórios não-dedicados, o gerenciamento de dados armazenados é parte fundamental. O gerenciamento inclui diversas tarefas, como (1) permitir a localização dos componentes de cada arquivo armazenado, (2) garantir a disponi- bilidade do arquivo, (3) tratar da entrada e saída dinâmica de repositórios do sistema e (4) otimizar o desempenho na recuperação de arquivos armazenados.

7.4.1 Disponibilidade de dados

Ao analisar propriedades de disponibilidade de dados armazenados, temos que considerar dois ce- nários. O primeiro é o de indisponibilidades temporárias, que podem ser causadas pelos donos das máquinas reobtendo seus recursos computacionais, desligamentos temporários das máquinas ou desco- nexões da rede. O segundo são as constantes alterações no conjunto de membros da grade, que são causadas pelas saídas, permanentes ou por longos períodos, de ADRs ou de aglomerados, resultando na perda de fragmentos armazenados. Para evitar que arquivos sejam perdidos, definimos um mecanismo para reconstruir estes fragmentos.

Na prática, pode ser difícil diferenciar os dois cenários, uma vez que não temos como determinar se uma máquina que não está respondendo irá se reconectar novamente ao sistema em pouco tempo. Normalmente a diferenciação se dá por um limiar; por exemplo, se a máquina passa alguns dias sem

7.4 Gerenciamento de dados armazenados 113 responder, podemos supor que ela não retornará em breve ao sistema. Já no caso de máquinas comparti- lhadas que estão temporariamente ocupadas e, por este motivo, não podem ser utilizadas para armazenar e recuperar fragmentos, podemos facilmente concluir que estamos no primeiro cenário. Nesta seção discutimos o primeiro cenário e deixamos para discutir o segundo na Seção 7.4.3.

Um fator importante que causa indisponibilidades temporárias em máquinas compartilhadas é que estas normalmente são configuradas por seus donos para enviar e receber dados apenas quando estiverem ociosas. Estas máquinas ficam indisponíveis simplesmente porque estão sendo utilizados por um usuário local. Diversos experimentos de monitoramento do uso de máquinas [20, 43, 92] indicam que existem padrões de usos correlacionados nos tempos de ociosidade e funcionamento de máquinas de um mesmo laboratório ou departamento. Por exemplo, como era de se esperar, durante o período noturno e finais de semana, o tempo médio de ociosidade é maior do que durante o período diurno em dias de trabalho. Além disso, diferentes ambientes, como corporativo e universitário, parecem possuir diferentes padrões de uso.

Outro fator de indisponibilidade é o desligamento das máquinas por curtos períodos. Máquinas po- dem ser desligadas por problemas temporários de software ou hardware, durante o período noturno, para economizar energia, ou durante falhas no fornecimento de energia elétrica. Além disso, precisamos con- siderar as propriedades de conectividade fim-a-fim da rede. Medidas da conectividade entre máquinas na Internet provêm uma estimativa de que entre 1.5% a 3.3% do total de tentativas de conexão falham [36]. Indisponibilidades temporárias podem reduzir o número de máquinas disponíveis pela metade num período de poucas horas. O uso do algoritmo de identificadores virtuais reduz o problema colocando fragmentos em máquinas com maior disponibilidade. Além disso, caso a grade seja compostas por aglo- merados geograficamente distribuídos, o protocolo de armazenamento de dados normalmente coloca fragmentos em máquinas geograficamente distantes, minimizando o efeito de indisponibilidades corre- lacionadas. Finalmente, gerando um maior número de fragmentos durante a codificação dos dados é possível obter melhores níveis de tolerância a falhas [107, 141].

7.4.2 Gerenciamento de arquivos

O sistema precisa gerenciar os arquivos armazenados, incluindo seus fragmentos. Este gerencia- mento é realizado através dos FFIs, que contêm: (1) o identificador de cada fragmento, definido como o valor da aplicação da função de espalhamento segura SHA-1 sobre seu conteúdo, (2) o endereço do ADR que armazena cada fragmento e (3) uma cadeia de caracteres que identifica o arquivo. O identificador do fragmento é utilizado durante o processo de reconstrução do arquivo para verificar a integridade do conteúdo do fragmento.

O FFI é identificado pelo valor do SHA-1 sobre os identificadores dos fragmentos e cadeia de carac- teres que identifica o arquivo. Não incluímos os endereços dos ADRs ao calcular o identificador do FFI porque a localização de cada fragmento pode mudar à medida em que ADRs deixam o sistema e frag-

mentos são reconstruídos. O identificador do FFI é gerado ao armazenar um arquivo e posteriormente utilizado para recuperar este arquivo. Este identificador possui a propriedade de ser utilizado tanto para recuperar o arquivo quanto para verificá-lo, de modo que podemos dizer que arquivos armazenados no OppStore são auto-verificáveis [142].

Arquivos armazenados podem também ser modificados, mas o sistema fornece suporte apenas à adi- ção de dados no final do arquivo (appending). Caso um cliente deseje modificar o arquivo de outra maneira, ele deve remover o arquivo antigo antigo e criar um novo. Para realizar a adição de dados, o

access broker recupera o FFI referente ao arquivo, codifica os dados que serão adicionados em fragmen-

tos, calcula e adiciona os identificadores destes fragmentos ao FFI, calcula um novo identificador para o FFI e substitui o antigo FFI pelo novo. Já os novos fragmentos são transferidos para os repositórios que mantêm os fragmentos originais e adicionados ao final destes fragmentos. Deste modo, apenas o FFI relativo ao arquivo modificado precisa ser substituído, os fragmentos armazenados são mantidos em seus locais originais.

Para gerenciar arquivos armazenados que não são mais utilizados, OppStore provê um certificado de empréstimo (lease), com um tempo limitado de validade, para cada arquivo armazenado. Estes certifi- cados podem ser renovados pelos clientes que armazenaram o arquivo a qualquer momento. Durante o período de validade do certificado, o OppStore tenta garantir que aquele arquivo ficará disponível. Após o término da validade do certificado, o arquivo e os fragmentos são marcados como livres para remoção. Clientes podem tentar recuperar ou renovar a validade de arquivos com certificados vencidos, mas o sistema não oferece nenhuma garantia de que isso será possível.

7.4.3 Gerenciamento de fragmentos

Quando máquinas saem do sistema, os fragmentos armazenados nestas máquinas são perdidos. Para garantir que os arquivos que contêm estes fragmentos possam ser recuperados, o sistema deve reconstruir estes fragmentos. Cada CDRM é responsável por monitorar os ADRs de seu aglomerado. Quando um ADR deixa o sistema, o CDRM verifica a lista de fragmentos que estavam armazenados naquele ADR e os identificadores dos FFIs que contêm estes fragmentos. O CDRM envia então uma mensagem para cada FFI, contendo a lista dos fragmentos que devem ser marcados como perdidos. Cada CDRM também monitora seus CDRMs vizinhos, de modo que no caso de um aglomerado deixar o sistema, os fragmentos armazenados naquele aglomerado também são marcados como perdidos.

Quando o número de fragmentos perdidos de um FFI passar de um limiar, o CDRM responsável por aquele FFI inicia um procedimento de substituição destes fragmentos. Para reconstruir fragmentos perdidos, o CDRM precisa obter os fragmentos necessários para recuperar o arquivo original, o que faz da reconstrução de fragmentos uma operação cara. OppStore realiza esta reconstrução apenas no caso de arquivos cujo certificado de aluguel (lease) não esteja vencido.

7.5 Implantação sobre grades computacionais 115