Azure Storage, conhece? [PARTE 1]
Tags: azure, architecture, sql
Published: 2019-10-26 04:15:22

Muitos analistas de infraestrutura e DBAs trabalham com discos, isso já é de conhecimento de quem atua na área de TI, certo?

Mas tratando-se de disco, muitas vezes o analista ou DBA fica perdido em uma análise ou troubleshooting, pois isso vai além da ferramenta em que o profissional atua. Porém "disco" (em aspas mesmo) muitas vezes é o responsável pelo gargalo e lentidão de um ambiente.

Antes de entrarmos no mundo Cloud Azure, que tal conhecermos melhor o que é uma Storage e como administramos isso? 

Então vamos lá!

Como posso entender qual o melhor disco para o meu banco de dados ou aplicação? Quando migrar as aplicações para o Azure (Cloud da Microsoft), como saber a melhor escolha?

Antes de mais nada, vamos dar um passo para trás e entender o conceito de storage para clarear o entendimento.

Segundo a InfoB: "Storage é um hardware que contém slots para vários discos, ligado aos servidores através de iSCSI (protocolo de rede) ou Fibra Ótica (Fiber Channel). Ele é uma peça altamente redundante e cumpre com louvor a sua missão, que é armazenar os dados da sua empresa com segurança".

Bom, no geral já sabemos como é o conceito, a partir daqui vamos entender como isso funciona na prática.

O servidor de banco de dados, não conecta diretamente numa Storage, ele utiliza os protocolos específicos acima para estabelecer uma comunicação direta, passando  por um Switch Fabric ou uma HBA (vamos entender mais lá na frente).

As Storage dividem-se em três tipos: DAS, NAS e SAN.
E quais as diferenças entre eles?

<b>DAS (Direct Attached Storage):</b> Um dispositivo externo que vai conectado diretamente aos computadores ou servidores. Um exemplo prático são os HDs Externos.

<b>NAS (Network Attached Storage):</b> É ligado diretamente na rede e roda um sistema operacional próprio e completo. Um File Server (servidor de arquivos) é um exemplo prático já que ele pode compartilhar e gerenciar as informações armazenadas.

<b>SAN (Storage Area Network):</b> Como o NAS, também é uma rede dedicada, mas a diferença consiste no aumento do desempenho, da velocidade e da segurança no acesso aos dados armazenados.

Ai fica a questão, o que foi apresentado acima são protocolos de rede, o que isso tem a ver com Storage?

Bom, uma analogia simples seria comparar a um corpo humano. Se uma Storage é o coração do armazenamento, os protocolos de redes são as artérias por onde os dados trafegam, ou seja, são tão importantes quanto e influenciam diretamente na performance do seu banco de dados ou aplicação.

Mas ainda falta um componente importante, a <b>Placa HBA</b>!

A HBA (Host Bus Adapter) é a responsável por "traduzir" em uma rede SAN os protocolos de redes externos e internos que são trafegados, ela possui um chip próprio que evita sobrecarga da CPU no processo de conversão.

Existem muito mais para falar sobre isso como HUB, Switches, Bridges Fibre Channel SCSI, BCV (Business Continuance Volumes) e iSCSI Extensions for RDMA (iSER), mas o artigo é sobre Storage e não Redes, correto?

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/bz4epwum46irx2rx70eb.JPG)

Acima um desenho simples de uma topologia de rede SAN

Continuando o assunto, agora já sabemos como nossos dados trafegam entre nossos os servidores e a storage e a importância de ter uma topologia correta.

Mas e os discos, cadê?

Calma, ainda faltam mais coisas pra você aprender, mas prometo que valerá a pena.

A Storage é um conjunto de vários discos e de diversas volumetrias e estes discos podem ser somados formando uma unidade maior.

E como isso é feito?
Primeiro que não dá pra fazer uma fusão física dos discos, é impossível, mas posso fazer o sistema operacional "enxergar" um disco lógico.
Esse disco é conhecido como <b>LUN (Logical Unit Number)</b>, que é um subconjunto dos discos apresentados, ou seja, usando um exemplo simples, fisicamente eu uso 2 discos de 500GB, mas o Windows enxerga um disco de 1TB.

