Come posso identificare fisicamente una singola unità in un array RAID?


16

Ho un alloggiamento per unità esterna con 4 dischi eSATA. Il mio sistema ha una scheda eSATA a 4 porte e una coppia di unità RAID1 hardware interne. Le unità esterne sono in coppie di software RAID1 come /dev/md0e /dev/md1. Entrambi sono stati configurati come volumi fisici LVM per creare il mio storagevggruppo di volumi LVM. Di recente, una singola unità è andata offline (sospetto che i cavi), ma non sembra esserci un buon modo per identificare fisicamente quale unità devo controllare, soprattutto perché l'ordine di inizializzazione non è lo stesso tra gli stivali. Come posso trovare attenzione sul disco?

Risposte:


15

Utility Disco (disponibile in Sistema -> Amministrazione) ti fornirà i numeri di serie per tutti i tuoi dischi.

Ecco quello che vedo (guarda in alto a destra per il seriale). Noterai che questa unità si trova all'interno di un array RAID mdadm. Utility Disco può penetrare nell'array per l'accesso al disco non elaborato.

Utilità disco

Ho 6 dello stesso modello di disco nel mio PC, quindi ho disegnato un piccolo diagramma che mostra la loro posizione nella custodia e il numero di serie in modo da poterli localizzare rapidamente sul seriale in caso di emergenza.

È vero anche il contrario in quanto se un disco si spegne, devo solo trovare quali dischi vengono visualizzati e posso eliminarli fino a quando non so quale seriale manca.

Modifica: sto cercando di migliorare il mio bash-fu, quindi ho scritto questa versione della riga di comando per darvi un elenco dei numeri di serie del disco che sono correnti nella vostra macchina. fdiskpotrebbe eliminare alcuni errori ma ciò non altera l'elenco:

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

(E puoi sbriciolarlo in una riga se necessario - L'ho rotto per leggibilità)

Modifica 2: ls /dev/disk/by-id/ è un po 'più semplice;)


L'uso dei numeri di serie può funzionare bene se uno li ha già registrati esternamente. Nel caso di un sistema che non può essere spento ma dotato di unità hot-swap, sarebbe bello poter individuare l'unità guasta tramite LED.
Kees Cook,

Noterai anche che c'è un identificatore "Posizione" in Utility Disco, che mostra quale porta dell'adattatore host è collegata all'unità. Potresti essere in grado di capire quali sono le porte senza scollegare le unità ma non posso speculare a questo funziona davvero.
Oli

Nel tuo caso, arrestare l'array raid per 5 minuti, scollegare ciascuna unità e ottenere il seriale non dovrebbe essere troppo irragionevole e non dovrebbe richiedere lo spegnimento della macchina ... Ma il RAID dovrebbe essere rimosso a meno che tu non voglia ricostruendo.
Oli

"Posizione" non è sempre utile, ad esempio nel caso di PATA ci sono spesso 2 dischi su 1 porta e se i dischi sono entrambi impostati su "AUTO" per la negoziazione master / slave, probabilmente non c'è modo di scoprire quale sia ? Potrebbe funzionare anche per SATA
JanC

1
Esistono ancora unità PATA? Sono stato SATA solo da ... Beh, dato che un disco da 112gig era considerato grande. Il problema di trovare la porta non conta davvero qui perché stiamo parlando di un vano unità esterno. Ma certo. Sulle schede madri consumer, probabilmente avrai bisogno di consultare il manuale per avere un'idea di quale sia la porta ... Anche in questo caso, il software potrebbe attribuire loro un ordine diverso.
Oli

5

Se hai problemi ad abbinare il numero seriale dell'unità o l'indicazione della porta con le posizioni spaziali dei tuoi dischi, puoi correre cat /dev/sdz >/dev/null(dov'è sdzl'unità guasta) e localizzare l'unità tramite il suo LED (o ad orecchio se non sei in una stanza del server rumorosa ). Se l'unità non si accende nemmeno, dovrebbe essere sufficiente per dire quale è. Assicurati di mettere un'etichetta visibile sui dischi per la prossima volta.


questo è puro genio in quanto ha l'effetto collaterale di lasciare la luce accesa, mentre tutti gli altri lampeggiano
HDave

3

Le informazioni udisksfornite (sulla riga di comando o nell'utilità disco GNOME ) includono il numero seriale del disco. Sui dischi che ho, il numero di serie è stampato sul lato superiore e sul lato anteriore (quello sull'altro lato di quello che contiene i connettori), sia come numeri che con un codice a barre. Sfortunatamente, la maggior parte delle custodie per PC rende impossibile leggere quei serial senza estrarre il disco ...

Puoi anche trovare i numeri di serie in /dev/disk/by-id/.

Dato che il tuo disco è off-line, suppongo che al momento non sia "visto" dal kernel? In tal caso, potresti dover procedere per eliminazione: vuoi il disco con un numero seriale non elencato ...


2

Con il software raid questo è un problema comune. I raid hardware tendono ad avere una funzione che ti consente di far lampeggiare il LED associato a un'unità, supponendo che l'hardware lo supporti.

Ma con il software RAID ogni unità ha alcuni metadati unici. Che puoi leggere da ogni unità usando il comando mdadm -E /dev/sda1per ogni unità dell'array, modificando i dispositivi in ​​modo che corrispondano al tuo ambiente. Quindi, se hai una situazione in cui un'unità ti sta dando problemi ed è attualmente offline. Vorrei eseguire questo su ogni unità che è online, registrando il numero minore per ogni unità. Quindi, usando un Live CD che supporta MD, il cd di ripristino del sistema è buono, con una sola unità alla volta connessa ed eseguendo questo comando per trovare il colpevole. Questo probabilmente non è così semplice come vorresti, ma dovrebbe funzionare.


Forse potrebbero esserci dei numeri seriali che puoi ottenere tramite Linux che sono anche stampati sull'unità fisica?
erjiang,

1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] disco ATA TOSHIBA THNS128G AGLA / dev / sda
  stato = esecuzione 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
  stato = esecuzione queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30

