web-dev-qa-db-fra.com

Configuration de disque / partition recommandée pour un serveur SQL

Je cherche des conseils sur la meilleure façon de configurer mes disques/partitions pour SQL Server. Voici quelques-unes de mes préoccupations majeures:

Comment les fichiers SQL doivent-ils être séparés (fichiers de données, journaux, temp)?

Est-il préférable de raidez beaucoup de disques durs et de partitionner l'espace ou de faire plusieurs raids avec moins de disques pour chaque raid?

Les fichiers de données et de journaux doivent-ils être sur un type de raid différent?

Si les bases de données par défaut (maître, msdb, etc.) sont situées sur le C: ou doivent-elles être au même endroit que les autres fichiers de données/journaux?

14
Sean Howat

Voici un bel objet de blog: http://sqlserveravedvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

Papier blanc sur l'alignement sur disque: http://msdn.microsoft.com/en-us/library/dd758814.aspx

En bref, votre système d'exploitation devrait être sur RAID 1, vos fichiers de données sur RAID 10 (de préférence) et des fichiers journaux sur RAID 1.

Article de performance SQL: http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

PDF sur les 10 meilleurs conseils de performance: http://www.stlssug.org/docs/best_practices_for_performance.pdf

N'oubliez pas de mettre votre TEMPDB sur un disque séparé pour des raisons de performance. Je suis sûr que Paul Randal viendra ici et saura votre esprit avec pourquoi dans un peu.

MS dit pourquoi pour TEMPDB: http://msdn.microsoft.com/en-us/library/ms175527.aspx

14
SQLChicken

C'est une question "ça dépend".

Je ne peux pas répondre à la façon de créer la question individuelle des matrices RAID, car je ne suis pas un expert de stockage, mais je peux vous aider avec le reste.

La première chose à considérer à considérer est la charge de travail sur les différentes bases de données - OLTP (lecture/écriture) ou DSS/DW (surtout). Pour des charges de travail en lecture/écriture, vous devez rechercher RAID 1 ou RAID 10 (RAID 1 + 0), car ils fournissent une redondance et une performance de lecture/écriture géniale. Pour la plupart des charges de travail, vous pouvez utiliser RAID 5. La raison RAID 5 ne doit pas être utilisée pour des charges de travail en lecture/écriture, c'est que vous payez une pénalité de performance sur les écrivies.

Les journaux de transaction, de par leur nature même, sont en lecture/écriture (ou en écriture, selon vous, selon que vous utilisiez le journal de transaction pour n'importe quoi - par exemple, des sauvegardes de journal ou une réplication) et ne doivent donc jamais être mis sur RAID 5.

Cela signifie que pour certaines bases de données et des charges de travail, vous pouvez avoir des fichiers de données sur RAID 5 et des fichiers journaux sur RAID 1/10 et pour d'autres bases de données, vous pouvez avoir tout sur RAID 1/10. Aller plus loin, si vous avez une base de données partitionnée, il peut contenir des données sur la plupart et certaines données de lecture/écriture, éventuellement dans la même table. Cela pourrait être divisé en groupes de fichiers distincts, puis chaque groupe de fichiers mis sur un niveau RAID approprié.

La séparation des bases de données réelles dépend à nouveau de la charge de travail et des capacités du sous-système sous-jacent IO - un degré de séparation plus élevé peut être nécessaire pour stocker des éléments sur des matrices de raid individuels que sur un SAN, par exemple.

TEMPDB est un cas particulier tout seul, comme il est généralement une base de données fortement chargée et doit être stockée séparément des autres bases de données. Les bases de données système ne doivent pas être largement utilisées et peuvent être placées n'importe où aussi longtemps que la redondance.

Voici un lien vers un livre blanc J'ai aidé à écrire qui devrait vous aider: Conception de stockage de base de données physique . Assurez-vous également que votre sous-système IO peut gérer la charge de travail anticipée - voir ce livre blanc: Prédéploiement d'E/S Meilleures pratiques . Enfin, assurez-vous d'utiliser la taille de la bande RAID correcte (généralement 64k ou plus sur les systèmes plus récents), la taille d'une unité d'allocation NTFS correcte (généralement 64K) et celle des systèmes avant Windows Server 2008, vous définissez correctement la partition de disque correctement. . Pour info sur ceux-ci, et des pointeurs vers des informations supplémentaires sur eux et pourquoi vous devez les configurer de cette façon, voir ce blog Post: Les décalages de votre partition de disque, la taille des rayures RAID et les unités d'allocation NTFS correctement? .

Ligne Bototm: Connaissez votre charge de travail et vos capacités de sous-système IO, puis de mettre en œuvre en conséquence.

J'espère que ça t'aide.

PS En ce qui concerne TEMPDB, c'est une grosse canette de vers sur la manière dont vous devez la configurer et il y a toutes sortes d'informations contradictoires. J'ai écrit un article de blog complet sur la configuration des fichiers de données tempdb à des idées fausses autour de TF 1118 .

11
Paul Randal

La réponse courte pour les serveurs que j'ai installés a toujours été

Journaux sur des disques physiques distincts, RAID 1 ou 10 (Striping + Miroir)

Base de données sur ses propres disques, en fonction des besoins de performance habituellement RAID5

Beaucoup de cache sur le ou les contrôleurs RAID

Collez de préférence votre système d'exploitation et de votre page Windows sur un tableau séparé à nouveau, généralement un miroir (RAID 1). Cela empêche toutes les opérations d'écriture séparées si de fortes performances ne font pas tout gâcher.

Ce que j'ai vécu dans le passé, c'est que la base de données écrit + journal écrit + les écrivies de pageFile se déroulera dans une matrice RAID5 et des performances iront à Heck dans un sac à main. Le problème est que votre performance ira bien dans les tests, Dev, etc. Mais lorsque vous entrez dans la production et l'utilisation de Skyrockets, ce problème apparaîtra "hors bleu" et les plaintes des utilisateurs Skyrocket.

1
hellimat

Il y a beaucoup mieux les gars de MSSQL ici que moi mais en termes généraux, je suggère ce qui suit;

OS et code sur C: - Cela devrait être les disques locaux, devraient être une paire de tableau RAID1 - nous utilisons 2 x 2,5 pouces SAS 146 Go de 10krpm disques pour cela, mais vous pouvez utiliser 2 x SATA 7.2 DISQUES. Les données doivent être sur un raid assez rapide (10krpm ou meilleur) RAID 1/10, 5/50/6/60 de quelle que soit la taille dont vous avez besoin - nous tenons la nôtre sur fc SAN LUNS , généralement sur un groupe de disques "de niveau 2"/10krpm. Les journaux doivent être sur une paire de maquette RAID 1 RAID (10 Go) séparée (10 Go ou moins?) - Nous tenons la nôtre sur FC SAN = LUNS, généralement sur un très petit groupe de disques de "Tier1 '/ 15KRPM ou sur un groupe" Tier0 "/ SSD.

De toute façon, vous voulez chaque morceau de ceux-ci sur des broches/tableaux séparés pour la performance - bien sûr, il fonctionnera tous sur un seul disque, mais je suppose que vous recherchez une balance de performance et de coût.

Nous stockons notre maître/TEMPDB avec nos bases de données régulières, mais vous pouvez la rompre dans une matrice de données distincte.

J'espère que cela t'aides.

1
Chopper3