Mas porque o SO não enxerga dois discos de 500GB?
Simples, porque entre o SO e a Storage, existe um software chamado <b>Multipath IO</b> (ou MPIO para os íntimos), nativamente o Windows Server possui este software, mas é recomendado sempre utilizar o software Multipath IO do fabricante da Storage que você contratou/comprou.

E o que o MPIO faz? 
Ele define mais de um caminho usando a placa HBA (Host Bus Adapter), ou seja, ele unifica logicamente os "caminhos" que passam pela controladora. Por isso o SO enxerga um disco de 1TB e não 2, lembrando que uma vez montado o disco, eu apresento a volumetria ao SO contabilizando cada "path" usado pra montar o volume lógico, por isso o MPIO é importante.

Ok, já entendemos o conceito de LUN e o que faz o MPIO, mas e o RAID?

Vamos lá, RAID é uma sigla em inglês para <i><b>Redundant Array of Inexpensive Disks</i></b>, que em tradução livre significa Matriz Redundante de Discos Independentes.
Não entendeu? simples, RAID nada mais é que o nome dados aos discos que foram unificados logicamente para formar uma unidade de armazenamento maior.

Só que existe algo muito importante para entender: Os RAIDS que você consegue montar e quais as importâncias e diferenças em cada tipo e como isso influencia no seu ambiente.

<b>RAID 0 (zero):</b> 
Usando o conceito de “fracionamento”, quando montamos uma unidade lógica com varios discos, o arquivo ou dado gravado fragmenta-se entre os discos, aumentando o throughput, por exemplo, um RAID 0 com dois discos de 50 MB/s, resultariam num disco com velocidade de 100 MB/s.
O RAID 0 é usado para melhorar o desempenho porém sacrificando a confiabilidade, isso significa que ele NÃO É tolerante a falhas.
 - Vantagens: Muito rápido para acesso e baixo custo.
 - Desvantagens: Não faz paridade de dados e não tolera falhas, em caso de corrupção de um dos sectors do disco, você pode perder toda a informação.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/txi0zt7fc15cthgn8aq1.JPG)
Figura de um RAID 0


<b>RAID 1:</b> 
Usa o conceito de espelhamento, no modo simples, é termos os dados de um disco em outro. É mais seguro que o RAID 0 e não há perda de desempenho para leitura.
 - Vantagens: Segurança dos dados, caso algum setor de disco falhe, você consegue recuperar copiando os arquivos de outro disco.
 - Desvantagens: Não é usada paridade, escrita é mais demorada e maior custo.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/85h7et50uhcqn2ryxscq.JPG)
Figura de um RAID 1


<b>RAID 2:</b> 
Praticamente caiu em desuso porque os novos HDs já saem de fábrica com mecanismos similares a ele e que impedem certas falhas.
O RAID 2 é (ou era) uma técnica que dividia os dados no nível de bit usando um Código Hamming (What?) para detectar erros.
O Código Hamming é um conjunto de códigos de correção de erros que podem ser usados ​​para detectar e corrigir "erros de bits" que podem ocorrer.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/4sedrsslu17g3wlf7z4b.JPG)
Figura de um RAID 2


<b>RAID 3:</b>
Usa um sistema de paridade para manter a integridade dos dados. Num sistema com 5 HDs por exemplo, o 4 primeiros servirão para armazenar dados, enquanto o último armazenará os códigos de paridade.
 - Vantagens: Lê e escreve muito rápido e tem controle de erros.
 - Desvantagens: Disponíveis apenas em controladoras SCSI e mais complexo de montar via software.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/40gqfl4ob7nvex98l58h.JPG)
Figura de um RAID 3


<b>RAID 4:</b>
O RAID 4 é similar ao 3, com a diferença dos dados serem divididos entre os discos. Porém a gravação requer que a paridade seja atualizada toda as vezes que ocorrerem gravações no disco, tornando-a mais lenta a gravação dos dados.
 - Vantagens: Taxa de leitura e pode-se inserir mais discos físicos na storage e aumentar o volume lógico.
 - Desvantagens: Taxa de gravação lenta e exige no mínimo três discos rígidos.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/r0ujgc70ei5dimwy1c0u.JPG)
