Ajude-me a escolher uma combinação de nível RAID para uma instância do SQL Server 2008

11

Vou reconstruir um servidor IBM 3400 do zero. Este servidor é dedicado a uma instância do SQL Server 2008 em execução no Windows 2008 R2.

Vou fazer nova configuração de RAID. Eu tenho 6 unidades SCSI de 73 GB dentro da máquina e um controlador IBM ServerRAID 8K. Qual seria uma boa maneira de definir os níveis de RAID? Devo ter dois, três ou um campo no meu controlador?

Estou pensando em fazer uma das seguintes soluções:

  1. Use todo o disco e faça um pool RAID 10.
  2. Use 4 discos para um pool RAID 1e e use-o para armazenar os dados e o SO do banco de dados e use os outros 2 discos em um pool RAID 0 e use-o para armazenar os logs do banco de dados.
  3. Alguma outra combinação.

O tamanho da unidade de faixa maior é melhor?

Este servidor será um assinante de um banco de dados replicado. Sua principal tarefa será gerar relatórios e recuperar dados, com apenas o agente de replicação fazendo gravações. O tamanho do banco de dados é de cerca de 90 GB.

adoptilot
fonte
você está usando os termos RAID1E e RAID10 de forma intercambiável?
Jack diz que tente topanswers.xyz 11/11
também, 3x73 ~ 220GB - quanto você espera que seu DB de 90GB cresça a cada ano?
Jack diz que tente topanswers.xyz 11/11
@JackDouglas Este banco de dados com 90 GB é de 2006 ano até agora, acho que ele pode crescer nos próximos dois anos no máximo cerca de 30%
adopilot
Eu gosto de provisionar em excesso o armazenamento possível ao criar um servidor a partir do zero. Você também tem armazenamento de segunda camada (por exemplo, SATA)? Pode ser muito útil para uma quantidade razoável de espaço para respirar, especialmente quando você acaba em uma situação de DR.
Jack diz que tente topanswers.xyz 11/11

Respostas:

6

Eu voto na opção 1. Lembre-se de que RAID 0 significa "sem proteção" - seus logs são importantes? (sim, eles fazem).

Também tem o benefício da simplicidade

Os documentos do SQL Server dizem:

Para um paralelismo de E / S otimizado, use o tamanho da faixa de 64 KB ou 256 KB.

Mas geralmente é bom usar o IMO padrão do controlador

Jack diz que tenta topanswers.xyz
fonte
5

Notas:

  • Os binários do OS + terão 40 GB
  • 6 discos não oferecem muitas opções
  • Onde você deseja seus backups?
  • Deixe o controlador RAID escolher o tamanho da faixa (depende do nível do RAID). Isso é micro otimização e você verá dados conflitantes
  • A velocidade de gravação do arquivo de log determina sua taxa de transferência
  • Você precisa permitir espaço livre = tabela 1,2 vezes maior dentro do seu MDF para reconstruções de índice
  • RAID 0 = idiota em um servidor que possui dados de qualquer valor

Eu iria para uma matriz RAID 10

gbn
fonte
4

Eu usaria dois volumes RAID1 com três espelhos cada, ou um RAID10 com distribuição de dois conjuntos de três espelhos.

Justificativa: dois espelhos são muito pouco, ponto final. Seu servidor não conseguirá realizar verificações de consistência apropriadas com mais frequência do que uma vez por mês; portanto, é bem provável que você tenha alguns bloqueios. Isso não importa, desde que o outro espelho ainda esteja intacto, mas quando um disco falha, é provável que você não consiga se recuperar do outro. Portanto, três espelhos.

O RAID6 é uma má ideia em uma configuração de banco de dados, pois as gravações tendem a ser pequenas, o que as transforma em operações de leitura, modificação e gravação em segundo plano.

Se dois volumes RAID1 ou um RAID10 são melhores para você, depende do seu aplicativo. Se é provável que você precise de todo o espaço, opte pelo RAID10; caso contrário, sugiro um volume para o sistema e índices e outro para as páginas de dados. Se você escolher dois volumes, verifique se o seu controlador permite estender um RAID1 para um RAID10 posteriormente, caso seja necessário expandir.

Simon Richter
fonte
+1 por mencionar o problema de espelhamento não resolve (pelo menos por si só). É possível configurar a depuração para ocorrer com mais regularidade no Linux. O mesmo se aplica ao Windows? No entanto, você repetir o mito de que os índices e dados devem, idealmente, ser separados - há um argumento para manter logs separados mas os índices e dados são melhor listrado em conjunto (mais de tantos fusos quanto possível)
Jack diz tentativa topanswers.xyz
Eu acho que deveria ser possível configurar verificações mais frequentes - no entanto, o desempenho do banco de dados geralmente diminui bastante, então prefiro usar unidades extras e menos verificações.
Simon Richter
Normalmente, mantenho os índices separados, para que eu possa usar diferentes comportamentos de cache e readahead - uma varredura de tabela completa geralmente se beneficia do readahead, enquanto as varreduras de índice o fazem com menos frequência.
Simon Richter
No meu sistema Debian, / usr / share / mdadm / checkarray é executado com o sinalizador --idle por padrão, então eu não esperaria um desempenho perceptível. No caso dos OPs, isso será tratado pelo controlador RAID e eu acho que o fará independentemente de você ter 2 ou 3 espelhos para que o resultado (se houver) esteja lá de qualquer maneira.
Jack diz que tente topanswers.xyz
re as varreduras de índice, ponto justo, mas eu sugiro que este é um conselho geral de otimização, não de otimização geral :) Vou perguntar no chat para ver o que os outros pensam - sinta-se à vontade para participar ...
diz Jack tente topanswers.xyz
3

Eu concordo com o Douglas. Um ataque comum 10 é um bom começo, desde que você não fique sem espaço em disco. Um tamanho de faixa menor seria melhor para o acesso ao banco de dados. O uso de partições diferentes apenas deixa o espaço em uma partição mais rápido.

A coisa com o RAID-0 não é apenas que os dados podem ser trazidos de backups ou que podem ser excluídos, mas também significa tempo de inatividade toda vez que seu disco é interrompido. Sua máquina está processando alguns dados onde alguns dias de inatividade não importam? Mesmo no suporte a NBD, pode demorar cerca de seis dias para obter um novo disco.

Antti Rytsölä
fonte