Besoin de trouver les disques en miroir dans la matrice RAID-10

8

J'ai un serveur multimédia domestique fonctionnant sur openSUSE 12.2. J'utilise huit disques de 2 To dans une configuration RAID-10. J'ai délibérément acheté deux types de disques différents: quatre Seagate Barracuda Green et quatre Western Digital Red. Mon objectif est de configurer le RAID de telle sorte que chaque paire en miroir au sein de la matrice soit constituée de disques différents (c'est-à-dire un disque Seagate et un disque WD). Le partitionneur YaST2 ne m'a malheureusement pas donné ce niveau de choix dans la structure du tableau, alors maintenant j'essaie de savoir à quoi ressemble la structure RAID10 par défaut.

Je sais ce qui suit:

  • sdc, sdd, sde et sdf sont tous des disques WD
  • sdg, sdh, sdi et sdj sont tous des disques Seagate

J'ai choisi la disposition par défaut «n2» lors de la création du RAID. Ma supposition basée sur les informations de ces deux sources est que les lecteurs adjacents sont en miroir (c'est-à-dire, sdc == sdd, sde == sdf, etc.), mais je veux savoir avec certitude:

Voici la sortie de 'mdadm --detail / dev / md0':

/dev/md0:
        Version : 1.0
  Creation Time : Sat Mar 16 12:55:11 2013
     Raid Level : raid10
     Array Size : 7814045696 (7452.05 GiB 8001.58 GB)
  Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar 16 13:09:37 2013
          State : active, resyncing
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 2048K

  Resync Status : 1% complete

           Name : aldaris:0  (local to host aldaris)
           UUID : c6cc3943:97394500:b77d44cd:f02ed876
         Events : 149

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      113        5      active sync   /dev/sdh1
       6       8      129        6      active sync   /dev/sdi1
       7       8      145        7      active sync   /dev/sdj1

Et voici le contenu de / proc / mdstat:

Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

unused devices: <none>

Mes questions sont donc:

  1. Comment savoir quels disques sont des miroirs les uns des autres?
  2. Existe-t-il un moyen de changer cela, ou dois-je simplement permuter les fils (car cela permutera les lettres de lecteur), puis reconstruire le RAID?

Merci d'avance.


Remarque tangentielle, pour quiconque veut connaître mon raisonnement pour le faire: les disques du même modèle et du même lot, fonctionnant sous des charges d'utilisation, une disponibilité et une température similaires ont peu de variation systématique, et les différences de temps de défaillance entre les disques seront principalement motivées par variation aléatoire du processus de fabrication. Cela augmente le risque que plusieurs disques meurent à la fois. En achetant des disques non seulement de différents lots mais de fabricants complètement différents, j'introduis des variations systématiques dans ma baie, influençant ainsi les disques qui tomberont en panne à des moments similaires.

Communauté
la source
1
Les serveurs multimédia domestiques sont hors sujet pour ServerFault. Cela dit, vous mettez clairement un peu d' efforts et je vais le signaler pour la migration vers unix.SE .
Andrew B
@AndrewB, pourquoi ça?
poige
C'est une question très intéressante et le raisonnement derrière est si bien compris. Vous n'avez pas besoin de changer de fils car il suffit de spécifier le disque lors de la (re) création de RAID est beaucoup plus simple.
poige
@poige Cela tombe sous n'importe quoi dans un cadre domestique . J'ai essayé de préciser que j'ai considéré la question comme suffisamment étudiée malgré cela.
Andrew B
Si je devais spéculer sauvagement, alors je suppose que vous pourriez regarder la RaidDevicecolonne. Cela peut être aussi simple que (0,1), (2,3), (4,5), (6,7). Cela me ferait supposer que vous devez aligner RaidDevice comme WD / Sea / WD / Sea / etc ... Mais je ne suis pas sûr à 100% de cela.
Zoredache

Réponses:

5

Les versions récentes de mdadmmontrent ce droit dans les détails du tableau. Exemple demdadm v3.3 - 3rd September 2013

 $ mdadm --detail /dev/md1

