Tópicos

Porquê Sistemas de Armazenamento?

  • Base de outros sistemas: cloud, high-performance computing, internet of things, bases de dados, etc
  • Persistência e disponibilidade
  • Performance

Workloads

Existem diversos workloads (tipos de informação) que podem ser colocados num sistema de armazenamento.

Arquivo

Os dados são guardados com o objetivo de ficarem arquivados. Normalmente, dados que são pouco acessados.

Neste caso, o débito alcançado toma preferência em relação à latência.

  • Grandes quantidades de dados que serão escritos e lidos
  • Dados que, tipicamente, são escritos de uma vez só
  • Dados que são escritos e lidos de forma sequencial e não aleatória

Exemplo: Amazon Glacier

Backup

Neste caso, falamos de dados que deverão ser cópias constantes de outros dados (fresh data). Ou seja, dados acessados frequentemente num futuro próximo.

Débito continua a tomar preferência em relação à latência.

  • Grandes quantidades de dados que serão escritos e lidos
  • Dados que, tipicamente, são escritos e lidos de forma sequencial
  • Agora, os dados poderão vir a ser atualizados (uma otimização é guardar diffs apenas)

Exemplo: Amazon S3

Armazenamento primário

Não confundir com RAM.

Aqui, estamos a lidar com armazenamento que é utilizado, na vasta maioria dos casos, para suportar bases de dados, análise de dados, frameworks de AI, VMs, etc.

Débito e/ou latência são desejáveis.

  • Grandes quantidades de dados que serão escritos e lidos (débito)
  • Escritas e leituras curtas comuns (latência)
  • Acessos aleatórios ao armazenamento

Exemplo: Amazon EBS

Meios de Armazenamento

Existem diversas formas de guardar informação, cada uma com características diferentes.

Fita

  • Utilizada para informação de arquivo
  • Reliable e barata
  • Não possui suporte para acessos aleatórios ou atualizações da informação in-place

HDD

  • Utilizado para informação de arquivo e, em alguns casos, como armazenamento principal
  • Barato
  • Possui suporte para acessos realizados de forma aleatória e a atualizações in-place

SSD (SATA ou NVMe)

  • Utilizado para backups e armazenamento principal
  • Mais caro do que HDDs, mas mais rápido (especialmente para acessos aleatórios)

RAM

  • Volátil (o mesmo que efémera)
  • Utilizada como armazenamento principal durante a execução de programas (cache)

Scope de Armazenamento

Local

O sistema operativo media os pedidos de I/O por parte das aplicações para o (um ou mais, aliás) disco local.

As aplicações, dependendo do tipo e objetivo, podem interagir diretamente com o block device ou com o sistema de ficheiros.

Remote

Armazenamento pode ser consultado por vários nós de uma rede.

Aqui segue-se uma espécie de arquitetura cliente-servidor. Os pedidos I/O do cliente são intercetados (pelo NFS, por exemplo) e enviados pela rede. Do outro lado, o servidor remoto aplica os pedidos no seu disco local.

Distribuído

Um sistema de armazenamento distribuído permite, entre outras coisas, que exista uma replicação ou sharding de informação entre vários nós. Aumentando, assim, a resiliência e escalabilidade do sistema como um todo.

Normalmente, segue um esquema manager-worker otimizado para a entrada e saída de nós no sistema com alguma moderação.

Altamente distribuído (peer-to-peer)

Novamente, um sistema destes é altamente resiliente e escalável. No entanto, existe uma maior dificuldade em manter data view consistence.

Data view consistence é a garantia de que dois clientes a consultar dois nós diferentes ao mesmo tempo observam a mesma informação.

Neste caso, esta arquitetura permite a entrada e saída de nós com muita frequência.

Disponibilidade da Informação

Para garantir a disponibilidade da informação, mesmo quando existem falhas, deverá existir replicação (e, consequentemente, redundância) da informação existente.

De seguida listam-se algumas técnicas para alcançar tal.

RAID (Redundant Array of Inexpensive Drives)

A informação é replicada em vários discos locais num só servidor, garantindo disponibilidade ao nível do servidor.

Replicação simples

A informação é replicada em vários servidores físicos diferentes.

No entanto, esta abordagem possui um overhead bastante grande. Se existirem 3 réplicas, são toleradas 2 falhas, mas existe um overhead de 3 vezes.

Erasure Codes

A informação é partido em fragmentos, com informação redundante, que são espalhados por diversos servidores físicos. Existem alguns blocos de paridade que conseguem garantir a disponibilidade da informação mesmo quando alguns blocos normais faham.

Exemplo:

  • Reed-Solomon codes (para 6 blocos e 3 de paridade) são toleradas 3 falhas e o overhead total é de 1.5 vezes apenas

Otimizações de Performance

Localidade dos dados

Colocar a computação perto dos dispositivos ou servidores onde consta a informação.

Caching

Colocar a informação mais perto do utilizador ou acessível numa fonte mais rápida (RAM, por exemplo).

Exemplo:

  • Paging cache do sistema de ficheiros
  • Alluxio (sistema de ficheiros, em memória, distribuído)

Eficiência de Espaço

Compressão

Remove informação redundante (ao nível do byte) e entre ficheiros

Deduplicação

Elimina cópias redundantes de ficheiros ou blocos. Se dois ficheiros possuírem o mesmo conteúdo, apontam para o mesmos bytes.

Segurança em Armazenamento

Encriptação

Existem dois tipos principais de encriptação:

  • At rest: informação é encriptada apenas antes de ser persistida
  • In transit: informação é encriptada no lado do cliente antes de ser enviada pela rede (por exemplo, no caso de sistemas de armazenamento remotos)

Controlo de Acesso

Evitar acessos desautorizados a certa informação, implementado políticas de controlo de acesso.

Software-Defined Storage

Assenta em dois princípios:

  • I/O flows (data plane) são separados dos flows de controlo (control plane)
  • O control plane assegura um controlo global dos flows de I/O (centralizado)

Data Plane

Possui um conjunto de etapas onde cada etapa é uma funcionalidade diferente: caching, encriptação, compressão, etc.

É programável e extensível, ou seja, podem ser embutidas novas etapas e com novas funcionalidades.

Control Plane

Possui uma visão global das aplicações, etapas e recursos da infraestrutura a utilizar.

Pode ser distribuído com o objetivo de manter a disponibilidade do mesmo.

Configura e distribui, da melhor forma, a informação perante as etapas definidas pelo data plane. Respeitando, sempre, políticas de I/O.