Comment identifier physiquement un seul disque dans une matrice RAID?

16

J'ai une baie de lecteur externe avec 4 disques eSATA. Mon système possède une carte eSATA à 4 ports, ainsi qu'une paire de disques RAID1 matériels internes. Les disques externes sont en paires logicielles RAID1 comme /dev/md0et /dev/md1. Les deux ont été configurés en tant que volumes physiques LVM pour créer mon storagevggroupe de volumes LVM. Récemment, un seul lecteur s'est déconnecté (je soupçonne des câbles), mais il ne semble pas y avoir de bon moyen d'identifier physiquement le lecteur que je dois vérifier, d'autant plus que l'ordre d'initialisation n'est pas le même entre les démarrages. Comment puis-je trouver le disque nécessitant une attention?

Kees Cook
la source

Réponses:

15

L'Utilitaire de disque (assis dans Système -> Administration) vous donnera les numéros de série de tous vos disques.

Voici ce que je vois (regardez en haut à droite pour la série). Vous remarquerez que ce disque est dans une matrice RAID mdadm. L'Utilitaire de disque peut pénétrer dans la baie pour accéder au disque brut.

Utilitaire de disque

J'ai 6 du même modèle de disque dans mon PC, j'ai donc dessiné un petit diagramme montrant leur position dans le boîtier et le numéro de série afin de pouvoir les localiser rapidement en série en cas d'urgence.

L'inverse est également vrai en ce que si un disque meurt, j'ai juste besoin de trouver quels disques apparaissent et je peux les éliminer jusqu'à ce que je sache quelle série est manquante.

Edit: J'essaie d'améliorer mon bash-fu, j'ai donc écrit cette version en ligne de commande pour vous donner simplement une liste des numéros de série du disque qui sont actuels sur votre machine. fdiskpeut supprimer certaines erreurs, mais cela n'entache pas la liste:

