Sistema de arquivos distribuído para nuvem - Distributed file system for cloud
Um sistema de arquivos distribuído para nuvem é um sistema de arquivos que permite que muitos clientes tenham acesso aos dados e oferece suporte a operações (criar, excluir, modificar, ler, gravar) nesses dados. Cada arquivo de dados pode ser particionado em várias partes chamadas chunks . Cada trecho pode ser armazenado em diferentes máquinas remotas, facilitando a execução paralela de aplicativos. Normalmente, os dados são armazenados em arquivos em uma árvore hierárquica , onde os nós representam diretórios. Existem várias maneiras de compartilhar arquivos em uma arquitetura distribuída: cada solução deve ser adequada para um determinado tipo de aplicativo, dependendo da complexidade do aplicativo. Enquanto isso, a segurança do sistema deve ser garantida. Confidencialidade , disponibilidade e integridade são as principais chaves para um sistema seguro.
Os usuários podem compartilhar recursos de computação através da Internet graças à computação em nuvem, que normalmente é caracterizada por recursos escaláveis e elásticos - como servidores físicos , aplicativos e quaisquer serviços que são virtualizados e alocados dinamicamente. A sincronização é necessária para garantir que todos os dispositivos estejam atualizados.
Os sistemas de arquivos distribuídos permitem que muitas empresas de grande, médio e pequeno porte armazenem e acessem seus dados remotos da mesma forma que fazem com os dados locais, facilitando o uso de recursos variáveis.
Visão geral
História
Hoje, existem muitas implementações de sistemas de arquivos distribuídos. Os primeiros servidores de arquivos foram desenvolvidos por pesquisadores na década de 1970. O Network File System da Sun Microsystem tornou-se disponível na década de 1980. Antes disso, as pessoas que desejavam compartilhar arquivos usavam o método sneakernet , transportando fisicamente os arquivos na mídia de armazenamento de um lugar para outro. Depois que as redes de computadores começaram a proliferar, tornou-se óbvio que os sistemas de arquivos existentes tinham muitas limitações e eram inadequados para ambientes multiusuário. Os usuários inicialmente usaram o FTP para compartilhar arquivos. O FTP foi executado pela primeira vez no PDP-10 no final de 1973. Mesmo com o FTP, os arquivos precisavam ser copiados do computador de origem para um servidor e, em seguida, do servidor para o computador de destino. Os usuários deveriam saber os endereços físicos de todos os computadores envolvidos no compartilhamento de arquivos.
Técnicas de apoio
Os data centers modernos devem oferecer suporte a ambientes grandes e heterogêneos, consistindo em um grande número de computadores de capacidades variadas. A computação em nuvem coordena a operação de todos esses sistemas, com técnicas como rede de data center (DCN), a estrutura MapReduce , que oferece suporte a aplicativos de computação com uso intensivo de dados em sistemas paralelos e distribuídos e técnicas de virtualização que fornecem alocação dinâmica de recursos, permitindo operação múltipla sistemas coexistam no mesmo servidor físico.
Formulários
A computação em nuvem oferece computação em grande escala graças à sua capacidade de fornecer os recursos de CPU e armazenamento necessários ao usuário com total transparência. Isso torna a computação em nuvem particularmente adequada para oferecer suporte a diferentes tipos de aplicativos que requerem processamento distribuído em grande escala. Essa computação com uso intensivo de dados precisa de um sistema de arquivos de alto desempenho que pode compartilhar dados entre máquinas virtuais (VM).
A computação em nuvem aloca dinamicamente os recursos necessários, liberando-os assim que uma tarefa é concluída, exigindo que os usuários paguem apenas pelos serviços necessários, geralmente por meio de um contrato de nível de serviço . Paradigmas de computação em nuvem e computação em cluster estão se tornando cada vez mais importantes para o processamento de dados industriais e aplicações científicas, como astronomia e física, que frequentemente requerem a disponibilidade de um grande número de computadores para realizar experimentos.
Arquiteturas
A maioria dos sistemas de arquivos distribuídos são construídos na arquitetura cliente-servidor, mas também existem outras soluções descentralizadas.
Arquitetura cliente-servidor
O Network File System (NFS) usa uma arquitetura cliente-servidor , que permite compartilhar arquivos entre várias máquinas em uma rede como se estivessem localizadas localmente, fornecendo uma visualização padronizada. O protocolo NFS permite que processos de clientes heterogêneos, provavelmente rodando em diferentes máquinas e em diferentes sistemas operacionais, acessem arquivos em um servidor distante, ignorando a localização real dos arquivos. Depender de um único servidor faz com que o protocolo NFS sofra de disponibilidade potencialmente baixa e escalabilidade insuficiente. Usar vários servidores não resolve o problema de disponibilidade, pois cada servidor está trabalhando de forma independente. O modelo de NFS é um serviço de arquivo remoto. Este modelo também é chamado de modelo de acesso remoto, que está em contraste com o modelo de upload / download:
- Modelo de acesso remoto: Oferece transparência, o cliente tem acesso a um arquivo. Ele envia solicitações para o arquivo remoto (enquanto o arquivo permanece no servidor).
- Modelo de upload / download: o cliente pode acessar o arquivo apenas localmente. Isso significa que o cliente deve baixar o arquivo, fazer modificações e carregá-lo novamente, para ser usado por outros clientes.
O sistema de arquivos usado pelo NFS é quase igual ao usado pelos sistemas Unix . Os arquivos são organizados hierarquicamente em um gráfico de nomenclatura no qual os diretórios e arquivos são representados por nós.
Arquiteturas baseadas em cluster
Uma arquitetura baseada em cluster ameniza alguns dos problemas nas arquiteturas cliente-servidor, melhorando a execução de aplicativos em paralelo. A técnica usada aqui é a divisão de arquivos: um arquivo é dividido em vários blocos, que são "divididos" em vários servidores de armazenamento. O objetivo é permitir o acesso a diferentes partes de um arquivo em paralelo. Se o aplicativo não se beneficiar dessa técnica, seria mais conveniente armazenar arquivos diferentes em servidores diferentes. No entanto, quando se trata de organizar um sistema de arquivos distribuído para grandes data centers, como Amazon e Google, que oferecem serviços para clientes da web permitindo múltiplas operações (leitura, atualização, exclusão, ...) para um grande número de arquivos distribuídos entre um grande número de computadores, então as soluções baseadas em cluster tornam-se mais benéficas. Observe que ter um grande número de computadores pode significar mais falhas de hardware. Dois dos sistemas de arquivos distribuídos (DFS) mais usados desse tipo são o Google File System (GFS) e o Hadoop Distributed File System (HDFS). Os sistemas de arquivos de ambos são implementados por processos de nível de usuário rodando em cima de um sistema operacional padrão ( Linux no caso de GFS).
Princípios de design
Metas
O Google File System (GFS) e o Hadoop Distributed File System (HDFS) foram desenvolvidos especificamente para lidar com o processamento em lote em conjuntos de dados muito grandes. Para tanto, devem ser consideradas as seguintes hipóteses:
- Alta disponibilidade: o cluster pode conter milhares de servidores de arquivos e alguns deles podem estar inativos a qualquer momento
- Um servidor pertence a um rack, uma sala, um data center, um país e um continente, a fim de identificar com precisão sua localização geográfica
- O tamanho de um arquivo pode variar de muitos gigabytes a muitos terabytes. O sistema de arquivos deve ser capaz de suportar um grande número de arquivos
- A necessidade de suportar operações de acréscimo e permitir que o conteúdo do arquivo seja visível mesmo enquanto um arquivo está sendo escrito
- A comunicação é confiável entre máquinas de trabalho: TCP / IP é usado com uma abstração de comunicação RPC de chamada de procedimento remoto . O TCP permite que o cliente saiba quase imediatamente quando há um problema e a necessidade de fazer uma nova conexão.
Balanceamento de carga
O balanceamento de carga é essencial para uma operação eficiente em ambientes distribuídos. Significa distribuir o trabalho entre diferentes servidores, de forma justa, para que mais trabalho seja feito no mesmo tempo e para atender os clientes com mais rapidez. Em um sistema contendo N chunkservers em uma nuvem (N sendo 1000, 10000 ou mais), onde um certo número de arquivos são armazenados, cada arquivo é dividido em várias partes ou pedaços de tamanho fixo (por exemplo, 64 megabytes), o carga de cada chunkserver sendo proporcional ao número de chunks hospedados pelo servidor. Em uma nuvem com balanceamento de carga, os recursos podem ser usados com eficiência enquanto maximizam o desempenho de aplicativos baseados em MapReduce.
Rebalanceamento de carga
Em um ambiente de computação em nuvem, a falha é a norma e os chunkservers podem ser atualizados, substituídos e adicionados ao sistema. Os arquivos também podem ser criados, excluídos e anexados dinamicamente. Isso leva a um desequilíbrio de carga em um sistema de arquivos distribuído, o que significa que os fragmentos de arquivos não são distribuídos de forma equitativa entre os servidores.
Os sistemas de arquivos distribuídos em nuvens, como GFS e HDFS, contam com servidores ou nós centrais ou principais (Master para GFS e NameNode para HDFS) para gerenciar os metadados e o balanceamento de carga. O mestre reequilibra as réplicas periodicamente: os dados devem ser movidos de um DataNode / chunkserver para outro se o espaço livre no primeiro servidor cair abaixo de um certo limite. No entanto, essa abordagem centralizada pode se tornar um gargalo para esses servidores mestres, se eles se tornarem incapazes de gerenciar um grande número de acessos a arquivos, pois aumenta suas já pesadas cargas. O problema de rebalanceamento de carga é NP-difícil .
A fim de obter um grande número de chunkservers para trabalhar em colaboração e resolver o problema de balanceamento de carga em sistemas de arquivos distribuídos, várias abordagens foram propostas, como realocar os chunks de arquivo para que os chunks possam ser distribuídos o mais uniformemente possível, reduzindo o custo do movimento tanto quanto possível.
Sistema de arquivos do Google
Descrição
O Google, uma das maiores empresas de internet, criou seu próprio sistema de arquivos distribuído, denominado Google File System (GFS), para atender às crescentes demandas das necessidades de processamento de dados do Google, e é usado para todos os serviços em nuvem. GFS é um sistema de arquivos distribuído escalonável para aplicativos de uso intensivo de dados. Ele fornece armazenamento de dados de alto desempenho e tolerante a falhas para um grande número de clientes acessando-o simultaneamente.
O GFS usa MapReduce , que permite aos usuários criar programas e executá-los em várias máquinas sem pensar em paralelização e problemas de balanceamento de carga. A arquitetura GFS é baseada em ter um único servidor mestre para vários chunkservers e vários clientes.
O servidor mestre em execução em um nó dedicado é responsável por coordenar os recursos de armazenamento e gerenciar os metadados dos arquivos (o equivalente a, por exemplo, inodes em sistemas de arquivos clássicos). Cada arquivo é dividido em vários blocos de 64 megabytes. Cada bloco é armazenado em um servidor de bloco. Um bloco é identificado por um identificador de bloco, que é um número de 64 bits globalmente exclusivo atribuído pelo mestre quando o bloco é criado pela primeira vez.
O mestre mantém todos os metadados dos arquivos, incluindo nomes de arquivos, diretórios e o mapeamento de arquivos para a lista de blocos que contêm os dados de cada arquivo. Os metadados são mantidos na memória principal do servidor mestre, junto com o mapeamento dos arquivos em blocos. As atualizações desses dados são registradas em um log de operação no disco. Este log de operação é replicado em máquinas remotas. Quando o log se torna muito grande, um ponto de verificação é feito e os dados da memória principal são armazenados em uma estrutura de árvore B para facilitar o mapeamento de volta para a memória principal.
Tolerância ao erro
Para facilitar a tolerância a falhas , cada bloco é replicado em vários (padrão, três) servidores de bloco. Um chunk está disponível em pelo menos um servidor de chunk. A vantagem desse esquema é a simplicidade. O mestre é responsável por alocar os servidores de chunk para cada chunk e é contatado apenas para informações de metadados. Para todos os outros dados, o cliente deve interagir com os servidores chunk.
O mestre mantém registro de onde um pedaço está localizado. No entanto, ele não tenta manter as localizações dos blocos com precisão, mas apenas ocasionalmente contata os servidores dos blocos para ver quais blocos eles armazenaram. Isso permite escalabilidade e ajuda a evitar gargalos devido ao aumento da carga de trabalho.
No GFS, a maioria dos arquivos é modificada acrescentando-se novos dados e não sobrescrevendo os dados existentes. Depois de gravados, os arquivos geralmente são lidos apenas sequencialmente, em vez de aleatoriamente, e isso torna este DFS o mais adequado para cenários em que muitos arquivos grandes são criados uma vez, mas lidos muitas vezes.
Processamento de arquivo
Quando um cliente deseja gravar / atualizar um arquivo, o mestre atribui uma réplica, que será a réplica primária se for a primeira modificação. O processo de escrita é composto de duas etapas:
- Envio: primeiro, e de longe o mais importante, o cliente entra em contato com o mestre para descobrir que chunk servidores contêm os dados. O cliente recebe uma lista de réplicas que identificam os servidores do bloco primário e secundário. O cliente então contata o servidor de bloco de réplica mais próximo e envia os dados para ele. Este servidor enviará os dados para o próximo mais próximo, que os encaminha para outra réplica e assim por diante. Os dados são propagados e armazenados em cache na memória, mas ainda não são gravados em um arquivo.
- Escrita: Quando todas as réplicas tiverem recebido os dados, o cliente envia uma solicitação de escrita ao servidor do chunk primário, identificando os dados que foram enviados na fase de envio. O servidor primário atribuirá um número de sequência às operações de gravação que recebeu, aplicará as gravações ao arquivo na ordem do número de série e encaminhará as solicitações de gravação nessa ordem para os secundários. Enquanto isso, o mestre é mantido fora do loop.
Consequentemente, podemos diferenciar dois tipos de fluxos: o fluxo de dados e o fluxo de controle. O fluxo de dados está associado à fase de envio e o fluxo de controle à fase de escrita. Isso garante que o servidor do bloco primário assuma o controle da ordem de gravação. Observe que, quando o mestre atribui a operação de gravação a uma réplica, ele incrementa o número da versão do bloco e informa todas as réplicas que contêm esse bloco do novo número da versão. Os números de versão do chunk permitem a detecção de erros de atualização, se uma réplica não foi atualizada porque o servidor do chunk estava inativo.
Alguns novos aplicativos do Google não funcionaram bem com o tamanho do bloco de 64 megabytes. Para resolver esse problema, a GFS começou, em 2004, a implementar a abordagem Bigtable .
Sistema de arquivos distribuído Hadoop
HDFS , desenvolvido pela Apache Software Foundation , é um sistema de arquivos distribuído projetado para armazenar grandes quantidades de dados (terabytes ou mesmo petabytes). Sua arquitetura é semelhante ao GFS, ou seja, uma arquitetura mestre / escravo. O HDFS é normalmente instalado em um cluster de computadores. O conceito de design do Hadoop é informado pelo Google, com Google File System, Google MapReduce e Bigtable , sendo implementado pelo Hadoop Distributed File System (HDFS), Hadoop MapReduce e Hadoop Base (HBase) respectivamente. Como o GFS, o HDFS é adequado para cenários com acesso a arquivos de gravação uma vez, leitura de muitos e suporta acréscimos e truncamentos de arquivos em vez de leituras e gravações aleatórias para simplificar os problemas de coerência de dados.
Um cluster HDFS consiste em um único NameNode e várias máquinas DataNode. O NameNode, um servidor mestre, gerencia e mantém os metadados de DataNodes de armazenamento em sua RAM. Os DataNodes gerenciam o armazenamento anexado aos nós em que são executados. NameNode e DataNode são softwares projetados para serem executados em máquinas de uso diário, que normalmente são executadas em um sistema operacional Linux. O HDFS pode ser executado em qualquer máquina que suporte Java e, portanto, pode executar um NameNode ou o software Datanode.
Em um cluster HDFS, um arquivo é dividido em um ou mais blocos de tamanhos iguais, exceto pela possibilidade de o último bloco ser menor. Cada bloco é armazenado em vários DataNodes e cada um pode ser replicado em vários DataNodes para garantir a disponibilidade. Por padrão, cada bloco é replicado três vezes, um processo denominado "Replicação em nível de bloco".
O NameNode gerencia as operações de namespace do sistema de arquivos, como abrir, fechar e renomear arquivos e diretórios, e regula o acesso aos arquivos. Ele também determina o mapeamento de blocos para DataNodes. Os DataNodes são responsáveis por atender às solicitações de leitura e gravação dos clientes do sistema de arquivos, gerenciar a alocação ou exclusão de blocos e replicar os blocos.
Quando um cliente deseja ler ou gravar dados, ele contata o NameNode e o NameNode verifica de onde os dados devem ser lidos ou gravados. Depois disso, o cliente tem a localização do DataNode e pode enviar solicitações de leitura ou gravação para ele.
O HDFS é tipicamente caracterizado por sua compatibilidade com esquemas de rebalanceamento de dados. Em geral, gerenciar o espaço livre em um DataNode é muito importante. Os dados devem ser movidos de um DataNode para outro, se o espaço livre não for adequado; e, no caso de criar réplicas adicionais, os dados devem ser movidos para garantir o equilíbrio do sistema.
Outros exemplos
Os sistemas de arquivos distribuídos podem ser otimizados para diferentes propósitos. Alguns, como aqueles projetados para serviços de Internet, incluindo GFS, são otimizados para escalabilidade. Outros designs para sistemas de arquivos distribuídos oferecem suporte a aplicativos de alto desempenho geralmente executados em paralelo. Alguns exemplos incluem: MapR File System (MapR-FS), Ceph-FS , Fraunhofer File System (BeeGFS) , Luster File System , IBM General Parallel File System (GPFS) e Parallel Virtual File System .
MapR-FS é um sistema de arquivos distribuído que é a base da Plataforma Convergente MapR, com recursos para armazenamento de arquivos distribuídos, um banco de dados NoSQL com várias APIs e um sistema de streaming de mensagens integrado. MapR-FS é otimizado para escalabilidade, desempenho, confiabilidade e disponibilidade. Sua capacidade de armazenamento de arquivos é compatível com a API do Apache Hadoop Distributed File System (HDFS), mas com várias características de design que o distinguem do HDFS. Entre as diferenças mais notáveis estão que o MapR-FS é um sistema de arquivos totalmente de leitura / gravação com metadados para arquivos e diretórios distribuídos no namespace, portanto, não há NameNode.
Ceph-FS é um sistema de arquivos distribuído que oferece excelente desempenho e confiabilidade. Ele responde aos desafios de lidar com arquivos e diretórios enormes, coordenando a atividade de milhares de discos, fornecendo acesso paralelo a metadados em grande escala, manipulando cargas de trabalho científicas e de uso geral, autenticando e criptografando em grande escala e aumentando ou diminuindo dinamicamente devido ao descomissionamento frequente do dispositivo, falhas do dispositivo e expansões de cluster.
BeeGFS é o sistema de arquivos paralelo de alto desempenho do Fraunhofer Competence Center for High Performance Computing. A arquitetura de metadados distribuídos do BeeGFS foi projetada para fornecer a escalabilidade e flexibilidade necessárias para executar HPC e aplicativos semelhantes com altas demandas de E / S.
O Luster File System foi projetado e implementado para lidar com o problema de gargalos tradicionalmente encontrados em sistemas distribuídos. O Lustre é caracterizado por sua eficiência, escalabilidade e redundância. O GPFS também foi projetado com o objetivo de remover esses gargalos.
Comunicação
O alto desempenho de sistemas de arquivos distribuídos requer comunicação eficiente entre nós de computação e acesso rápido aos sistemas de armazenamento. Operações como abrir, fechar, ler, gravar, enviar e receber precisam ser rápidas para garantir esse desempenho. Por exemplo, cada solicitação de leitura ou gravação acessa o armazenamento em disco, que apresenta latências de busca, rotação e rede.
As operações de comunicação de dados (enviar / receber) transferem dados do buffer do aplicativo para o kernel da máquina, o TCP controlando o processo e sendo implementado no kernel. No entanto, em caso de congestionamento ou erros de rede, o TCP pode não enviar os dados diretamente. Ao transferir dados de um buffer no kernel para o aplicativo, a máquina não lê o fluxo de bytes da máquina remota. Na verdade, o TCP é responsável por armazenar os dados do aplicativo em buffer.
A escolha do tamanho do buffer, para leitura e gravação de arquivos, ou envio e recebimento de arquivos, é feita no nível do aplicativo. O buffer é mantido usando uma lista ligada circular . Ele consiste em um conjunto de BufferNodes. Cada BufferNode possui um DataField. O DataField contém os dados e um ponteiro chamado NextBufferNode que aponta para o próximo BufferNode. Para encontrar a posição atual, dois ponteiros são usados: CurrentBufferNode e EndBufferNode, que representam a posição no BufferNode para as últimas posições de gravação e leitura. Se o BufferNode não tiver espaço livre, ele enviará um sinal de espera ao cliente para aguardar até que haja espaço disponível.
Sincronização baseada em nuvem do sistema de arquivos distribuído
Cada vez mais usuários têm vários dispositivos com conectividade ad hoc. Os conjuntos de dados replicados nesses dispositivos precisam ser sincronizados entre um número arbitrário de servidores. Isso é útil para backups e também para operação offline. De fato, quando as condições da rede do usuário não são boas, o dispositivo do usuário irá replicar seletivamente uma parte dos dados que serão modificados posteriormente e off-line. Assim que as condições da rede se tornarem boas, o dispositivo será sincronizado. Existem duas abordagens para lidar com o problema de sincronização distribuída: sincronização ponto a ponto controlada pelo usuário e sincronização de réplica mestre em nuvem.
- ponto a ponto controlado pelo usuário: software como o rsync deve ser instalado em todos os computadores dos usuários que contêm seus dados. Os arquivos são sincronizados por sincronização ponto a ponto, onde os usuários devem especificar endereços de rede e parâmetros de sincronização e, portanto, é um processo manual.
- sincronização mestre-réplica em nuvem: amplamente utilizada por serviços em nuvem, em que uma réplica mestre é mantida na nuvem, e todas as atualizações e operações de sincronização são para esta cópia mestre, oferecendo um alto nível de disponibilidade e confiabilidade em caso de falhas.
Chaves de segurança
Na computação em nuvem, os conceitos de segurança mais importantes são confidencialidade , integridade e disponibilidade (" CIA "). A confidencialidade torna-se indispensável para evitar a divulgação de dados privados. A integridade garante que os dados não sejam corrompidos.
Confidencialidade
Confidencialidade significa que os dados e as tarefas de computação são confidenciais: nem o provedor de nuvem nem outros clientes podem acessar os dados do cliente. Muitas pesquisas têm sido feitas sobre a confidencialidade, pois é um dos pontos cruciais que ainda apresenta desafios para a computação em nuvem. A falta de confiança nos provedores de nuvem também é um problema relacionado. A infraestrutura da nuvem deve garantir que os dados dos clientes não sejam acessados por terceiros não autorizados.
O ambiente se tornará inseguro se o provedor de serviços puder fazer o seguinte:
- localize os dados do consumidor na nuvem
- acessar e recuperar dados do consumidor
- compreender o significado dos dados (tipos de dados, funcionalidades e interfaces da aplicação e formato dos dados).
A localização geográfica dos dados ajuda a determinar a privacidade e a confidencialidade. A localização dos clientes deve ser levada em consideração. Por exemplo, clientes na Europa não terão interesse em usar datacenters localizados nos Estados Unidos, pois isso afeta a garantia da confidencialidade dos dados. Para lidar com esse problema, alguns fornecedores de computação em nuvem incluíram a localização geográfica do host como parâmetro do acordo de nível de serviço feito com o cliente, permitindo que os próprios usuários escolham as localizações dos servidores que hospedarão seus dados.
Outra abordagem à confidencialidade envolve a criptografia de dados. Caso contrário, haverá um sério risco de uso não autorizado. Existe uma variedade de soluções, como criptografar apenas dados confidenciais e suportar apenas algumas operações, a fim de simplificar a computação. Além disso, técnicas e ferramentas criptográficas como FHE , são utilizadas para preservar a privacidade na nuvem.
Integridade
Integridade na computação em nuvem implica integridade de dados , bem como integridade de computação . Tal integridade significa que os dados devem ser armazenados corretamente nos servidores em nuvem e, em caso de falhas ou computação incorreta, que os problemas devem ser detectados.
A integridade dos dados pode ser afetada por eventos maliciosos ou por erros de administração (por exemplo, durante backup e restauração, migração de dados ou alteração de associações em sistemas P2P ).
A integridade é fácil de alcançar usando criptografia (normalmente por meio de código de autenticação de mensagem , ou MACs, em blocos de dados).
Existem mecanismos de verificação que afetam a integridade dos dados. Por exemplo:
- HAIL (High-Availability and Integrity Layer) é um sistema criptográfico distribuído que permite a um conjunto de servidores provar a um cliente que um arquivo armazenado está intacto e recuperável.
- Hach PORs (provas de recuperabilidade para arquivos grandes) é baseado em um sistema criptográfico simétrico, onde há apenas uma chave de verificação que deve ser armazenada em um arquivo para melhorar sua integridade. Este método serve para criptografar um arquivo F e então gerar uma string aleatória chamada "sentinela" que deve ser adicionada ao final do arquivo criptografado. O servidor não consegue localizar o sentinela, o que é impossível diferenciar dos outros blocos, então uma pequena mudança indicaria se o arquivo foi alterado ou não.
- A verificação de PDP (possessão de dados prováveis) é uma classe de métodos eficientes e práticos que fornecem uma maneira eficiente de verificar a integridade dos dados em servidores não confiáveis:
- PDP: Antes de armazenar os dados em um servidor, o cliente deve armazenar, localmente, alguns metadados. Posteriormente, e sem baixar os dados, o cliente pode solicitar ao servidor que verifique se os dados não foram falsificados. Essa abordagem é usada para dados estáticos.
- PDP escalável: esta abordagem é baseada em uma chave simétrica, que é mais eficiente do que a criptografia de chave pública. Ele suporta algumas operações dinâmicas (modificação, exclusão e acréscimo), mas não pode ser usado para verificação pública.
- PDP dinâmico: esta abordagem estende o modelo PDP para suportar várias operações de atualização, como anexar, inserir, modificar e excluir, o que é adequado para computação intensiva.
Disponibilidade
A disponibilidade geralmente é afetada por replicação . Enquanto isso, a consistência deve ser garantida. No entanto, consistência e disponibilidade não podem ser alcançadas ao mesmo tempo; cada um é priorizado com algum sacrifício do outro. Um equilíbrio deve ser alcançado.
Os dados devem ter uma identidade para serem acessíveis. Por exemplo, Skute é um mecanismo baseado no armazenamento de chave / valor que permite a alocação dinâmica de dados de forma eficiente. Cada servidor deve ser identificado por uma etiqueta no formato continente-país-datacenter-sala-rack-servidor. O servidor pode fazer referência a vários nós virtuais, com cada nó tendo uma seleção de dados (ou várias partições de vários dados). Cada parte dos dados é identificada por um espaço de chave que é gerado por uma função hash criptográfica unilateral (por exemplo, MD5 ) e é localizado pelo valor da função hash desta chave. O espaço de chave pode ser particionado em várias partições com cada partição referindo-se a um pedaço de dados. Para executar a replicação, os nós virtuais devem ser replicados e referenciados por outros servidores. Para maximizar a durabilidade e disponibilidade dos dados, as réplicas devem ser colocadas em servidores diferentes e cada servidor deve estar em uma localização geográfica diferente, porque a disponibilidade dos dados aumenta com a diversidade geográfica. O processo de replicação inclui uma avaliação da disponibilidade de espaço, que deve estar acima de um determinado limite mínimo em cada servidor chunk. Caso contrário, os dados são replicados para outro servidor chunk. Cada partição, i, tem um valor de disponibilidade representado pela seguinte fórmula:
onde estão os servidores que hospedam as réplicas, e são a confiança dos servidores e (contando com fatores técnicos como componentes de hardware e não técnicos como a situação econômica e política de um país) e a diversidade é a distância geográfica entre e .
A replicação é uma ótima solução para garantir a disponibilidade dos dados, mas custa muito em termos de espaço de memória. DiskReduce é uma versão modificada do HDFS baseada na tecnologia RAID (RAID-5 e RAID-6) e permite a codificação assíncrona de dados replicados. Na verdade, existe um processo em segundo plano que procura dados amplamente replicados e exclui cópias extras após codificá-los. Outra abordagem é substituir a replicação pela codificação de eliminação. Além disso, para garantir a disponibilidade dos dados, existem muitas abordagens que permitem a recuperação dos dados. Na verdade, os dados devem ser codificados e, se forem perdidos, podem ser recuperados de fragmentos que foram construídos durante a fase de codificação. Algumas outras abordagens que aplicam mecanismos diferentes para garantir a disponibilidade são: Código Reed-Solomon do Microsoft Azure e RaidNode para HDFS. Além disso, o Google ainda está trabalhando em uma nova abordagem baseada em um mecanismo de codificação de eliminação.
Não há implementação de RAID para armazenamento em nuvem.
Aspectos econômicos
A economia da computação em nuvem está crescendo rapidamente. O governo dos EUA decidiu gastar 40% de sua taxa composta de crescimento anual (CAGR), estimada em 7 bilhões de dólares até 2015.
Mais e mais empresas têm utilizado a computação em nuvem para gerenciar a enorme quantidade de dados e superar a falta de capacidade de armazenamento, e porque permite que usem esses recursos como um serviço, garantindo que suas necessidades de computação sejam atendidas sem ter que investir em infraestrutura (modelo pré-pago).
Cada provedor de aplicativos tem que pagar periodicamente o custo de cada servidor onde as réplicas de dados são armazenadas. O custo de um servidor é determinado pela qualidade do hardware, as capacidades de armazenamento e seu processamento de consulta e sobrecarga de comunicação. A computação em nuvem permite que os provedores escalem seus serviços de acordo com as demandas do cliente.
O modelo pré-pago também alivia o fardo das empresas iniciantes que desejam se beneficiar de negócios intensivos em computação. A computação em nuvem também oferece uma oportunidade para muitos países do terceiro mundo que, de outra forma, não teriam esses recursos de computação. A computação em nuvem pode diminuir as barreiras de TI à inovação.
Apesar da ampla utilização da computação em nuvem, o compartilhamento eficiente de grandes volumes de dados em uma nuvem não confiável ainda é um desafio.
Referências
Bibliografia
- Andrew, S.Tanenbaum; Maarten, Van Steen (2006). Princípios e paradigmas de sistemas distribuídos (PDF) .
-
Fabio Kon (1996). "Sistemas de arquivos distribuídos, o estado da arte e o conceito de tese de doutorado". CiteSeerX 10.1.1.42.4609 . Citar diário requer
|journal=
( ajuda ) - Pavel Bžoch. "Distributed File Systems Past, Present and Future A Distributed File System for 2006 (1996)" (PDF) .
- Microssistema Sun. "Sistemas de arquivos distribuídos - uma visão geral" (PDF) .
- Jacobi, Tim-Daniel; Lingemann, Jan. "Evaluation of Distributed File Systems" (PDF) .
- Arquitetura, estrutura e design:
- Zhang, Qi-fei; Pan, Xue-zeng; Shen, Yan; Li, Wen-juan (2012). "Uma nova arquitetura escalonável de sistema de armazenamento em nuvem para arquivos pequenos com base em P2P". 2012 IEEE International Conference on Cluster Computing Workshops . Coll. of Comput. Sci. & Technol., Zhejiang Univ., Hangzhou, China. p. 41. doi : 10.1109 / ClusterW.2012.27 . ISBN 978-0-7695-4844-9. S2CID 12430485 .
- Azzedin, Farag (2013). "Rumo a uma arquitetura HDFS escalável". 2013 Conferência Internacional sobre Tecnologias e Sistemas de Colaboração (CTS) . Departamento de Informação e Ciência da Computação King Fahd University of Petroleum and Minerals. pp. 155–161. doi : 10.1109 / CTS.2013.6567222 . ISBN 978-1-4673-6404-1. S2CID 45293053 .
- Krzyzanowski, Paul (2012). "Sistemas de arquivos distribuídos" (PDF) .
- Kobayashi, K; Mikami, S; Kimura, H; Tatebe, O (2011). O sistema de arquivos Gfarm em nuvens de computação . Workshops de Processamento Paralelo e Distribuído e Fórum de Doutorado (IPDPSW), 2011 IEEE International Symposium on . Grad. Sch. de Syst. & Inf. Eng., Univ. de Tsukuba, Tsukuba, Japão. doi : 10.1109 / IPDPS.2011.255 .
- Humbetov, Shamil (2012). "Computação com uso intensivo de dados com redução de mapa e hadoop". 2012 6ª Conferência Internacional sobre Aplicação de Tecnologias de Informação e Comunicação (AICT) . Departamento de Engenharia da Computação Qafqaz University Baku, Azerbaijão. pp. 1-5. doi : 10.1109 / ICAICT.2012.6398489 . ISBN 978-1-4673-1740-5. S2CID 6113112 .
- Hsiao, Hung-Chang; Chung, Hsueh-Yi; Shen, Haiying; Chao, Yu-Chang (2013). Universidade Nacional Cheng Kung, Tainan. "Carregar Rebalanceamento para Sistemas de Arquivos Distribuídos em Nuvens". Sistemas Paralelos e Distribuídos, Transações IEEE ativadas . 24 (5): 951–962. doi : 10.1109 / TPDS.2012.196 . S2CID 11271386 .
- Kai, Fan; Dayang, Zhang; Hui, Li; Yintang, Yang (2013). "Um Algoritmo de Balanceamento de Carga de Feedback Adaptativo em HDFS". 2013 5ª Conferência Internacional sobre Redes Inteligentes e Sistemas Colaborativos . Laboratório chave estadual. of Integrated Service Networks, Xidian Univ., Xi'an, China. pp. 23–29. doi : 10.1109 / INCoS.2013.14 . ISBN 978-0-7695-4988-0. S2CID 14821266 .
- Upadhyaya, B; Azimov, F; Doan, TT; Choi, Eunmi; Kim, Sangbum; Kim, Pilsung (2008). "Sistema de Arquivos Distribuídos: Experimentos de Eficiência para Acesso e Comunicação de Dados". 2008 Quarta Conferência Internacional sobre Computação em Rede e Gestão Avançada da Informação . Sch. de ônibus. IT, Kookmin Univ., Seul. pp. 400–405. doi : 10.1109 / NCM.2008.164 . ISBN 978-0-7695-3322-3. S2CID 18933772 .
- Soares, Tiago S .; Dantas †, MAR; de Macedo, Douglas DJ; Bauer, Michael A (2013). "Um gerenciamento de dados em um ambiente de armazenamento em nuvem privada utilizando sistemas de arquivos distribuídos de alto desempenho". 2013 Workshops sobre Tecnologias Habilitadoras: Infraestrutura para Empresas Colaborativas . nf. & Departamento de Estatística (INE), Fed. Univ. de Santa Catarina (UFSC), Florianópolis, Brasil. pp. 158–163. doi : 10.1109 / WETICE.2013.12 . ISBN 978-1-4799-0405-1. S2CID 6155753 .
- Adamov, Abzetdin (2012). "Sistema de arquivos distribuído como base da computação intensiva de dados". 2012 6ª Conferência Internacional sobre Aplicação de Tecnologias de Informação e Comunicação (AICT) . Comput. Eng. Dept., Qafqaz Univ., Baku, Azerbaijão. pp. 1–3. doi : 10.1109 / ICAICT.2012.6398484 . ISBN 978-1-4673-1740-5. S2CID 16674289 .
- Schwan Philip (2003). Cluster File Systems, Inc. "Lustre: Construindo um Sistema de Arquivos para Clusters de 1.000 nós" (PDF) . Proceedings of the 2003 Linux Symposium : 400–407.
- Jones, Terry; Königes, Alice; Yates, R. Kim (2000). Laboratório Nacional Lawrence Livermore. "Desempenho do IBM General Parallel File System" (PDF) . Simpósio de processamento paralelo e distribuído, 2000. IPDPS 2000. Proceedings. 14ª Internacional .
-
Weil, Sage A .; Brandt, Scott A .; Miller, Ethan L .; Long, Darrell DE (2006). "Ceph: um sistema de arquivos distribuído escalonável e de alto desempenho" (PDF) . Universidade da Califórnia, Santa Cruz. Citar diário requer
|journal=
( ajuda ) -
Maltzahn, Carlos; Molina-Estolano, Esteban; Khurana, Amandeep; Nelson, Alex J .; Brandt, Scott A .; Weil, Sage (2010). "Ceph como uma alternativa escalonável para o Hadoop Distributed FileSystem" (PDF) . Citar diário requer
|journal=
( ajuda ) - SA, Brandt; EL, Miller; DDE, longo; Lan, Xue (2003). “Gestão eficiente de metadados em grandes sistemas de armazenamento distribuído”. 20ª IEEE / 11ª Conferência Goddard da NASA sobre Sistemas e Tecnologias de Armazenamento em Massa, 2003. (MSST 2003). Procedimentos . Sistema de armazenamento Res. Center, California Univ., Santa Cruz, CA, EUA. pp. 290-298. CiteSeerX 10.1.1.13.2537 . doi : 10.1109 / MASS.2003.1194865 . ISBN 978-0-7695-1914-2. S2CID 5548463 .
- Garth A., Gibson; Rodney, MVan Meter (novembro de 2000). "Arquitetura de armazenamento conectado à rede" (PDF) . Comunicações da ACM . 43 (11): 37–45. doi : 10.1145 / 353360.353362 . S2CID 207644891 .
- Sim, Tin Tin; Thu Naing, Thinn (2011). "Arquitetura de sistema de armazenamento baseada em cluster de PC para armazenamento em nuvem". arXiv : 1112.2025 [ cs.DC ].
- Cho Cho, Khaing; Thinn Thu, Naing (2011). “O sistema de gerenciamento de armazenamento de dados eficiente em um data center em nuvem privada baseado em cluster”. 2011 IEEE International Conference on Cloud Computing and Intelligence Systems . pp. 235–239. doi : 10.1109 / CCIS.2011.6045066 . ISBN 978-1-61284-203-5. S2CID 224635 .
- SA, Brandt; EL, Miller; DDE, longo; Lan, Xue (2011). "Uma arquitetura de armazenamento de arquivos orientada a serviços de nível de operadora para computação em nuvem". 2011 3º Simpósio sobre Web Society . PCN & CAD Center, Beijing Univ. of Posts & Telecommun., Pequim, China. pp. 16–20. doi : 10.1109 / SWS.2011.6101263 . ISBN 978-1-4577-0211-2. S2CID 14791637 .
- Ghemawat, Sanjay; Gobioff, Howard; Leung, Shun-Tak (2003). "O sistema de arquivos do Google" . Anais do décimo nono simpósio ACM sobre princípios de sistemas operacionais - SOSP '03 . pp. 29–43. doi : 10.1145 / 945445.945450 . ISBN 978-1-58113-757-6. S2CID 221261373 .
- Segurança
- Vecchiola, C; Pandey, S; Buyya, R (2009). "Computação em nuvem de alto desempenho: uma visão de aplicativos científicos". 2009 10º Simpósio Internacional de Sistemas, Algoritmos e Redes Pervasivos . Departamento de Computação. Sci. & Software Eng., Univ. de Melbourne, Melbourne, VIC, Austrália. pp. 4–16. arXiv : 0910.1979 . doi : 10.1109 / I-SPAN.2009.150 . ISBN 978-1-4244-5403-7. S2CID 1810240 .
- Miranda, Mowbray; Siani, Pearson (2009). "Um gerenciador de privacidade baseado em cliente para computação em nuvem". Proceedings of the Fourth International ICST Conference on Communication System softWAre and middlewaRE - COMSWARE '09 . p. 1. doi : 10.1145 / 1621890.1621897 . ISBN 978-1-60558-353-2. S2CID 10130310 .
- Naehrig, Michael; Lauter, Kristin (2013). "A criptografia homomórfica pode ser prática?". Anais do 3º workshop ACM em workshop de segurança em computação em nuvem - CCSW '11 . pp. 113-124. CiteSeerX 10.1.1.225.8007 . doi : 10.1145 / 2046660.2046682 . ISBN 978-1-4503-1004-8. S2CID 12274859 .
- Du, Hongtao; Li, Zhanhuai (2012). "PsFS: um sistema de arquivos paralelo de alto rendimento para um sistema seguro de armazenamento em nuvem". 2012 Conferência Internacional sobre Medição, Informação e Controle (MIC) . 1 . Comput. Coll., Northwestern Polytech. Univ., Xi'An, China. pp. 327–331. doi : 10.1109 / MIC.2012.6273264 . ISBN 978-1-4577-1604-1. S2CID 40685246 .
- A.Brandt, Scott; L.Miller, Ethan; DELong, Darrell; Xue, Lan (2003). Centro de Pesquisa de Sistemas de Armazenamento da Universidade da Califórnia, Santa Cruz. "Gerenciamento eficiente de metadados em grandes sistemas de armazenamento distribuído" (PDF) . 11ª Conferência Goddard da NASA em Mass Storage Sistemas e Tecnologias, San Diego, CA .
- Lori M. Kaufman (2009). "Segurança de dados no mundo da computação em nuvem". Segurança e privacidade, IEEE . 7 (4): 161–64. doi : 10.1109 / MSP.2009.87 . S2CID 16233643 .
- Bowers, Kevin; Juels, Ari; Oprea, Alina (2009). HAIL: uma camada de alta disponibilidade e integridade para computação em nuvem . Proceedings of the 16th ACM Conference on Computer and Communications Security . pp. 187–198. doi : 10.1145 / 1653662.1653686 . ISBN 978-1-60558-894-0. S2CID 207176701 .
- Juels, Ari; Oprea, Alina (fevereiro de 2013). “Novas abordagens para segurança e disponibilidade de dados em nuvem”. Comunicações da ACM . 56 (2): 64–73. doi : 10.1145 / 2408776.2408793 . S2CID 17596621 .
- Zhang, Jing; Wu, Gongqing; Hu, Xuegang; Wu, Xindong (2012). "Um Cache Distribuído para Sistema de Arquivos Distribuídos Hadoop em Serviços de Nuvem em Tempo Real". 2012 ACM / IEEE 13ª Conferência Internacional sobre Grid Computing . Departamento de Computação. Sci., Hefei Univ. of Technol., Hefei, China. pp. 12–21. doi : 10.1109 / Grid.2012.17 . ISBN 978-1-4673-2901-9. S2CID 10778240 .
- Uma panela; JP, Walters; VS, Pai; D.-ID, Kang; SP, Crago (2012). "Integração de sistemas de arquivos de alto desempenho em um ambiente de computação em nuvem". 2012 SC Companion: Computação de alto desempenho, armazenamento e análise de rede . Departamento de Eletr. & Comput. Eng., Purdue Univ., West Lafayette, IN, EUA. pp. 753–759. doi : 10.1109 / SC.Companion.2012.103 . ISBN 978-0-7695-4956-9. S2CID 5554936 .
- Fan-Hsun, Tseng; Chi-Yuan, Chen; Li-Der, Chou; Han-Chieh, Chao (2012). "Implementar um sistema de arquivos distribuído em nuvem confiável e seguro". 2012 Simpósio Internacional sobre Processamento Inteligente de Sinais e Sistemas de Comunicações . Departamento de Computação. Sci. & Inf. Eng., Nat. Central Univ., Taoyuan, Taiwan. pp. 227–232. doi : 10.1109 / ISPACS.2012.6473485 . ISBN 978-1-4673-5082-2. S2CID 18260943 .
- Di Sano, M; Di Stefano, A; Morana, G; Zito, D (2012). "Sistema de arquivos como serviço: fornecendo visualizações transitórias e consistentes de arquivos para aplicativos cooperativos em nuvens". 2012 IEEE 21º Workshop Internacional sobre Tecnologias Habilitadoras: Infraestrutura para Empresas Colaborativas . Departamento de Eletr., Electron. & Comput. Eng., Univ. de Catania, Catania, Itália. pp. 173–178. doi : 10.1109 / WETICE.2012.104 . ISBN 978-1-4673-1888-4. S2CID 19798809 .
- Zhifeng, Xiao; Yang, Xiao (2013). “Segurança e privacidade em computação em nuvem”. Pesquisas e tutoriais sobre comunicações do IEEE . 15 (2): 843–859. CiteSeerX 10.1.1.707.3980 . doi : 10.1109 / SURV.2012.060912.00182 . S2CID 206583820 .
- John B, Horrigan (2008). "Uso de aplicativos e serviços de computação em nuvem" (PDF) .
- Yau, Stephen; An, Ho (2010). "Proteção de confidencialidade em sistemas de computação em nuvem" . Int J Software Informatics : 351–365.
- Carnegie, Bin Fan; Tantisiriroj, Wittawat; Xiao, Lin; Gibson, Garth (2009). " Redução de disco ". DiskReduce: RAID para computação escalável com uso intensivo de dados . pp. 6–10. doi : 10.1145 / 1713072.1713075 . ISBN 978-1-60558-883-4. S2CID 15194567 .
- Wang, Jianzong; Gong, Weijiao; P., Varman; Xie, Changsheng (2012). "Reduzindo sobrecarga de armazenamento com pequenos gargalos de gravação evitados no sistema de RAID em nuvem". 2012 ACM / IEEE 13ª Conferência Internacional sobre Grid Computing . pp. 174–183. doi : 10.1109 / Grid.2012.29 . ISBN 978-1-4673-2901-9. S2CID 16827141 .
- Abu-Libdeh, Hussam; Princehouse, Lonnie; Weatherspoon, Hakim (2010). RACS: um caso para diversidade de armazenamento em nuvem . SoCC '10 Proceedings of the 1st ACM Symposium on Cloud Computing . pp. 229–240. doi : 10.1145 / 1807128.1807165 . ISBN 978-1-4503-0036-0. S2CID 1283873 .
- Vogels, Werner (2009). "Eventualmente consistente" . Comunicações da ACM . 52 (1): 40–44. doi : 10.1145 / 1435417.1435432 .
- Cuong, Pham; Cao, Phuong; Kalbarczyk, Z; Iyer, RK (2012). "Rumo a uma nuvem de alta disponibilidade: técnicas e desafios". Conferência Internacional IEEE / IFIP sobre Workshops de Redes e Sistemas Confiáveis (DSN 2012) . pp. 1–6. doi : 10.1109 / DSNW.2012.6264687 . ISBN 978-1-4673-2266-9. S2CID 9920903 .
- A., Undheim; A., Chilwan; P., Heegaard (2011). "Disponibilidade diferenciada em SLAs de computação em nuvem". 2011 IEEE / ACM 12ª Conferência Internacional sobre Grid Computing . pp. 129–136. doi : 10.1109 / Grid.2011.25 . ISBN 978-1-4577-1904-2. S2CID 15047580 .
- Qian, Haiyang; D., Medhi; T., Trivedi (2011). “Um modelo hierárquico para avaliar a qualidade da experiência de serviços online hospedados por computação em nuvem”. Comunicações da ACM . 52 (1): 105-112. CiteSeerX 10.1.1.190.5148 . doi : 10.1109 / INM.2011.5990680 . S2CID 15912111 .
- Ateniese, Giuseppe; Burns, Randal; Curtmola, Reza; Herring, Joseph; Kissner, Lea; Peterson, Zachary; Song, Dawn (2007). "Provável posse de dados em lojas não confiáveis". Anais da 14ª conferência ACM sobre segurança informática e de comunicações - CCS '07 . pp. 598–609. doi : 10.1145 / 1315245.1315318 . ISBN 978-1-59593-703-2. S2CID 8010083 .
- Ateniese, Giuseppe; Di Pietro, Roberto; V. Mancini, Luigi; Tsudik, Gene (2008). "Posse de dados comprováveis escalonável e eficiente". Anais da 4ª conferência internacional sobre segurança e privacidade em redes de comunicação - Secure Comm '08 . p. 1. CiteSeerX 10.1.1.208.8270 . doi : 10.1145 / 1460877.1460889 . ISBN 978-1-60558-241-2. S2CID 207170639 .
- Erway, Chris; Küpçü, Alptekin; Tamassia, Roberto; Papamanthou, Charalampos (2009). "Posse de dados comprováveis dinâmicos". Anais da 16ª conferência ACM sobre segurança informática e de comunicações - CCS '09 . pp. 213–222. doi : 10.1145 / 1653662.1653688 . ISBN 978-1-60558-894-0. S2CID 52856440 .
- Juels, Ari; S. Kaliski, Burton (2007). Pors: provas de recuperabilidade para arquivos grandes . Proceedings of the 14th ACM Conference on Computer and Communications . pp. 584–597. doi : 10.1145 / 1315245.1315317 . ISBN 978-1-59593-703-2. S2CID 6032317 .
- Bonvin, Nicolas; Papaioannou, Thanasis; Aberer, Karl (2009). “Um esquema de replicação auto-organizado, tolerante a falhas e escalonável para armazenamento em nuvem”. Anais do 1º simpósio ACM sobre computação em nuvem - SoCC '10 . pp. 205–216. doi : 10.1145 / 1807128.1807162 . ISBN 978-1-4503-0036-0. S2CID 3261817 .
- Tim, Kraska; Martin, Hentschel; Gustavo, Alonso; Donald, Kossma (2009). “Racionamento consistente na nuvem: pague somente quando for preciso”. Proceedings of the VLDB Endowment . 2 (1): 253–264. doi : 10.14778 / 1687627.1687657 .
-
Daniel, J. Abadi (2009). "Gerenciamento de dados na nuvem: limitações e oportunidades". CiteSeerX 10.1.1.178.200 . Citar diário requer
|journal=
( ajuda ) - Ari, Juels; S., Burton; Jr, Kaliski (2007). "Pors: provas de recuperabilidade para arquivos grandes". Comunicações da ACM . 56 (2): 584–597. doi : 10.1145 / 1315245.1315317 . S2CID 6032317 .
- Ari, Ateniese; Randal, Burns; Johns, Reza; Curtmola, Joseph; Herring, Burton; Lea, Kissner; Zachary, Peterson; Dawn, Song (2007). "Provável posse de dados em lojas não confiáveis". CCS '07 Proceedings of the 14th ACM conference on Computer and Communications Security . pp. 598–609. doi : 10.1145 / 1315245.1315318 . ISBN 978-1-59593-703-2. S2CID 8010083 .
- Sincronização
- Uppoor, S; Flouris, MD; Bilas, A (2010). "Sincronização baseada em nuvem de hierarquias de sistemas de arquivos distribuídos". 2010 IEEE International Conference on Cluster Computing Workshops e Posters (CLUSTER WORKSHOPS) . Inst. of Comput. Sci. (ICS), encontrado. para Res. & Technol. - Hellas (FORTH), Heraklion, Grécia. pp. 1–4. doi : 10.1109 / CLUSTERWKSP.2010.5613087 . ISBN 978-1-4244-8395-2. S2CID 14577793 .
- Aspectos econômicos
- Lori M., Kaufman (2009). "Segurança de dados no mundo da computação em nuvem". Segurança e privacidade, IEEE . 7 (4): 161–64. doi : 10.1109 / MSP.2009.87 . S2CID 16233643 .
- Marston, Sean; Lia, Zhi; Bandyopadhyaya, Subhajyoti; Zhanga, Juheng; Ghalsasi, Anand (2011). Computação em nuvem - a perspectiva do negócio . Decision Support Systems Volume 51, Issue 1. pp. 176–189. doi : 10.1016 / j.dss.2010.12.006 .
- Angabini, A; Yazdani, N; Mundt, T; Hassani, F (2011). "Adequação da computação em nuvem para aplicativos de análise de dados científicos; um estudo empírico". 2011 Conferência Internacional sobre P2P, Paralela, Grid, Nuvem e Computação na Internet . Sch. of Electr. & Comput. Eng., Univ. de Teerã, Teerã, Irã. pp. 193–199. doi : 10.1109 / 3PGCIC.2011.37 . ISBN 978-1-4577-1448-1. S2CID 13393620 .