none
10 disques en DAS (RAID 10/ RAID 5 ...) RRS feed

  • Discussion générale

  • Bonjour à tous,

    Je sais qu'il est généralement conseillé de séparer d'un coté les fichiers de log et de l'autre la base.

    Je sais que la base temporaire a un rôle essentiel dans sql serveur.

    Cependant je me pose la question de savoir dans le cas d'un système avec 10 disques en DAS, est-il plus pertinent de faire un gros RAID 10 qui est capable d'envoyer un gros volume IO en lecture comme en écriture ou

    (comme c'est le cas actuellement) de privilégier

    un raid 1 pour le système et la base temp
    un raid 1 pour les log
    et 2 Raid 5 de 3 disques chacun pour la base.

    Ma base fait environ 50Go je génère environ 1 giga de log par jour.

    En faite le fond de ma question est : pourquoi dans les bonnes pratiques il est conseillé de faire plus de volumes moins performants plutôt que de faire un système fournissant beaucoup de performances de manière partagée entre les log la base temp et la base.

    Merci à tous

    J.D

    mercredi 20 mars 2013 07:59

Toutes les réponses

  • Bonjour

    Votre RAID10 ne vous proposera guerre plus de 1500 IOPS. On est pas encore au niveau d'envoyer du lourd.
    Pour répondre à votre question, la problématique se situe davanage sur la latence. Si votre RAID10 sur l'ensemble de votre enclosure est découpé en un ou N volumes, alors, logiquement un disque physique (au sens spindle) va stockers ET des données ET des journaux de transaction.
    Donc, statistiquemnt, vous avez de bonnes chances, vu le nombre restreint de disques de "tomber" sur un même disque au mêm emoment pour vos données et votre journal.

    D'où une file d'attente some toute logique sur le disque, qui entrainera de la latence.

    Pour faitre un parallèle, imaginez que votre baie DAS est un SAN. Avec les donnes d'un Exchange, d'un SQL Server, de serveurs de fichiers et autre services, là, cela vous parait évident que des accès concurrents vont devoir se partager les maigres ressrouces disques.

    Est-ce que cela répond à votre question ?

    Cdlt

    Christophe


    Christophe LAPORTE - Independent Consultant & Trainer - SQL Server MVP-MCM

    mercredi 10 avril 2013 13:44
  • Je suis d'accord avec Christophe, ce qu'il faut regarder c'est la latence. Cela dit, je pense que le concept de séparation vs agrégation est à évaluer. Je suis pour le fait d'aligner 30 disques pour mettre données + indexes + tempdb plutôt que de faire 3 volumes de 10 disques et de cloisonner, parce qu'on y gagne sur le lissage des performances. Le journal de transaction est un cas à part, mais il faut bien faire attention quand on parle de séparation entre données et journaux. Il a été démontré que si on ne place qu'un seul journal de transaction sur le volume séparé, alors on gagne parce les IO séquentielles sont isolées du reste, mais si on y place tous les journaux de transactions, du séquentiel avec du séquentiel ça peut être pire encore que de l'aléatoire avec du séquentiel (voir la présentation de Thomas Kejser ancien de sqlcat sur le sujet http://sqlbits.com/(S(fueva455qrdns245thsoiovo))/Sessions/Event5/Designing_I_O_systems_for_SQL_Server).

    Bref, tout ça devrait se mesurer avant.

    Et pour le RAID 5 il faut évaluer l'impact des écritures. Comment le contrôleur IO gère-t-il la chose (write-coalesce).

    Je sais que c'est difficile de tester tout ça une fois que le projet est parti parce qu'on met dans 99% des cas la charrue avant les boeufs et qu'on pense stockage en pensant volumétrie, alors qu'on devrait penser stockage en termes de combien d'IOPS je veux tirer de mon système.

    A+


    David B.

    mardi 23 avril 2013 12:58
  • Bonjour à tous merci pour vos retours.

    J'ai besoin d'un peu plus de d'infos pour tout bien comprendre.

    Sur un RAID10 de 10 disques avec des block de 64k je parts du principe que si je fais 1 accès à un block alors la latence sera celle du disque sur lequel se trouve le bloc.
    Si je fais 2 accès à 2 blocs, 2 possibilités soit les 2 sont sur le même disques soit les 2 sont sur 2 disques différents.
    Cela me donne une formule de la forme latence Totale =(1+1/5)latence de 1 disque (en considérant que ma carte raid utilise toujours le même disque du raid1.

    Ce raisonnement est -il juste ?

    Dans mon cas, ma base est de taille assez réduite (60Go sur un serveur ayant 32Go de Ram). Je génère environ 3Go de logs par jour (sans compter la réorganisation des index).

    En prenant en compte vos précieux conseils concernant le problème des accès séquentiels cette configuration vous semble-t-elle intelligente ?

    Raid 10 6 disques Log + système et base temp
    Raid 5 4 disques base

    ou faut-il mieux

    Raid 1 systeme + base temp
    Raid 1 log

    2 x Raid 5 base

    ou encore

    Raid 10 4 disques système + base temp

    Raid 10  4 disques logs
    Raid 1 base

    Encore merci

    Cordialement
    J.D

    jeudi 25 avril 2013 12:36
  • Le gros de l'activité transactionnelle est sur une base ? Si c'est le cas , je ferais un RAID1 pour le système, un RAID 10 sur 6 disques pour les données +tempdb et un RAID 1 pour le journal de la base en question + éventuellement les backups, ou mettre les backups sur un share UNC.


    David B.

    vendredi 26 avril 2013 07:20
  • Oui il n'y a qu'une seule base.

    vendredi 26 avril 2013 07:48
  • Dans ce cas il y a un réel intérêt à séparer données et journaux.

    David B.

    vendredi 26 avril 2013 08:07