SQL Server - Separando arquivos de dados, log e TempDB em uma SAN

8

Eu tenho um SQL Server conectado a uma SAN. Nosso novo fornecedor de armazenamento recomenda que todos os LUNs abranjam toda a matriz de discos, que é RAID5. Normalmente, eu solicitaria 3 LUNs separados (dados, log e TempDB) do administrador da SAN, mas, dada a recomendação do novo fornecedor, há algum motivo para criar LUNs separados? Ou eu veria o mesmo desempenho se tudo estivesse em um LUN, já que abrangeria todos os discos?

Ótimo artigo aqui, mas não aborda exatamente minha situação exata: http://www.brentozar.com/archive/2008/08/sql-server-on-a-san-dedicated-or-shared-drives/

SomeGuy
fonte

Respostas:

6

Uma coisa a considerar é que os arquivos de log são gravações seqüenciais, onde os arquivos de dados não são seqüenciais. Essa é uma das razões para LUNs separados. Os arquivos de log gravam mais rápido se estiverem por conta própria, porque os eixos não precisam pular, basta escrever sequencialmente. Se você adicionar um arquivo de dados, os eixos terão que pular e você perderá algum desempenho. Espero ter a terminologia correta, pois não estou familiarizado com as SANs. A idéia por trás disso deve ser, no entanto.

As recomendações do fornecedor frequentemente estão erradas quando se trata do SQL Server. Só porque o SQL Server tem necessidades diferentes da maioria dos aplicativos que usam uma SAN.

Kenneth Fisher
fonte
11
Acho que o OP está dizendo que, independentemente do LUN, todos estão atingindo os mesmos eixos. Em outras palavras, não há separação física para conjuntos isolados de discos.
Thomas Stringer
11
Ahh, acho que o que eu estava dizendo é que não deve ser configurado dessa maneira :) coloque cada um dos LUNs em eixos diferentes, mesmo que o fornecedor sugira o contrário. Se isso não for possível, não há motivo de desempenho para separá-los em diferentes LUNs. Embora você nunca saiba o que acontecerá em segundo plano e em algum momento no futuro, se eles estiverem em LUNs separados, eles poderão ser movidos para eixos diferentes.
Kenneth Fisher
4

Depende muito da SAN, geralmente você deseja configurar LUNs diferentes com diferentes cache, compactação, criptografia, leitura antecipada, políticas de gravação / retorno, prioridades etc. Os arquivos de dados SQL geralmente exibem um comportamento diferente do tempdb ou log arquivos. O método / rede de acesso também entra em jogo, pois o entroncamento, os caminhos múltiplos e outras tecnologias podem ou não funcionar, dependendo do método de acesso (FC, iSCSI, ..) e da infraestrutura. Você poderá utilizar sua rede ao máximo com o SQL Server, pois a latência e a taxa de transferência são críticas. Vi casos com a configuração de equipes de rede, mas apenas 1 Gbps era utilizável devido a outras restrições que o cliente desconhecia. Eu concordo com Kenneth, aceite recomendações de fornecedores com uma grande dose de sal, elas frequentemente estão erradas. O SQL Server é um animal instável, existem muito poucos absolutos, geralmente apenas mais perguntas. Fazer as perguntas certas (através de testes) é realmente a chave.

AceCTO
fonte
2

Não "aceite recomendações de fornecedores com uma grande dose de sal", a menos que sejam do departamento de vendas ou marketing. Muito pelo contrário, se você pode obter acesso à equipe de implementação técnica, faça amigos.

Provavelmente, este é um dos novos appliances de criação que virtualizam o pool de armazenamento e incluem recursos de camada automática. Um exemplo seria Compellent . Eles executam todo tipo de vodu da SAN, como:

  • Grave blocos ativos de dados no armazenamento de camada 1 com níveis de RAID com desempenho otimizado, como RAID 10.
  • Migre automaticamente blocos de dados inativos para armazenamento de camada inferior com RAID 5 ou 6 de maior sobrecarga e alta proteção.

Para o Compellent, o armazenamento é dividido em três camadas, sendo a camada 1 a mais rápida (SSD ou RAID 10) até a lenta camada 3, que compreende discos SAS de 7k. Ainda não usei um deles em um ambiente de produção, mas tenho acesso a um, com o qual espero poder executar alguns testes.

Confesso que estou intrigado e com medo dos recursos da camada automática, que no papel soam maravilhosos, mas na produção podem ser problemáticos. O primeiro exemplo que ocorreu como potencialmente destruidor do mecanismo da camada automática foram os backups do banco de dados. Lá, você tem um alvo de gravação alta e repetitivo, que pode enganar o mecanismo de camadas para mover os blocos para um pool de alto desempenho, potencialmente enviando dados que deveriam estar lá.

Para a pergunta original:

... há algum ponto na criação de LUNs separados?

Provavelmente não, não. Deixe o caso de uso claro para o fornecedor, para ter certeza, mas se for um dispositivo do tipo Compellent, não acredito que você ganhe nada ao dividir seus LUNs.

Mark Storey-Smith
fonte
2

Existe algum ponto para separar LUNs? Quase sempre. Caso contrário, você acaba sobrecarregando a fila LUN no servidor Windows. E experimentar qfull condições é doloroso, independentemente do sistema operacional, virtualização ou plataforma de armazenamento

sql_handle
fonte