Artigo SQL Magazine 17 - Otimizando um servidor Linux para banco de dados - Parte II

Artigo da Revista SQL Magazine - Edição 17.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Otimizando um servidor Linux para banco de dados - Parte II

por Carlos Eduardo Smanioto

 

 

Leitura obrigatória

Para uma melhor compreensão desse artigo, é aconselhada a leitura da primeira parte publicada na edição 12 da SQL Magazine com o título “Otimizando um servidor Linux para banco de dados”.

 

Nessa segunda parte do artigo sobre tuning de servidores Linux para banco de dados estaremos focando a otimização do Kernel do Linux. Veremos também a teoria relacionada com as configurações descritas a fim de dar ao leitor plena consciência do que estaremos fazendo. Abordaremos aqui conceitos que não se aplicam somente a banco de dados, mas também a outros softwares utilizados em servidores de rede, como o SAMBA, que permite montar no Linux um servidor de arquivos e domínio, substituindo Windows 2000 Server como servidor PDC (Primary Domain Controller).

Uma breve introdução

Diferente do Windows onde temos poucas opções de configuração e otimização do sistema operacional em relação a um servidor de BD, no Unix (e seus derivados) as configurações do sistema operacional estão diretamente relacionadas com a performance do SGBD. Nesse artigo, apresentarei as principais modificações no kernel para alcançar o alto desempenho. Antes, no entanto, falaremos de um assunto que foi citado superficialmente na primeira parte do artigo: RAID.

RAIDs

RAID é a sigla para Redundant Array of Inexpensive/Independent Disks - "Matriz Redundante de Discos de Baixo Custo/Independentes". O objetivo do RAID é criar um sistema contra falhas de HD através do armazenamento redundante dos dados em vários discos, aumentando também a performance de gravação e recuperação dos dados.

Podemos criar RAIDs via hardware ou software. É possível criar uma unidade RAID com apenas um HD, no entanto isso não faria sentido, visto que não haveria redundância, e portanto não traria qualquer tipo de vantagem. Consideramos então que para se criar um RAID precisamos de no mínimo dois HDs. Uma unidade RAID é composta por “n” HDs, sendo que o sistema operacional não diferencia os HDs que a compõe, enxergando-os como uma única unidade RAID. Lembram-se da primeira parte do artigo, quando citei o LVM? O RAID tem o mesmo conceito, aliás, o RAID 0 (Striping) foi explicado no LVM. Através do RAID, além de garantirmos a disponibilidade dos dados em caso de falha em algum dos discos, também equilibramos o acesso às informações, diminuindo os gargalos de I/O, aumentando assim o desempenho de acesso ao disco pelo SGBD.

Níveis de RAID

A tecnologia RAID possui diversos níveis. Cada nível representa uma combinação do uso dos discos no que se refere ao espelhamento dos dados, fracionamento (striping), detecção de falhas, etc. Estaremos comentando nesse artigo os 6 níveis básicos de RAID.

 

RAID 0

Conhecido como striping ou fracionamento. Nele os dados são divididos em pequenos segmentos e distribuídos entre os discos (ver Figura 1). Este nível não oferece tolerância a falhas, mas é o mais rápido de todos os níveis de RAID. O RAID 0 é usado apenas para ganhar performance, uma vez que a distribuição dos dados entre os discos proporciona grande velocidade na gravação e leitura de informações. Quanto mais discos houver, mais velocidade é obtida. Apesar da limitação do hardware controlador de disco, de maneira geral é possível formar um RAID 0 com até quatro discos. Segundo o site www.mcpdomain.com/artigos/raidsystem.asp, o aumento do desempenho é de 98% com dois HDs, 180% usando três HDs, e 250% usando quatro HDs. No entanto, não recomendo usar um RAID 0 sem técnicas de backup e medidas que permitam proteger a informação contra acidentes, pois ele não oferece tolerância contra falhas.

 

Figura 1. RAID 0.

 

RAID 1

Também conhecido como mirroring (espelhamento). Nele, cada bit gravado no primeiro HD é gravado no segundo HD, fazendo com que o segundo disco seja um espelho do primeiro. Assim, em caso de crash do primeiro HD, os dados estariam íntegros no segundo. Na Figura 2 vemos oito HDs espelhados em pares. A gravação dos dados no RAID 1 é mais lenta, mas a leitura é bastante rápida, pois o controlador RAID terá duas fontes de pesquisa para localizar o dado requisitado. Esse é um dos níveis de RAID mais caros, pois para cada gigabyte de informação armazenada, é necessário um outro gigabyte para espelhamento.

 

Figura 2. RAID 1.

 

RAID 2 (ECC)

Este tipo de RAID utiliza discos separados para armazenar os dados e as informações de redundância (paridade) (ver Figura 3). As informações de paridade são geradas a nível de bit, utilizando um processo conhecido por Hamming Error Correcting Codes (ECC), que permite tanto identificar como corrigir possíveis erros nas informações, surgidos depois que as mesmas foram gravadas. Vários fatores fazem com que esse nível de RAID não seja utilizado atualmente, entre eles está o alto custo devido ao grande número de HDs necessários, e o fato de que os HDs atuais já oferecem correções de erro baseadas em ECC no seu próprio hardware. A distribuição dos dados a nível de bits faz com que a performance das leituras randômicas de dados seja terrível.

 

" [...] continue lendo...

Artigos relacionados