O objetivo deste post é explicar a apresentação que eu fiz em conjunto com o Technical Evangelist Fabrício Catae no evento de lançamento do SQL 2014 no Brasil. A mesma metodologia não serve apenas para o SQL Server, mas para projetos com Hyper-V e demais aplicações críticas (necessário verificar suporte da mesma para estes cenários de SMB)
Se você é um DBA ou regularmente administra alguns servidores SQL Server provavelmente deve ser contra armazenar um banco de dados em um compartilhamento de rede. De fato este foi (e ainda é) por muito tempo um dos maiores tabus: quem, em sã consciência, armazenaria bancos de dados em um compartilhamento de rede? Para entender este medo é importante que você entenda um pouco mais os motivos para isso.
O protocolo SMB (Server Message Blocks) é utilizado pelo Windows para compartilhar arquivos e impressoras via rede. A abordagem principal do protocolo sempre ficou nestes serviços básicos de rede, e o protocolo possui diferenças entre versões (de acordo com a versão do Windows):
Sistema Operacional | Versão do protocolo SMB |
Windows Server 2008 | SMB 2 |
Windows Server 2008 R2 | SMB 2.1 |
Nestas versões já havia um suporte mínimo para o SQL Server, porém não o suficiente para que as pessoas fossem encorajadas a colocar System Databases ou User Databases em compartilhamentos de rede. Além disso colocar o acesso ao banco de dados no mesmo meio físico que usuários usam para acesso aos compartilhamentos não parecia ser uma boa ideia.
O método mais tradicional para armazenamento de bancos de dados SQL é simples mas muito eficiente: Servidor SQL acessando uma Storage SAN via Fiber Channel. Porém se voce analisar de forma fria uma arquitetura com SMB temos o mesmo servidor SQL, porém usando Ethernet para acessar uma Storage SMB usando Windows Server 2012/R2.
A Microsoft tem adotado o SMB com o visão para armazenamentos de dados. Para novos projetos de implantação vale a pena considerar o uso de uma arquitetura via SMB, que pode ser para um ambiente virtualizado ou SQL Server por exemplo.
Com a chegada do Windows Server 2012 ocorreram muitos melhoramentos no protocolo SMB que permitem suportar cargas de trabalho de alta carga. Vamos entender um pouco mais o que o novo protocolo SMB trouxe de melhorias e novidades.
O novo Windows Server implementa como principais melhorias os seguintes pontos:
- Failover Transparente
- Um cliente (estação de trabalho por exemplo) pode estar conectado a um compartilhamento SMB gerenciado em um Failover Cluster com Windows Server 2012. Em caso de Failover (queda de um serviço e redirecionamento para outro servidor no mesmo Cluster) a conexão do usuário é redirecionada sem que o mesmo tenha perda de dados. É necessário que o cliente suporte SMB 3 também.
- Escalabilidade SMB
- Se você tem um compartilhamento de rede em um Cluster com Windows Server 2012 então você pode aumentar a quantidade de Nós (servidores que participam de um Failover Cluster) de forma transparente
- SMB Multi Channel (ou Multi Canal)
- Um cliente (estação de trabalho por exemplo) acessando um compartilhamento de rede SMB3 são abertas múltiplas conexões com o mesmo, aumentando sua capacidade e desempenho. É necessário que o cliente suporte SMB 3 também.
- SMB Direct (SMB sobre acesso remoto direto à memória [RDMA])
- A funcionalidade exige que as 2 pontas (cliente e servidor na conexão) tenham suporte ao SMB3 e exige placas que suportem RDMA. O ganho de desempenho é muito alto, visto que em uma conexão de rede SMB3 com RDMA uma das máquinas comunica direto com o DMA da placa de rede da outra máquina. Além disso reduz o uso de CPU e torna a experiência do acesso remoto como se fosse local para a aplicação que se utiliza do SMB sobre RDMA.
- Criptografia SMB
- A comunicação entre 2 máquinas que suportem SMB3 é criptografado por padrão, de forma que você não precisa implementar IPSec ou outro método de criptografia para o tráfego SMB.
- Suporte à PowerShell
- Novos comandos no PowerShell permitem controlar com maior precisão as configurações do SMB3
- Exemplos:
- Get-SmbServerConfiguration – permite visualizar as configurações ao compartilhar dados via SMB
- Get-SmbMultichannelConnection – visualiza quais conexões estão utilizando Multi Channel
No Windows Server 2012 R2 foram implementados algumas novas funcionalidades e outros melhoramentos ao SMB3, passando a ser chamado de SMB3.02. Temos 3 destaques entre o SMB3 e o SMB 3.02:
- Rebalanceamento automático para Scale-Out File Servers
- Performance melhorada para SMB Direct
- Melhorias nas mensagens de eventos do SMB
- Etc
A questão é que para novos projetos vale muito a pena considerar o uso do SMB para servidores SQL ou Hyper-V devido a uma serie de melhorias que o tornam confiável e com ótimo desempenho. Importante ressaltar que para infraestruturas existentes com Fiber Channel não significa que você vá descartar por completo o ambiente atual (com certeza você teve investimentos pesados em switchs fabric, cabeamento, etc). Além disso a tecnologia para redes Ethernet tem evoluído rapidamente para adaptadores 40Gbps, 54Gbps e até 56Gbps, velocidades que em conjunto com Teaming podem fornecer velocidades de conexão mais do que suficientes para suportar volumes intensos de acesso.
Links recomendados