
Estou procurando alguns conselhos sobre a melhor maneira de configurar meus discos/partições para SQL Server. Aqui estão algumas das minhas principais preocupações:
Como os arquivos SQL devem ser separados (arquivos de dados, logs, temporários)?
É melhor fazer RAID em muitos HDDs e particionar o espaço ou fazer vários RAIDs com menos discos para cada RAID?
Os dados e os arquivos de log devem estar em um tipo de RAID diferente?
Os bancos de dados padrão (master, msdb, etc...) devem estar localizados em C: ou devem estar no mesmo local que os outros arquivos de dados/log?
Responder1
Aqui está uma bela postagem no blog:http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html
Artigo técnico sobre alinhamento de disco:http://msdn.microsoft.com/en-us/library/dd758814.aspx
Resumindo, seu sistema operacional deve estar em RAID 1, seus arquivos de dados em RAID 10 (de preferência) e arquivos de log em RAID 1.
Artigo sobre desempenho SQL:http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx
PDF com as 10 melhores dicas de desempenho:http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf
Lembre-se também de colocar seu TEMPDB em um disco separado por motivos de desempenho. Tenho certeza de que Paul Randal virá aqui e te surpreenderá com o porquê daqui a pouco.
MS diz por que para tempdb:http://msdn.microsoft.com/en-us/library/ms175527.aspx
Responder2
Esta é uma grande questão do tipo “depende”.
Não posso responder à pergunta sobre como criar matrizes RAID individuais para você, pois não sou especialista em armazenamento, mas posso ajudá-lo com o resto.
A primeira coisa que você precisa considerar é qual é a carga de trabalho nos vários bancos de dados - OLTP (leitura/gravação) ou DSS/DW (principalmente leitura). Para cargas de trabalho de leitura/gravação, você deve observar o RAID 1 ou o RAID 10 (RAID 1+0), pois eles fornecem redundância e excelente desempenho de leitura/gravação. Para cargas de trabalho de leitura, você pode usar o RAID 5. O motivo pelo qual o RAID 5 não deve ser usado para cargas de trabalho de leitura/gravação é que você paga uma penalidade de desempenho nas gravações.
Os logs de transações, por sua própria natureza, são de leitura/gravação (ou principalmente de gravação, dependendo se você está usando o log de transações para alguma coisa - por exemplo, backups de log ou replicação) e, portanto, nunca devem ser colocados no RAID 5.
Isso significa que, para alguns bancos de dados e cargas de trabalho, você pode ter arquivos de dados no RAID 5 e arquivos de log no RAID 1/10, e para outros bancos de dados você pode ter tudo no RAID 1/10. Indo além, se você tiver um banco de dados particionado, ele poderá conter alguns dados de leitura e alguns dados de leitura/gravação, possivelmente até mesmo dentro da mesma tabela. Isso pode ser dividido em grupos de arquivos separados e, em seguida, cada grupo de arquivos colocado em um nível RAID apropriado.
A separação dos bancos de dados reais depende novamente da carga de trabalho e dos recursos do subsistema IO subjacente - um maior grau de separação pode ser necessário para armazenar coisas em matrizes RAID individuais do que em uma SAN, por exemplo.
Tempdb é um caso especial por si só, pois geralmente é um banco de dados muito carregado e deve ser armazenado separado dos outros bancos de dados. Os bancos de dados do sistema não devem ser muito utilizados e podem ser colocados em qualquer lugar, desde que haja redundância.
Aqui está um link para um whitepaper que ajudei a escrever e que deve ajudá-lo:Projeto de armazenamento físico de banco de dados. Certifique-se também de que seu subsistema IO possa lidar com a carga de trabalho prevista – consulte este whitepaper:Práticas recomendadas de E/S pré-implantação. Por fim, certifique-se de usar o tamanho correto da faixa RAID (geralmente 64K ou superior em sistemas mais recentes), o tamanho correto da unidade de alocação NTFS (geralmente 64K) e de definir o deslocamento da partição do disco corretamente em sistemas anteriores ao Windows Server 2008. . Para obter informações sobre eles e dicas para obter mais informações sobre eles e por que você deve configurá-los dessa maneira, consulte esta postagem do blog:Os deslocamentos da partição do disco, os tamanhos das faixas RAID e as unidades de alocação NTFS estão configurados corretamente?.
Resumindo: conheça sua carga de trabalho e os recursos do subsistema de IO e, em seguida, implemente de acordo.
Espero que isso seja útil para você.
PS No que diz respeito ao tempdb, é uma grande confusão sobre como você deve configurá-lo e há todos os tipos de informações conflitantes. Escrevi uma postagem abrangente no blog sobre a configuração do arquivo de dados tempdb emEquívocos em torno do TF 1118.
Responder3
A resposta curta para servidores que configurei sempre foi
Registra em discos físicos separados, raid 1 ou 10 (striping + espelhamento)
Banco de dados em discos próprios, dependendo das necessidades de desempenho geralmente RAID5
Muito cache no (s) controlador (es) RAID
De preferência, coloque novamente o seu sistema operacional e o arquivo de paginação do Windows em uma matriz separada, geralmente apenas um espelho (Raid 1). Isso mantém todas as operações de gravação separadas para que o desempenho pesado não prejudique tudo.
O que experimentei no passado é que ter gravações de banco de dados + gravações de log + gravações de arquivo de paginação irá atrapalhar um array Raid5 e o desempenho irá para o inferno em uma cesta de mão. O problema é que seu desempenho será bom em testes, desenvolvimento, etc. Mas quando você entrar em produção e o uso disparar, esse problema aparecerá "do nada" e as reclamações dos usuários dispararão.
Responder4
Existem caras do MSSQL muito melhores aqui do que eu, mas em termos gerais eu sugeriria o seguinte;
SO e código em C: - estes devem ser os discos locais, devem ser um par de array RAID1 - usamos 2 discos SAS 146GB 10krpm de 2 x 2,5 polegadas para isso, mas você pode usar 2 discos SATA 7.2. Os dados devem estar em um array RAID 1/10, 5/50/6/60 bastante rápido (10krpm ou melhor) de qualquer tamanho que você precisar - mantemos os nossos em FC SAN LUNs, geralmente em um grupo de discos 'camada 2'/10krpm . Os logs devem estar em um par de array RAID 1 MUITO RÁPIDO (15krpm) pequeno (10GB ou menos?) separado - mantemos os nossos em FC SAN LUNs, geralmente em um grupo de discos 'tier1'/15krpm muito pequeno ou em um 'tier0'/ grupo SSD.
De qualquer forma, você deseja que cada pedaço deles esteja em fusos/matrizes separados para desempenho - é claro que tudo funcionará em um único disco, mas acho que você está procurando um equilíbrio entre desempenho e custo.
Armazenamos nosso master/tempdb com nossos bancos de dados regulares, mas você pode dividi-lo em um LUN de matriz de dados separado.
Espero que isto ajude.