for disk in `sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
    sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done

(Et vous pouvez l'effriter en une seule ligne si vous en avez besoin - je l'ai divisé pour plus de lisibilité)

Edit 2: ls /dev/disk/by-id/ est un peu plus facile;)

Oli
la source
L'utilisation de numéros de série peut très bien fonctionner si on les a déjà enregistrés en externe. Dans le cas d'un système qui ne peut pas être mis hors tension mais qui a des lecteurs remplaçables à chaud, ce serait bien de pouvoir localiser le lecteur défectueux via des LED.
Kees Cook
Vous remarquerez également qu'il y a un identifiant "Emplacement" dans l'Utilitaire de disque, montrant quel port de l'adaptateur à l'hôte le lecteur est branché. Vous pourriez être en mesure de deviner quels ports sont lesquels sans débrancher les lecteurs mais je ne peux pas spéculer sur cela fonctionne réellement.
Oli
Dans votre cas, l'arrêt de la baie de disques pendant 5 minutes, le débranchement de chaque disque et l'obtention de la série ne devraient pas être trop déraisonnables et ne devraient pas nécessiter la mise hors tension de la machine ... Mais le RAID devra être retiré à moins que vous ne le souhaitiez il reconstruit.
Oli
"Emplacement" n'est pas toujours utile, par exemple dans le cas de PATA, il y a souvent 2 disques sur 1 port, et si vos disques sont tous les deux réglés sur "AUTO" pour la négociation maître / esclave, il n'y a probablement aucun moyen de savoir lequel ? Cela pourrait bien fonctionner pour SATA
janvier 2010
1
Les disques PATA existent-ils toujours? Je n'ai été que SATA depuis ... Eh bien, depuis qu'un disque de 112gig était considéré comme gros. Le problème de la recherche du port ne compte pas vraiment ici car nous parlons d'une baie de lecteur externe. Mais sûr. Sur les cartes mères grand public, vous aurez probablement besoin de consulter le manuel pour avoir une idée de quel port est quoi ... Même alors, le logiciel peut leur attribuer un ordre différent.
Oli
5

Si vous ne parvenez pas à faire correspondre le numéro de série du lecteur ou l'indication du port avec les emplacements spatiaux de vos disques, vous pouvez exécuter cat /dev/sdz >/dev/null(où se sdztrouve le lecteur défectueux) et localiser le lecteur par sa LED (ou à l'oreille si vous n'êtes pas dans une salle de serveurs bruyante). ). Si le lecteur ne démarre même pas, cela devrait suffire pour dire lequel il est. Assurez-vous de mettre une étiquette visible sur les disques pour la prochaine fois.

Gilles 'SO- arrête d'être méchant'
la source
c'est du pur génie car il a pour effet secondaire de laisser la lumière allumée, tandis que tous les autres clignotent
HDave
3

Les informations udisksfournies (sur la ligne de commande ou dans l' utilitaire de disque GNOME ) incluent le numéro de série du disque. Sur les disques que j'ai, le numéro de série est imprimé sur le côté supérieur et sur le côté avant (celui de l'autre côté de celui qui contient les connecteurs), à la fois sous forme de chiffres et avec un code-barres. Malheureusement, la plupart des boîtiers PC ne permettent pas de lire ces publications en série sans retirer le disque ...

Vous pouvez également trouver les numéros de série dans /dev/disk/by-id/.

Comme votre disque est hors ligne, je suppose qu'il n'est pas "vu" par le noyau actuellement? Dans ce cas, vous devrez peut-être procéder par élimination: vous voulez que le disque avec un numéro de série qui ne figure pas dans la liste ...

JanC
la source
2

Avec le raid logiciel, c'est un problème courant. Les raids matériels ont généralement une fonction qui vous permet de faire clignoter la LED associée à un lecteur, en supposant que votre matériel le prend en charge.

Mais avec le RAID logiciel, chaque disque possède des métadonnées uniques. Que vous pouvez le lire à partir de chaque lecteur à l'aide de la commande mdadm -E /dev/sda1pour chaque lecteur de la matrice, en modifiant les périphériques en fonction de votre environnement. Donc, si vous avez une situation où un lecteur vous pose des problèmes et est actuellement hors ligne. Je l'exécuterais sur chaque lecteur en ligne, en enregistrant le numéro mineur pour chaque lecteur. Ensuite, en utilisant un Live CD qui prend en charge MD, le CD de secours du système est bon, avec un seul lecteur à la fois connecté et exécutant cette commande pour trouver le coupable. Ce n'est probablement pas aussi simple que vous le souhaitez, mais cela devrait fonctionner.

3dinfluence
la source
Peut-être que vous pouvez obtenir des numéros de série via Linux qui sont également imprimés sur le disque physique?
erjiang
1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] disque ATA TOSHIBA THNS128G AGLA / dev / sda
  état = exécution queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 timeout = 30
[1: 0: 0: 0] cd / dvd HL-DT-ST DVDRAM GT30N LT09 / dev / sr0
  état = exécution queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30

si le disque n'est pas en cours d'exécution, c'est un très bon signe. Donc / proc / mdstat vous dira quel membre a échoué. En supposant que vous ne disposiez pas d'une jolie cage de lecteur, vous devrez explorer le numéro de série, sg_inq devrait vous aider.

Si vous disposez d'une bonne cage disque, vous devriez être en mesure d'activer la balise de disque pour aider à identifier le membre défectueux.

http://www.mail-archive.com/[email protected]/msg07307.html

ppetraki
la source
1

Pour obtenir les codes de série de tous les disques durs exécutés:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   `-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  `-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  `-sdd1          0    1  0 part
BVBMedia
la source
0

C'est simple. C'est par exemple la sortie sur mon PC:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

comme vous pouvez le voir, j'ai / dev / sdh1 et / dev / sdg1 rejoint / dev / md0

Andrea Grandi
la source
1
D'accord, mais cela ne me dit rien sur leur emplacement physique dans le boîtier du lecteur externe.
Kees Cook
0

Étant donné que votre baie n'a pas d'intelligence SES et que le voyant d'activité du disque n'est pas directement pilotable, par exemple, vous avez besoin du support du micrologiciel pour cela. La seule autre chose que vous pouvez faire est de suspendre les E / S du mieux que vous pouvez, puis d'utiliser quelque chose comme ddou sg_readsur les membres eux-mêmes pour accélérer un modèle de lectures sur le disque qui crée un modèle de clignotement identifiable de manière unique à l'aide de la LED d'activité, une mauvaise balise de l'homme si vous voulez. C'est vraiment votre seule alternative, à moins que la réduction du tableau soit une option.

Ce type de facilité de maintenance est ce qui différencie les baies de stockage externes. Comme vous n'avez pas planifié à l'avance en griffonnant les numéros de série et leurs positions, vous ne pouvez pas faire la différence simple pour identifier le lecteur défectueux. C'est le prix que vous payez pour la solution que vous avez déployée, que vous vous en rendiez compte ou non, mais bon, vivez et apprenez.

ppetraki
la source