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?
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.
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;)
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.
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é ...
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.
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.
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
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
É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.