Armazenamento em datacenters
Nas unidades anteriores, discutimos os vários tipos de dispositivos de armazenamento online que estão em uso – principalmente magnéticos e unidades de estado sólido. Também vimos como esses dispositivos podem ser implantados de várias maneiras em um datacenter. Eles são reproduzidos aqui para sua conveniência:
Figura 6: Armazenamento de servidor individual versus armazenamento corporativo ou compartilhado
O armazenamento em servidor individual é uma arquitetura de armazenamento típica com a qual você está familiarizado, em que os discos individuais estão presentes em cada servidor. Esse tipo de configuração geralmente é a opção mais barata, pois não requer nenhum hardware ou dispositivos de rede especializados, mas também requer a maior quantidade de gerenciamento. As falhas de disco podem causar perda de dados e/ou perda de disponibilidade, a menos que os aplicativos de servidor estejam explicitamente replicando dados e estejam configurados para tolerância a falhas. Devido ao menor custo do hardware, esse tipo de armazenamento é típico em clusters de análise de dados em grande escala que executam estruturas como Hadoop ou Spark, em que a tolerância a falhas e a confiabilidade são tratadas na arquitetura de software e de cluster.
O Armazenamento corporativo ou compartilhado refere-se à arquitetura de armazenamento que é dissociada de servidores individuais, normalmente por meio do uso de servidores, matrizes ou dispositivos de armazenamento dedicados. Esses sistemas fornecem armazenamento compartilhado (como dispositivos de blocos, sistemas de arquivos ou sistemas de armazenamento de objetos) para vários servidores. Esses sistemas estão conectados aos servidores usando uma rede Ethernet regular ou usando malhas de rede de armazenamento dedicadas (como Fibre Channel ou iSCSI sobre Ethernet). O benefício dessa abordagem é o acoplamento flexível de servidores e armazenamento, permitindo que os componentes sejam configurados e atualizados individualmente conforme necessário. Essa é uma abordagem popular usada com muitos aplicativos, incluindo aplicativos controlados por banco de dados, serviços Web de pequenos a médios e provedores de nuvem IaaS. Especificamente para serviços de IaaS, a capacidade de criar uma máquina virtual com imagens de disco virtual anexadas é simplificada ainda mais pelo uso de sistemas de armazenamento compartilhado.
Normalmente, os sistemas de armazenamento de nível empresarial são especificados, configurados e implantados com base nas necessidades de um aplicativo. Por exemplo, um servidor de distribuição de conteúdo pode exigir um sistema de armazenamento bastante diferente de um sistema de armazenamento que atenda aos requisitos do banco de dados transacional de um banco. Um servidor de distribuição de conteúdo pode exigir maior largura de banda para transferir grandes quantidades de dados aos clientes (como fotos ou vídeos), enquanto o banco de dados transacional de um banco requer transações rápidas e de baixa latência (que envolvem pequenas quantidades de dados), com sólidas garantias de backup e persistência. As implantações de infraestrutura tradicionais incluem especificações de armazenamento otimizadas para as necessidades do aplicativo implantado na infraestrutura.
Com o advento da computação em nuvem e da multilocação no datacenter, cada usuário pode ter necessidades de armazenamento bastante diferentes. No entanto, os usuários ficam restritos às ofertas de serviço do provedor de nuvem, que podem não ter granularidade suficiente para expressar os requisitos exatos do aplicativo do usuário. Os usuários podem especificar SLOs (objetivos de nível de serviço) com relação ao armazenamento, como um determinado requisito de capacidade e de latência ou de largura de banda do aplicativo. Além disso, esses requisitos podem ser alterados dinamicamente à medida que o aplicativo está em execução; os usuários desejam ter a flexibilidade de variar seus requisitos de armazenamento com base na demanda. Por exemplo, no serviço de repositório de blocos elásticos da Amazon Web Services, os usuários podem especificar uma quantidade específica de IOPS (operações de E/S por segundo) provisionada que esperam obter do disco virtual. Os usuários podem, mediante um preço, exigir uma taxa de transferência mais alta e uma menor latência nos serviços de armazenamento. No entanto, a criação de sistemas capazes de atender dinamicamente esses tipos de solicitações de recursos é um grande desafio.