Estou procurando conselhos sobre a melhor maneira de configurar meus discos / partições para o SQL Server. Aqui estão algumas das minhas principais preocupações:
Como os arquivos SQL devem ser separados (arquivos de dados, logs, temp)?
É melhor RAID para muitos HDDs e particionar o espaço ou criar vários RAIDs com menos discos para cada RAID?
Os arquivos de dados e log devem estar em um tipo de RAID diferente?
Os bancos de dados padrão (mestre, msdb, etc ...) devem estar localizados no C: ou devem estar no mesmo local que os outros arquivos de dados / log?
fonte
Esta é uma grande questão 'depende'.
Não consigo responder à pergunta sobre como criar as 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, observe RAID 1 ou RAID 10 (RAID 1 + 0), pois elas fornecem redundância e ótimo desempenho de leitura / gravação. Para cargas de trabalho de leitura principalmente, 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 de você estar usando o log de transações para alguma coisa - por exemplo, backups ou replicação de log) 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 / gravação, principalmente de leitura e gravação, possivelmente até na 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 novamente depende da carga de trabalho e dos recursos do subsistema IO subjacente - pode ser necessário um grau mais alto de separação para armazenar itens em matrizes RAID individuais do que em uma SAN, por exemplo.
O Tempdb é um caso especial por si só, como geralmente um banco de dados muito carregado e deve ser armazenado separadamente dos outros bancos de dados. Os bancos de dados do sistema não devem ser muito usados e podem ser colocados em qualquer lugar, desde que haja redundância.
Aqui está um link para um whitepaper que ajudei a escrever que deve ajudá-lo: Design físico de armazenamento de banco de dados . Também certifique-se o subsistema de IO pode lidar com a carga de trabalho antecipada - veja este whitepaper: pré-implantação i o Melhores Práticas / . Por fim, verifique se você usa o tamanho de faixa RAID correto (geralmente 64 K ou superior em sistemas mais recentes), o tamanho correto da unidade de alocação NTFS (geralmente 64 K) e que em sistemas anteriores ao Windows Server 2008, você define o deslocamento da partição de disco corretamente . Para obter informações sobre isso e dicas para obter mais informações sobre eles e por que você deve configurá-los dessa maneira, consulte esta postagem no blog: Os deslocamentos da partição de disco, os tamanhos das faixas de RAID e as unidades de alocação NTFS estão definidos corretamente? .
Linha Bototm: conheça sua carga de trabalho e seus recursos de subsistema de E / S e implemente de acordo.
Espero que isso seja útil para você.
PS No que diz respeito ao tempdb, é uma grande lata de worms sobre como você deve configurá-lo e há todos os tipos de informações conflitantes. Eu escrevi um post abrangente sobre a configuração do arquivo de dados tempdb em Equívocos em torno do TF 1118 .
fonte
A resposta curta para os servidores que eu configurei sempre foi
Efetua logon em discos físicos separados, raid 1 ou 10 (distribuição + 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, cole novamente o seu arquivo de paginação do sistema operacional e 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 arraste tudo para baixo.
O que eu experimentei no passado é que ter gravações de banco de dados + gravações de log + gravações de arquivo de paginação atolará uma matriz Raid5 e o desempenho será prejudicado em uma cesta de mão. O problema é que seu desempenho será bom nos testes, desenvolvedores etc. Mas, quando você entrar em disparos de produção e uso, esse problema parecerá "inesperado" e as reclamações dos usuários dispararão.
fonte
Existem caras MSSQL muito melhores aqui do que eu, mas em termos gerais, sugiro o seguinte;
SO e código em C: - devem ser os discos locais, devem ser um par de matrizes RAID1 - usamos 2 discos SAS 146GB 10krpm de 2,5 polegadas para isso, mas você pode usar 2 discos SATA 7.2. Os dados devem estar em uma matriz RAID 1/10, 5/50/6/60 do tamanho que você precisar, bastante rápida (10 krpm ou melhor) - mantemos o nosso em SAN SAN LUNs, geralmente em um grupo de discos 'tier 2' / 10 krpm . Os logs devem estar em um par de matriz RAID 1 MUITO RÁPIDO (15krpm) pequeno (10GB ou menos?) Separado - mantemos o nosso em FC SAN LUNs, geralmente em um grupo de discos muito pequeno 'tier1' / 15krpm ou em um 'tier0' / grupo ssd.
De qualquer maneira, você deseja que cada parte delas em eixos / 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 em nossos bancos de dados regulares, mas você pode dividi-lo em um LUN de matriz de dados separado.
Espero que isto ajude.
fonte