Deep dive: volumes EBS

Deep dive: volumes EBS

Entendendo e monitorando seus discos no EC2

Esse post marca a estréia de uma nova série deste blog: deep dive. Nestes artigos vamos explorar a fundo temas mais técnicos relativos ao monitoramento e à otimização de recursos na nuvem.

Para começar, nada melhor que um dos recursos mais usados e, ao mesmo tempo, menos compreendidos na nuvem AWS: os discos virtuais EBS.

Parte 1: Anatomia de um EBS

O que é um EBS?

Amazon Elastic Block Storage, ou EBS, é uma categoria de serviço de storage dentro da AWS, que disponibiliza volumes de armazenamento em blocos para instâncias EC2.

Armazenamento em bloco significa que os dados ali salvos serão particionados em blocos e guardados no menor espaço possível – é dessa forma que um HD tradicional, como o que usamos em nossos computadores, funciona.

Um disco EBS é, portanto, essencialmente um volume virtualizado e, assim como um HD tradicional, é normalmente usado em conjunto com uma máquina – na Amazon é possível, inclusive, utilizar diversos EBSs em uma mesma instância, desde que todas se encontrem na mesma Availability Zone, ou AZ, que o servidor em questão.

Armazenamento persistente

EBS são classificados como de armazenamento persistente, ou seja, seus dados ali salvos não serão perdidos caso o servidor conectado seja desligado.

Isso difere de um outro volume presente na AWS, os instance store volumes, que são discos efêmeros onde seus dados são completamente apagados caso a instância seja desligada. Esse tipo de disco é mais utilizado quando a performance com o disco é um ponto crucial, uma vez que este disco fica alocado fisicamente na instância, e os dados sendo processados são facilmente reproduzíveis, uma vez que todos seriam apagados caso o disco viesse a falhar.

Sistema operacional

A AWS te dá a possibilidade de, ao criar a sua instância, escolher se o Sistema Operacional será armazenado em um instance store ou em um EBS. Servidores onde o SO é colocado em um EBS são conhecidos como EBS-backed instances.

A principal diferença entre ambos, além do fato de que discos EBS não são efêmeros e portanto manterão seus dados após o desligamento da instância, reside no fato de que não é possível encriptar volumes instance store diretamente através do console da AWS.

Backup e disponibilidade

É possível, com apenas um clique, criar um snapshot de seu volume EBS. Um snapshot nada mais é que uma ‘foto’ de todo o seu disco no momento. Com essa imagem você conseguirá criar novos discos exatamente iguais o seu disco original daquele momento.

Além de servir perfeitamente para backups, uma vez que essa imagem possui todas as informações contidas no disco, os snapshots permitem que você tenha um sistema escalável e distribuído: com eles, você pode criar máquinas idênticas em outras regiões da AWS – o que aumenta sua tolerância a falhas – e também usá-las em grupos de AutoScale, criando novas máquinas iguais as demais, aumentando sua escalabilidade.

Conectividade

Volumes EBS não são discos físicos, colocados diretamente em seu servidor, mas sim volumes virtualizados, conectados através de uma rede local com sua instância. Portanto a sua performance está diretamente ligada à performance dessa rede.

Algumas instâncias EC2 não têm uma banda dedicada para os discos, assim toda sua comunicação de rede compete entre si – ou seja, a mesma banda da máquina que é usada para se comunicar com o disco, é usada para qualquer outra requisição de rede. Dessa forma, se essa instância estiver, por exemplo, com diversas conexões abertas com usuários através da internet, a performance da conexão com o disco EBS irá se degradar.

Já tipos de servidores mais novos possuem uma característica de EBS-optimized, sem custo adicional. Essas instâncias possuem banda dedicada para discos EBS, separada do resto de uso de rede da máquina. Assim é possível garantir uma performance constante para essa comunicação. Por padrão, a AWS garante essa performance em 99% do tempo em um dado ano.

Entender esse conceito é muito importante no momento de provisionar suas instâncias. Afinal, se você tem uma r4.large que oferece 53 MB/s de taxa de transferência (throughput), não adianta conectar diversos EBS com altas taxas de conectividades: a instância será seu gargalo e você acabará pagando por uma capacidade não utilizada.

Tipos de disco

Volumes EBS vêm em diferentes tipos, cada uma com características diferentes que os tornam ideais para cenários específicos. Entender esses tipos e saber usá-los no momento certo fará uma enorme diferença tanto na performance de sua aplicação quanto nos custos de uso.

Há duas categorias principais: solid-state drives (SSD) e hard-disk drives (HDD). Vamos vê-las em mais detalhes.

SSD

Discos SSD permitem uma grande quantidade de operações de I/O por segundo – ou IOPS. Esse tipo de volume performa melhor em operações menores, as executando muito rápido e mantendo a performance ao executar operações aleatórias. Por isso o tamanho de bloco, ou o tamanho de cada operação individual, é limitado a 256 KiB.

Na prática, esse tipo de disco é recomendado para aplicações como banco de dados transacionais, onde há um grande volume de dados sendo acessados e alterados.

A AWS oferece duas modalidades de discos SSD: General Purpose volumes (conhecidos como gp2) e Provisioned IOPS (ou io1).

Volumes gp2 possibilitam que a capacidade de IOPS seja estendida além do seu limite temporariamente, através de bursts. O limite desses discos é de 16,000 IOPS ou 250 MiB/s de transferência, o que for atingido primeiro. Por exemplo, se o tamanho de cada bloco for de 64 KiB, nunca chegaríamos a esse valor de IOPS pois atingiríamos o limite de throughput primeiro, com apenas 3.906 IOPS.

Já discos io1 permitem atingir enormes quantidades de IOPS de forma constante e estável: seu limite de IOPS varia entre 32,000 e 64,000, dependendo do tipo da instância, ou 1.000 MiB/s de throughput.

HDD

Se discos SSD tem IOPS como sua principal força, discos HDD tem como ponto de excelência a taxa de transferência de dados (data throughput). Hard-drive disks possuem uma ‘cabeça’ magnética que lê e escreve os dados de forma física no disco. Por isso, esse tipo de volume não se sai tão bem em leitura/escrita de dados aleatórios. Já dados sequenciais, são manipulados em grandes quantidades e alta velocidade, com um baixo custo. Por isso operações de I/O com maior tamanho são mais performáticas nesses volumes: o tamanho de seus blocos pode chegar a 1,024 KiB.

Na prática, vemos esses discos em processamento de grande quantidade de dados, ou ainda para armazenamento de backups.

As duas modalidades oferecidas pela AWS são: Throughput Optimized (ou st1) e Cold HDD (chamados de sc1).

Volumes st1 tem a melhor performance de taxa de transferência na AWS, com limites de 500 IOPS ou 500 MiB/s, enquanto discos sc1 são uma solução barata para dados pouco acessados, com limites de 250 IOPS ou 250 MiB – lembrando que o tamanho do bloco para discos HDD são de até 1.024 KiB. Ambos os tipos de volume também possuem capacidade de burst, para picos de utilização.

Na segunda parte deste artigo, veremos como usar métricas para monitorar nossos discos.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.