Consolidação de Serviços de Armazenamento com Windows Server 2008 R2 e SMB2

O título deste post é o mesmo da apresentação que irei fazer no TechEd Brasil hoje pela manhã. Por isso resolvi escrever um pouco sobre o que vai ser falado.

SMB é o acrônimo de Server Message Block, que é um protocolo usado para compartilhamento de arquivos, impressoras e outros dispositivos. Ele é um protocolo cliente-servidor, baseado em sua grande parte no modelo resquest-response. Alguns documentos apontam que em 1987 ele já existia.

Uma importante característica do SMB é a de multiprotocolo, ou seja, ele pode rodar sobre IPX, NETBEUI, TCP/IP dentre outros caso seja necessário.

A primeira versão do SMB foi desenvolvida focada na rede local e na consistência da informação, dessa forma o protocolo se tornou “burocrático (chattiness)”, e com isso o seu desempenho em redes com maior latência não era satisfatório.

A versão 2.0 do SMB mudou muita coisa. O número de opcodes, um dos fatores que gerava a “burocracia” do protocolo 1.0 foi reduzida de um pouco mais de 100 para 19. O desempenho em links com alta latência foi aprimorada devido à capacidade de um único request compor varias ações, juntamente com a mudança do protocolo de síncrono para assíncrono. O SMB 1.0 limitava o número de usuários, compartilhamento e arquivos abertos a 65.536 (2^16). No SMB 2.0 esse valor pulou para 2^64, o que já dá uma diferença exponencial.

Uma das grandes novidades no SMB2 é a propriedade chamada de durability. Quando o servidor tem várias placas de rede (em subnets diferentes) o cliente SMB recebe uma lista desses IPs do servidor DNS em que ele pode se conectar. Caso ocorra uma falha uma das placas o cliente reconecta a sessão SMB na placa subsequente, sem interromper a operação em andamento, como por exemplo, a cópia de um arquivo.

O SMB2 durability requer Oplocks (opportunistic locks). Para mais detalhes sobre o que são oplocks de uma olhada em alguns exemplos.

O SMB 2.1 acrescentou suporte a MTU maiores e ao modelo de leasing de oplocks, para um melhor desempenho do protocolo. Maiores detalhes no artigo What’s New in SMB.

Todas essas mudanças aumentaram MUITO o desempenho do Windows 2008 e Windows 2008 R2 em relação à capacidade de usuários simultâneos utilizando o SMB. Em especial a versão Windows Server 2008 R2, que nos testes realizados conseguiram suportar praticamente o dobro de usuários que o Windows Server 2008. Isso se dá a melhoria nos algoritmos de rede, SMB e processamento dos pacotes.

Só tome cuidado para saber se você está realmente usando o SMB2 ou SMB 2.1. Não adianta estar executando o Windows 7 como cliente e o Windows Server 2003 como servidor, pois neste caso o SMB 1 será o protocolo utilizado, conforme a tabela abaixo:

Além dessas novidades todas, ferramentas como o CHKDSK e o ROBOCOPY foram repaginadas. Recomendo a leitura dos White papers: NTFS Chkdsk Best Practices and Performance e SMB 2.1 and Multithreaded Robocopy.

Por fim, o SMB2.2, presente no produto com codename Windows 8, traz muitas novidades. Essas são tão significativas que muda a forma de como produtos como SQL e Hyper-V se relacionam com storage. Fique atento!!