se il disco non è in esecuzione, è un buon segno. Quindi / proc / mdstat ti dirà quale membro ha fallito. Supponendo che non si disponga di una gabbia per unità piacevole, è necessario eseguire il drill down per numero di serie, sg_inq dovrebbe essere di aiuto.

Se si dispone di una buona gabbia dell'unità, si dovrebbe essere in grado di abilitare il beacon del disco per aiutare a identificare il membro difettoso.

http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg07307.html


1

Per ottenere i codici seriali di tutti i dischi rigidi eseguiti:

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

0

È semplice. Questo ad esempio è l'output sul mio 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>

come puoi vedere ho / dev / sdh1 e / dev / sdg1 uniti in / dev / md0


1
Giusto, ma questo non mi dice nulla su dove si trovano fisicamente nel contenitore di unità esterne.
Kees Cook,

0

Poiché l'array non ha SES intelligente e il LED di attività del disco non è direttamente pilotabile, ad esempio è necessario il supporto del firmware. L'unica altra cosa che puoi fare è sospendere l'I / O meglio che puoi e quindi utilizzare qualcosa di simile ddo sg_readsui membri stessi per avanzare sul disco un modello di letture che crea un modello di lampeggiamento identificabile in modo univoco utilizzando il LED di attività, un valore scarso il faro dell'uomo se vuoi. È davvero l'unica alternativa, a meno che non sia possibile ridurre l'array.

Questo tipo di manutenzione è ciò che differenzia gli array di archiviazione esterni. Dal momento che non hai pianificato in anticipo scrivendo i numeri di serie e le loro posizioni, non puoi fare la semplice differenza impostata per identificare l'unità guasta. È il prezzo che paghi per la soluzione che hai implementato, che tu lo realizzi o no, ma ehi, vivi e impari.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.