Linux e o ecossistema de armazenamento

Uma plataforma aberta para armazenamento flexível

O Linux é o canivete suíço dos sistemas de arquivos, ele também oferece uma grande variedade de tecnologias de armazenamento para desktops e servidores.Além do sistema de arquivos, o Linux incorpora tecnologias NAS e SAN, proteção de dados, gerenciamento de armazenamento, suporte a nuvem e armazenamento em estado sólido de categoria internacional. Saiba mais sobre o ecossistema de armazenamento do Linux e por que ele é o número um no mercado de servidores.

M. Tim Jones, Platform Architect, Intel

author photo - M. Tim JonesM. Tim Jones é arquiteto de firmware integrado e autor de Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming (atualmente em sua segunda edição), AI Application Programming (em sua segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Seu conhecimento em engenharia varia do desenvolvimento de kernels para naves espaciais geossíncronas até a arquitetura de sistemas embarcados e o desenvolvimento de protocolos de rede. Tim trabalha na Intel e reside em Longmont, Colorado.



12/Mai/2011

O Linux é muitas coisas e seu poder depende de sua capacidade de oferecer suporte flexível a modelos de uso muito diferentes. Mas um dos pontos fortes mais importantes do Linux é servir como burro de carga do domínio de armazenamento. Pensar no Linux e em armazenamento costuma evocar a imagem de discos com conexão direta ou do sistema de arquivos mais recente, mas o armazenamento e o Linux não são tão simples como parecem. Os elementos do Linux não são apenas estáveis, mas também de ponta.

Este artigo explora as diversas tecnologias de armazenamento que mantêm o Linux no centro do universo de armazenamento. Vamos começar de baixo—ou seja, pelas arquiteturas de armazenamento —e depois vamos percorrer recursos, sistemas de arquivos e detalhes futuros (veja a Figura 1).

Figura 1. Pilha de armazenamento para exploração durante este artigo
The storage stack that this article refers to

Arquitetura de armazenamento

O modo em que o armazenamento se conecta à plataforma é fundamental para a arquitetura de armazenamento geral. Três arquiteturas gerais abrangem a grande maioria dos modelos:

  • Armazenamento diretamente conectado (DAS)
  • Redes de área de armazenamento (SAN)
  • Armazenamento conectado via rede (NAS)

Naturalmente, o Linux oferece suporte a todos os três e evoluiu com as mudanças que estão ocorrendo com esses modelos.

Outras mídias de armazenamento

Este artigo se concentra principalmente no armazenamento em disco, mas é difícil ignorar a variedade de outros dispositivos suportados pelo Linux. De unidades de disquete, que estão desaparecendo rapidamente, leitores e gravadores de CD-ROM e DVD, e até mesmo sistemas de fita corporativos, o Linux não tem igual no que se refere a suporte a dispositivos de armazenamento em massa.

A Figura 2 ilustra os modelos, concentrando-se na localização do sistema de arquivos e do armazenamento. O modelo DAS abrange a conexão direta do armazenamento à plataforma e representa a grande maioria do uso de armazenamento. O SAN separa o armazenamento da plataforma e o torna acessível por diversos protocolos de armazenamento em bloco. Por fim, o NAS fornece uma arquitetura similar ao SAN, mas opera no nível do arquivo.

Figura 2. Grandes arquiteturas de armazenamento
Diagram of the major storage architectures

Armazenamento diretamente conectado

O Linux suporta uma grande variedade de interfaces DAS, incluindo padrões antigos, como Advanced Technology Attachment (ATA) paralela —Integrated Drive Electronics [IDE]/ATA—SCSI paralelo e Fibre Channel, bem como novas interfaces de armazenamento, como SCSI com conexão serial (SAS), ATA serial (SATA) e SATA externo (eSATA). Também se encontram tecnologias de armazenamento avançadas, como USB3 (Extensible Host Controller Interface [xHCI]) e Firewire (Institute of Electrical and Electronics Engineers 1394).

Rede de área de armazenamento

O SAN fornece consolidação de armazenamento em nível de bloco para que possa ser compartilhado entre vários servidores. O armazenamento aparece como local para os servidores, onde o dispositivo de armazenamento de terminal pode implementar serviços adicionais para os dispositivos do cliente (como backup e replicação).

Os protocolos e interfaces para SANs são amplos e variados. Encontram-se protocolos SAN típicos no Linux, como Fibre Channel, bem como sua extensão sobre IP (iFCP). Protocolos mais recentes, como SAS, Fibre Channel sobre Ethernet (FCoE) e Internet SCSI (iSCSI), também estão presentes, bem como protocolos mais específicos de domínio, como Extensões iSCSI para acesso à memória direta remota (RDMA—iSER) e Protocolo SCSI RDMA (SRP), que estende SCSI sobre RDMA para Infiniband.

O surgimento de Ethernet como protocolo de armazenamento foi totalmente realizado no Linux, como ilustra o poder e a flexibilidade dessas abordagens. Além disso, a Ethernet de 10 gigabits (10GbE) é totalmente suportada no Linux, o que permite o desenvolvimento de SANs de alto desempenho. Também se encontram protocolos como ATA sobre Ethernet (ATAoE), que estende o protocolo ATA pelo protocolo Ethernet onipresente.

Armazenamento conectado via rede

Por último, mas não menos importante, há o NAS. O NAS é a consolidação de armazenamento pela rede para acesso por clientes heterogêneos no nível de arquivo. Dois dos protocolos mais populares, totalmente suportados no Linux, são o Network File System (NFS) e o Server Message Block/Common Internet File System (SMB/CIFS).

Embora a implementação SMB original fosse proprietária, após passar por engenharia reversa ela passou a ser suportada pelo Linux. As revisões posteriores de SMB foram abertamente documentadas para permitir o desenvolvimento mais simples em Linux.

O Linux tem continuado a evoluir com melhorias diversas e extensões feitas para NFS. NFS é hoje um protocolo stateful e inclui otimizações para separação de dados e metadados, bem como paralelismo de acesso de dados. Leia mais sobre a evolução de NFS usando os links em Recursos. Como acontece com SANs baseadas em Ethernet, o suporte a 10GbE em Linux ativa repositórios NAS de alto desempenho.

Outras arquiteturas de armazenamento

Nem todas as arquiteturas de armazenamento se ajustam suavemente aos depósitos DAS, SAN e NAS. Visto que o Linux é aberto, ele facilita o desenvolvimento de novas tecnologias dentro dele, motivo pelo qual é possível encontrar as mais recentes tecnologias de vanguarda absoluta em Linux.

Uma arquitetura de armazenamento interessante, que não é nova, mas vale a pena mencionar, é a arquitetura de armazenamento de objetos. As arquiteturas de armazenamento de objetos dividem um arquivo de seus metadados e os armazenam de forma independente (em seus respectivos servidores de dados e metadados). Essa divisão oferece certas vantagens, como a minimização do gargalo de metadados (porque as interações com esse servidor são necessárias apenas para localizar e abrir um arquivo). O desempenho também pode ser melhorado pela distribuição de dados por diversos servidores de dados para acesso paralelo. O armazenamento de objetos é implementado em uma variedade de maneiras dentro do Linux, incluindo suporte à especificação Object Storage Device (OSD), bem como dentro do Linux clUSTER (Lustre) e do Extended Object File System (exofs).

Existe uma tecnologia similar chamada armazenamento endereçado ao conteúdo (CAS) que usa um hash dos dados para identificar seu nome e endereço. Essa tecnologia, também conhecida como armazenamento de conteúdo fixo (FCS), é vantajosa, porque é fácil identificar dados duplicados: O hash (se for forte o suficiente) será idêntico e permitirá uma deduplicação simples. A arquitetura Venti suporta essa abordagem e existe dentro do Linux (além da distribuição Plan 9 dos Bell Labs).


Serviços de armazenamento: gerenciamento de volume lógico

Antigamente, a virtualização de armazenamento era uma característica exclusiva de sistemas de armazenamento sofisticados, mas agora é uma característica padrão do Linux. Um dos serviços mais importantes disponíveis no Linux é o Logical Volume Manager (LVM). O LVM é uma camada fina que fica acima do armazenamento físico disponível na arquitetura de armazenamento subjacente (com as ferramentas de espaço do usuário acompanhantes) e a resume em um ou mais volumes lógicos que são mais simples de gerenciar. Por exemplo, enquanto um disco físico não pode ser redimensionado, um volume lógico pode a fim de adicionar ou remover espaço dele.

Com a capacidade de resumir dispositivos físicos em dispositivos lógicos, o LVM cria diversos outros recursos de armazenamento, como capturas instantâneas dos volumes, de somente leitura e de leitura e gravação, distribuição de dados entre volumes para aumentar o desempenho (array redundante de discos independentes [RAID]-0), espelhamento de dados entre volumes (RAID-1) e migração de volumes (mesmo quando on-line) entre dispositivos físicos.

Para proteção de dados além do espelhamento, o Linux inclui md (ou seja, diversos discos) e fornece um ótimo conjunto de funcionalidades RAID. Esse elemento implementa a funcionalidade RAID de software, que suporta RAID-4 (dados distribuídos com bloco de paridade), RAID-5 (dados distribuídos com bloco de paridade distribuído), RAID-6 (dados distribuídos com blocos de paridade distribuídos e com redundância dupla) e RAID-10 (dados distribuídos e espelhados).

O LVM depende de outro componente de armazenamento chamado Device-mapper, que fornece (entre outros recursos) a capacidade de caminhos múltiplos. Por exemplo, em um ambiente SAN, geralmente há várias interfaces de armazenamento na malha SAN. Os caminhos múltiplos são um recurso que protege contra a falha de determinado caminho, assegurando que o armazenamento permaneça disponível enquanto existe um caminho para se comunicar com o terminal.


Recursos de armazenamento

Nos últimos anos, dois recursos relativamente simples foram adicionados à pilha de armazenamento que tratam da evolução do ecossistema de armazenamento:

  • Integridade de dados
  • Suporte a discos de estado sólido (SSDs)

Integridade de dados

A primeira mudança trata da utilização de unidades de mercadorias em ambientes de armazenamento empresarial. Embora unidades de classe empresarial (como unidades SAS) sejam confiáveis, as unidades SATA são desenvolvidas com diferentes requisitos e com o custo como um fator importante. Por essa razão, as unidades SATA podem sofrer de um problema conhecido como corrupção de dados em silêncio, na qual podem ser introduzidos erros que não são detectados quando os dados são lidos do disco. Para resolver esse problema e oferecer suporte a unidades SATA em ambientes corporativos, são adicionados códigos de integridade de dados aos blocos do disco (quando o disco usa setores de 520 bytes em vez dos tradicionais blocos de 512 bytes). Além disso, a própria unidade pode validar os dados que estão sendo gravados, de modo que seu código de integridade corresponda aos dados. Dessa forma, os erros podem ser capturados à medida que são gravados no disco, em vez de detectados mais tarde, quando nada pode ser feito a respeito.

Esse mecanismo é chamado de campo de integridade de dados (DIF), como mostrado na Figura 3, e representa um trailer de 8 bytes que inclui uma verificação de redundância cíclica (CRC) do bloco de dados, uma tag de referência (normalmente uma parte do endereçamento de bloco lógico [LBA]) e uma tag de aplicativo definia pelo aplicativo. A tag de referência é útil para capturar erros de gravação de dados em um bloco incorreto, enquanto a tag de aplicativo pode ser usada para capturar outros erros na pilha de software. Por exemplo, se um documento PDF é gravado, a tag de aplicativo poderia ser definida com um valor que indica uma tag de PDF especial. Quando o PDF é lido, a tag de aplicativo de cada bloco pode ser inspecionada para garantir que especifique a tag de PDF. Há suporte a DIF no Linux a partir da versão de kernel 2.6.27.

Figura 3. Estrutura DIF para um setor de 512 bytes
The DIF structure for a 512-byte sector

Crescente suporte a SSDs

A introdução dos SSDs está mudando o ecossistema de armazenamento de diversas maneiras. Esses discos removem algumas das grandes latências encontradas em discos giratórios e, portanto, oferecem uma maneira de manter o fluxo de dados da CPU e para ela. Mas os SSDs são diferentes dos discos rígidos (HDs) no sentido de que são consumíveis. O armazenamento em um SSD pode ser gravado um número finito de vezes (dependendo da tecnologia); portanto, é importante ser o mais eficiente possível ao gravar dados. Para piorar, o SSD deve trocar dados internamente para minimizar a introdução de erros em um processo chamado coleta de lixo ou wear-leveling. Esse processo resulta em gravações no armazenamento consumível e, portanto, deve ser minimizado.

Outro problema com os SSDs e o armazenamento tradicional é que o disco rígido não se importa com o fato de os dados no disco serem válidos. Se o sistema de arquivos invalidar os dados, esses podem permanecer no disco sem nenhuma desvantagem. Essa restrição não existe com os SSDs devido ao requisito de wear-leveling. Por essa razão, o Linux agora suporta a capacidade de o sistema de arquivos comunicar blocos descartados para o SSD (a partir da versão de kernel 2.6.29). Essa habilidade permite que o SSD remova esses blocos dos processos de wear-leveling e ajude a aumentar a resistência da unidade.


Sistemas de arquivos

O que realmente diferencia o Linux de outros sistemas operacionais é a sua vasta biblioteca de sistemas de arquivos. Em Linux, encontram-se tradicionais sistemas de arquivos de cliente, como o terceiro sistema de arquivos estendido (ext3) e o quarto sistema de arquivos estendido (ext4), mas também encontramos o que há de mais moderno em sistemas de arquivos distribuídos, sistemas de arquivos em cluster e sistemas de arquivos paralelos. Encontram-se novos sistemas de arquivos de ponta baseados em novas ideias e que também tratam de novos problemas no domínio de armazenamento.

Em termos de sistemas de arquivos de ponta e atuais, o Linux suporta ZFS e Butter FS (BTRFS). Esses dois sistemas de arquivos competem entre si e compartilham a distinção da semântica copy-on-write (os blocos nunca são escritos no local). Além disso, ambos os sistemas de arquivos suportam a deduplicação de dados, proteção de dados internos (proteção semelhante a RAID), somas de verificação de dados e metadados, e outros recursos de armazenamento (como capturas instantâneas).

O Linux também abriga muitos sistemas de arquivos distribuídos. Um exemplo é o Lustre, que é um sistema de arquivos distribuídos maciçamente paralelo que suporta dezenas de milhares de nós e escalas para petabytes de capacidade de armazenamento. O Ceph fornece funcionalidade semelhante e, no ano passado, foi introduzido no kernel Linux. Outros exemplos no Linux incluem o GlusterFS e o General Parallel File System (GPFS).

Também é possível encontrar sistemas de arquivos especializados em Linux, incluindo sistemas de arquivos de estruturados em log, como o New Implementation Log Structure File System (NiLFS(2)), e sistemas de arquivos baseados em objetos, como exofs. Visto que o Linux se encontra em muitos modelos de uso, também são encontrados sistemas de arquivos para usos restritos de recursos (como sistemas integrados), bem como aplicações de baixa latência, como computação de alto desempenho (HPC). Os sistemas de arquivos na área integrada incluem o Yet Another Flash File System versão 2 (YAFFS2), o Journaling Flash File System versão 2 (JFFS2) e o Unsorted Block Image File System (UBIFS). Os sistemas de arquivos no espaço HPC incluem o Parallel NFS (pNFS), Lustre e GPFS.


O futuro do armazenamento em Linux

O Linux é e continuará a ser alvo de sistemas de arquivo e pesquisa em armazenamento geral por ser um sistema aberto e por causa da sua grande comunidade de desenvolvedores.

Uma das últimas mudanças no armazenamento é o uso de serviços remotos de armazenamento com custo reduzido de dados de arquivo. Conhecidos atualmente como armazenamento na nuvem, inúmeros fornecedores fornecem acesso eficiente e transparente ao armazenamento remoto e centralizado com vários acordos de nível de serviço (incluindo recursos como proteção e largura de banda). Dois exemplos incluem o Ubuntu One e o Dropbox. Outro serviço, chamado SpiderOak, pode ser usado para fazer backup de seus diretórios de usuário local na nuvem por uma pequena taxa.

Que outros recursos podem estar no horizonte do Linux? Talvez suporte para tamanhos grandes do setor (além dos setores de 512 bytes), provisionamento dinâmico para evitar capacidade reservada, mas não utilizada (na qual o armazenamento anunciados ultrapassa a capacidade física), deduplicação de armazenamento (para maximizar a disponibilidade de armazenamento) e até mesmo uma pilha de armazenamento mais eficiente para explorar novas velocidades e eficiências de unidades como os SSDs. Não importa qual seja a próxima evolução do ecossistema de armazenamento, o Linux estará em primeiro lugar.

Recursos

Aprender

Obter produtos e tecnologias

  • Avalie produtos IBM da maneira que for melhor para você: faça download da versão de teste de um produto, avalie um produto online, use-o em um ambiente de nuvem ou passe algumas horas na SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de modo eficiente.

Discutir

  • Participe da comunidade do My developerWorks . Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=658256
ArticleTitle=Linux e o ecossistema de armazenamento
publish-date=05122011