web-dev-qa-db-fra.com

Comment identifier physiquement un seul lecteur dans une matrice RAID?

J'ai une baie de disque externe avec 4 disques eSATA. Mon système dispose d'une carte eSATA à 4 ports, ainsi que de deux lecteurs RAID1 internes. Les lecteurs externes sont en paires logicielles RAID1 sous la forme /dev/md0 et /dev/md1. Les deux ont été configurés en tant que volumes physiques LVM pour créer mon groupe de volumes storagevg LVM. Récemment, un seul disque a été mis hors ligne (câbles suspects), mais il ne semble pas être un bon moyen d'identifier physiquement le disque que je dois vérifier, d'autant plus que l'ordre d'initialisation n'est pas le même entre les bottes. Comment trouver le disque qui a besoin d'attention?

16
Kees Cook

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 lecteur est dans une matrice RAID mdadm. Utilitaire de disque peut pénétrer dans la matrice pour accéder au disque brut.

Disk Utility

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

Le contraire est également vrai en ce que si un disque meurt, je dois juste trouver quels disques apparaissent et je peux les éliminer jusqu’à ce que je sache quel numéro de série est manquant.

Edit: J'essaie d'améliorer mon bash-fu, j'ai donc écrit cette version en ligne de commande pour vous donner une liste des numéros de série des disques en cours sur votre ordinateur. fdisk peut supprimer des erreurs, mais cela ne gêne 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 le réduire en une seule ligne si vous en avez besoin - je l'ai cassé pour plus de lisibilité)

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

15
Oli

Si vous ne parvenez pas à faire correspondre le numéro de série du lecteur ou l'indication du port avec l'emplacement géographique de vos disques, vous pouvez exécuter cat /dev/sdz >/dev/null (où sdz est le lecteur en panne) et localiser le lecteur à l'aide de son voyant (ou à l'oreille si vous n'êtes pas bruyant). salle des serveurs). Si le disque ne s'allume même pas, cela devrait suffire à dire de quel disque il s'agit. Assurez-vous de placer une étiquette visible sur les disques pour la prochaine fois.

5
Gilles

Les informations fournies par udisks (sur la ligne de commande ou dans GNOME Disk Utility) incluent le numéro de série du disque. Sur les disques que j'ai, le numéro de série est imprimé sur les faces supérieure et avant (celle de l'autre côté de celle contenant les connecteurs), à la fois sous forme de chiffres et avec un code à barres. Malheureusement, la plupart des boîtiers de PC rendent impossible la lecture de ces publications sans extraire 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 le disque avec un numéro de série qui n'est pas répertorié ...

3
JanC

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

Mais avec le logiciel RAID, chaque disque contient des métadonnées uniques. Vous pouvez le lire à partir de chaque lecteur à l'aide de la commande mdadm -E /dev/sda1 pour chaque lecteur du groupe, 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 lancerais ceci sur chaque lecteur en ligne, en enregistrant le numéro mineur pour chaque lecteur. Puis, avec un Live CD prenant en charge MD, le programme de récupération de disque système en est un bon, avec un seul lecteur à la fois connecté et en exécutant cette commande pour rechercher le coupable. Ce n'est probablement pas aussi simple que vous le souhaitez, mais cela devrait fonctionner.

2
3dinfluence

lsscsi

 $ lsscsi -l 
 [0: 0: 0: 0] disque ATA Toshiba THNS128G AGLA /dev/sda
 state = en cours d'exécution queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 délai d'attente = 30 
 [1: 0: 0: 0] cd/dvd DVDRAM HL-DT-ST GT30N LT09 /dev/sr0
 State = exécution de queue_depth = 1 niveau_scsi = 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 n'ayez pas de cage de disque Nice, vous devrez explorer en profondeur par numéro de série. Sg_inq devrait vous aider.

Si vous avez une bonne cage de disque, vous devriez pouvoir activer la balise de disque pour aider à identifier le membre défectueux.

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

1
ppetraki

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

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
1
BVBMedia

C'est simple. Ceci 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/md

0
Andrea Grandi

Étant donné que votre baie de disques ne possède pas la technologie SES et que le voyant d'activité du disque n'est pas directement pilotable, par exemple. vous avez besoin du support du firmware pour cela. La seule autre chose que vous puissiez faire est de laisser les entrées-sorties du mieux que vous pouvez, puis d'utiliser quelque chose comme dd ou sg_read sur les membres eux-mêmes pour faire défiler un modèle de lecture le disque qui crée un motif de clignotement identifiable de manière unique en utilisant le voyant d'activité, le phare d'un pauvre, si vous voulez. C'est vraiment votre seule alternative, à moins que le tableau ne soit une option.

Ce type de facilité de maintenance différencie les baies de stockage externes. Etant donné que vous n'avez pas planifié à l'avance en écrivant 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 enfin, vivez et apprenez.

0
ppetraki