Fundamentos de Storage Parte 2

Olá, vou continuar à série de posts sobre Fundamentos de Storage, e hoje falarei sobre discos HDD, ou Hard Disk Drives.

A idéia é conseguirmos entender algumas questões importantes sobre HDD, a primeira idéia é entender que esses discos são mecânicos, e influenciam diretamente em como o SQL Server faz acesso aos dados e relacionando com  parte do post inicial como:  latência, e taxa de transferência.

Vamos analisar a “Anatomia” de um disco, a imagem abaixo indica os principais componentes de um HD, e em seqüência vamos discutir cada um desses componentes:

anatomia

Plates ou Pratos:

Esse componente é onde os dados ficam realmente armazenados, dependendo da densidade desses pratos maior o espaço que esses pratos e consequentemente os discos podem armazenar. Essa gravação é magnética e comumente o material dos pratos é de alumínio. Além disso um HD pode ter mais que um plate de forma além da densidade, quanto mais plates tiver um disco mais espaço ele é capaz de armazenar . Em nossa imagem percebemos que são 3 plates.

Além disso é importante entender a subdivisão (ou como os dados são gravados) nos plates, na imagem abaixo vemos que cada plate tem uma trilha, que seria a linha onde se encontram os sectors que podemos entender como blocos onde nossos dados serão gravados.

Picture2 -sectors

Spindles ou Eixo:

Os plates ficam posicionados em um eixo ou spindle, esse eixo é basicamente um motor, que tem por função girar os plates na maior velocidade afim de posicionar a agulha para leitura. A capacidade de rotação é medida em RPM (Rotações por minuto) e pode variar por modelo, e fabricante. Em modelos para computadores domésticos existem discos com velocidades de  4200 RPM, 5400 RPM e 7200 RPM. Existem para discos  corporativos com velocidade de 7200 RPM, 10000 RPM e 15000 RPM. A velocidade de rotação para cada disco influencia diretamente na latência das buscas no discos, de forma que podemos calcular o tempo máximo de latência através da seguinte formula:

X = 60 (1 minuto) ÷ VELOCIDADE DO DISCO x 1000

Imaginando esse cálculo vamos analisar um disco de 15000 RPM:

60 ÷ 15000 x 1000 = 4ms.

Para análise de uma latência média basta dividir esse resultado por dois, que é a metade do tempo para um spindle girar, de forma que:

60 ÷ 15000 x 1000 = X ÷ 2

Em nosso exemplo a latência de um único disco de 15000 RPM é de 2 milissegundos. Esse conceito também é conhecido como seek time. A idéia desse seek time é similar a imagem abaixo:

Picture2 - seek time

Podemos então construir uma tabela de referência para latência de discos:

RPM

Latência Máxima (ms)

Latência Média (ms)

4200

14

7

5400

11

5.5

7200

8

4

10000

6

3

15000

4

2

Head ou Agulha: Essa é parte que faz a gravação e leitura dos dados, utilizando-se de impulsos eletromagnéticos é interessante mencionar que essa agulha jamais toca a superfície dos plates para fazer gravação e leitura, porém quando ocorre essa operação temos falhas e corrupção dos blocos de gravação desses plates. Esse componente fica posicionado na ponta do braço do atuador como pode ser conferido na nossa imagem. Além desses componentes temos o Atuador que é outra estrutura mecânica que é responsável por movimentar esse braço e conseqüentemente a agulha para leitura nos plates. A imagem abaixo mostra o conjunto de cabeças e o conceito de múltiplos plates e heads.

360px-Cylinder_Head_Sector_svg

Por fim em nossa imagem temos a interface de conexão que é por onde nossos sistemas se conectarão e movimentarão os dados por meio físico para os discos. Nossa imagem mostra um disco do tipo SATA, mas podemos ter interfaces do tipo SCSI, IDE, SAS e Fiber Channel. Em casos de SAN, que usa como forma de conexão a HBA, além disso temos a opção de utilizar o protocolo iSCSI para enviar esses dados através de redes ETHERNET.

A HBA é uma placa que conectada a motherboard do servidor serve de canal de comunicação para uma infra-estrutura externa de discos ou simplesmente SAN. O meio físico ao qual os dados trafegam para a Storage são cabos de fibra ótica, extremamente rápidos, na imagem abaixo vemos um modelo de HBA onde temos um “canal” ou seja, podemos usar apenas um meio físico para trafegar os dados, existem porém outros modelos com mais de uma porta de comunicação, nesses modelos podemos utilizar mais de um “canal”, o que aumenta o throughput de dados uma vez que podemos adicionar mais “caminhos” de fibra para trafegar nossos dados.

Picture1

De uma forma bem simplista a infra-estrutura de um ambiente SAN seria algo assim:

Presentation3 

 

Em um post próximo pretendo explicar mais sobre como funcionam essas interfaces e os protocolos de conexão para infra-estruturas SAN, além disso pretendo explicar um pouco mais sobre RAID levels, e como além de aumentar redundância podemos diminuir a latência de discos que impactam diretamente na performance do nosso SQL Server.

Até mais....