Figura de um RAID 4


<b>RAID 5:</b>
É a evolução natural das versões 2, 3 e 4, utilizando discos completos para fazer a paridade dos outros discos, ou seja, temos informação redundante.
O sistema aqui é mais complexo e a paridade é armazenada de forma alternada em vários discos. Usa complexas fórmulas matemáticas e complexos algoritmos que comprimem os dados, gerando assim, a paridade.
Apesar de haver uma perda de desempenho durante a gravação (devido ao calculo de paridade) em comparação com RAID 0, o RAID 5 faz a leitura e gravação simultânea de todos os discos do array o que ocasiona considerável aumento de desempenho se comparado com a utilização de apenas 1 disco.
 - Vantagens: Mais rápido pra identificar erros e leitura rápida.
 - Desvantagens: Escrita lenta e sistema de controle de discos mais complexo.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/hf8xt3va05ea71hz7hgx.JPG)
Figura de um RAID 5


<b>RAID 6 (Dupla Paridade):</b>
É uma evolução do RAID 5, gravando dados com duas camadas de bits de paridade, esse arranjo permite que até dois discos falhem no mesmo conjunto sem que haja perda de dados. Oferece boa tolerância a falhas, sendo utilizado em ambientes onde é priorizada a segurança dos dados armazenados.
 - Vantagens: Possibilidade de falhar 2 Hds ao mesmo tempo sem perda de dados.
 - Desvantagens: Precisa de pelo menos 3 Hds para ser implementado por causa da paridade, sua escrita é mais lenta, controle de dados também é complexo.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/sa9sjuzpnjiuqlatcyoa.JPG)
Figura de um RAID 6


<b>RAID 10:</b>
É um sistema que empresta características dos RAIDs 0 e 1. Esse sistema só pode ser usado com mais de 4 discos e SEMPRE em número par.
Há uma diferença na montagem, podemos escolher "0 + 1" ou "1 + 0", mas qual a diferença?
<b>0 + 1:</b> É uma fusão do striping (RAID 0) e do mirroring (RAID 1), em caso de falha o sistema se transforma e atua como RAID 0.
<b>1 + 0:</b> Um RAID hibrido, em caso de falha o sistema se transforma e atua como RAID 1.
 - Vantagens: Segurança contra perda de dados e pode falhar um ou dois HDs ao mesmo tempo. É considerado o mais seguro que existe.
 - Desvantagens: Alto custo de expansão e uma solução cara. Os Drivers devem ficar em sincronismo de velocidade para ampliar a performance.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/qhvc6fex90o53xxvdog2.JPG)
Figura de um RAID 10


Legal fera, mas você esqueceu de uma coisa: O que é paridade?
Para explicar de uma forma mais simples, a paridade é a soma de todos os dispositivos utilizados numa matriz (array).

Como assim?
É um sistema de capacidade para recuperar a informação no caso de um erro de disco usando uma forma de redundância de bits. Sacou?

E fechando a explicação de discos, o que são <b>"Hot Spare"</b> ou <b>"Spare Disk"</b>?

Hot Spare ou Spare Disk é um disco sobressalente que pode ser adicionado ao array para assumir automaticamente o papel de um dos discos do próprio array quando houver falha, permitindo assim que os dados sejam restaurados automaticamente de maneira transparente ao usuário e mantendo o sistema íntegro, sem quedas de desempenho. Apesar dos spare disk não serem muito conhecidos, eles são amplamente utilizados em grandes arrays de discos em RAID 5 ou 6.

Bom, até aqui aprendemos o necessário para conhecer uma storage e como estas informações serão úteis daqui pra frente para você que depende dos discos para uma boa performance e segurança dos seus ambientes.

Na próxima parte, conheceremos o conceito de <b>TIER</b> e entraremos com tudo o que aprendemos até aqui no mundo Azure, agora de forma objetiva ;).

Até o próximo post!

Abs,