/dev/md1:
        Version : 1.1
  Creation Time : Tue Aug 23 11:45:41 2016
     Raid Level : raid10
     Array Size : 3864803328 (3685.76 GiB 3957.56 GB)
  Used Dev Size : 1932401664 (1842.88 GiB 1978.78 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 09:39:28 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : px4-300r-THXOAP:1  (local to host px4-300r-THXOAP)
           UUID : 5ee06437:83dfdb64:808feaa2:5d57b1e6
         Events : 620

    Number   Major   Minor   RaidDevice State
       4       8       50        0      active sync set-A   /dev/sdd2
       1       8       34        1      active sync set-B   /dev/sdc2
       2       8       18        2      active sync set-A   /dev/sdb2
       3       8        2        3      active sync set-B   /dev/sda2

Notez la dénotation set-Aou set-B. Dans le cas ci-dessus, sddet sdbpeuvent échouer ensemble sans perte de données. Il est possible que ces données ne soient pas disponibles pendant la reconstruction de la baie.

parasietje
la source
2

J'ai eu le même problème et après avoir googlé un moment, je n'ai pas trouvé de réponse fiable. Après y avoir réfléchi, j'ai pensé que les miroirs avaient les mêmes données et nous pourrions donc en comparer une partie.

REMARQUE: SOYEZ PRUDENT, SI VOUS AVEZ PLUS DE 2 LECTEURS AVEC LE MÊME CHECKSUM QUE VOUS COMPARIEZ PROBABLEMENT L'ESPACE DISQUE VIDE, CHOISISSEZ UN AUTRE DÉCALAGE (option de saut).

Avec ces quelques commandes, vous pouvez le comprendre:

for disk in sda sdb sdc sdd
do
  echo -n "$disk = ";
  dd if=/dev/$disk skip=1M bs=1M count=1 2>/dev/null | md5sum;
done

Cela produira quelque chose comme:

sda = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdb = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdc = e02f7d61ad3791bd691da5b7516928a5  -
sdd = e02f7d61ad3791bd691da5b7516928a5  -

Nous savons maintenant que sda ​​/ sdb est un miroir et sdc / sdd un autre. Un de chacun doit rester pour éviter la perte de données.

La commande "dd" lit une fois (count = 1) un mégaoctet (bs = 1M) à un mégaoctet décalé depuis le début du disque (sauter = 1M). Ne sautez pas = 0, car le début du disque contient des informations différentes. Les données commencent généralement après 1 Mo.

Pascal
la source
dd if=/dev/$disk skip=1M bs=1M count=1n'a pas fonctionné pour moi. dd (coreutils) 8.23de Debian 8 (Jessie) ne prend pas en charge skipavec une unité. Au lieu de cela, j'ai utilisé skip=11est relatif à bs. Peut-être une faute de frappe?
Daniel Böhmer
FYI Si vous voyez la somme MD5, d41d8cd98f00b204e9800998ecf8427evotre ddappel échoue. C'est le hachage de la chaîne vide :-)
Daniel Böhmer
0

Je pense que vous parlez d'un vrai réseau RAID 10 (1 + 0 miroir rayé)

sdc/sdg = md0 raid1 2TB |
sdd/sdh = md1 raid1 2TB |_  md4 raid0 8TB
sde/sdi = md2 raid1 2TB |
sdf/sdj = md3 raid1 2TB |

1. Créez vos 4 tableaux raid1:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/{sdc,sdg}
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/{sdd,sdh}
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/{sde,sdi}
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/{sdf,sdj}

En ce moment, vous avez 4 tableaux de raid 1 avec 2 To d'espace sur chacun,

2. Assemblons-les!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md{0,1,2,3}

Les options --run sont utiles car certains composants sont actifs dans un autre tableau

3. Adaptez votre fichier mdadm.conf

Vous devrez peut-être (en fonction de votre configuration) adapter ce fichier pour refléter les changements concernant notre nouveau tableau (/ dev / md4).

4. Profitez .. de votre nouveau tableau DIY raid10!

maxxvw
la source
Non, il parle de la personnalité mdadm raid10 de linux. Je crois que votre réponse ne s'applique pas (bien que, pour être honnête, cela donne au PO une alternative pour réaliser ce qu'il doit faire)
GnP
Les performances et les fonctionnalités prises en charge diffèrent également.
Joachim Wagner
0

Vous pouvez toujours vérifier quels sont les miroirs en comparant grossièrement les données, par exemple:

# dd if=/dev/sda1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdb1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -
# dd if=/dev/sdg1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdf1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -

(si vous n'obtenez aucune correspondance, vous devrez peut-être augmenter skip = , car vous ne sautez pas les superblocs RAID; et si vous obtenez la même somme md5 pour plus de 2 disques, vous devrez peut-être augmenter count = , car vous je suis probablement en train de lire et de résumer des zéros - pour éviter que vous ne mettiez d'abord des données sur le raid, sinon elles pourraient être pleines de zéros)

En ce qui concerne l'échange de fils, vous n'avez pas besoin de le faire - mdadm doit créer un raid avec des périphériques comme spécifié sur la ligne de commande dans mdadm --create , vous devez donc simplement spécifier les lecteurs dans un ordre différent sur la ligne de commande.

Matija Nalis
la source
0

Exécutez «mdadm --examine device» sur chaque périphérique composant (par exemple / dev / sda1, / dev / sdb1, etc.). Les informations qui y figurent devraient vous aider à déterminer quels composants sont le miroir de chacun.

gémir
la source