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

16

Ho un alloggiamento per unità esterno con 4 dischi eSATA al suo interno. Il mio sistema ha una scheda eSATA a 4 porte, oltre a una coppia di unità RAID1 hardware interne. Le unità esterne sono in coppie RAID1 software come /dev/md0 e /dev/md1 . Entrambi sono stati configurati come volumi fisici LVM per creare il mio gruppo di volumi LVM storagevg . Recentemente, una singola unità è andata offline (sospetto i cavi), ma non sembra essere un buon modo per identificare fisicamente quale unità devo controllare, specialmente dal momento che l'ordine di inizializzazione non è lo stesso tra gli stivali. Come posso trovare il disco che richiede attenzione?

    
posta Kees Cook 03.11.2010 - 01:42

8 risposte

15

Utility Disco (seduto in Sistema - & gt; Amministrazione) ti darà 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 nella matrice per l'accesso al disco non elaborato.

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

È vero anche il contrario, in quanto se un disco muore, ho solo bisogno di trovare quali dischi vengono visualizzati e posso eliminarli finché non so quale seriale è mancante.

Modifica: Sto cercando di migliorare la mia bash-fu così ho scritto questa versione da riga di comando per darti solo un elenco dei numeri seriali del disco che sono presenti nella tua macchina. fdisk può eliminare alcuni errori ma questo non altera la lista:

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 ne hai bisogno, l'ho suddiviso per leggibilità)

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

    
risposta data Oli 03.11.2010 - 11:22
5

Se si riscontrano problemi nell'individuare il numero di serie o l'indicazione della porta dell'unità con le posizioni spaziali dei dischi, è possibile eseguire cat /dev/sdz >/dev/null (dove sdz è l'unità guasta) e individuare l'unità tramite il relativo LED (o all'orecchio se non sei in una rumorosa sala server). 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.

    
risposta data Gilles 03.11.2010 - 20:30
3

Le informazioni che udisks fornisce (sulla riga di comando o in Utility del disco GNOME ) includono il numero di serie 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 dei casi di PC rende impossibile leggere quei periodici senza estrarre il disco ...

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

Dato che il tuo disco non è in linea, presumo che non sia "visto" dal kernel al momento? In tal caso, potrebbe essere necessario eliminarlo: si desidera che il disco con un numero di serie non elencato ...

    
risposta data JanC 03.11.2010 - 03:50
2

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

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

    
risposta data 3dinfluence 03.11.2010 - 02:52
1

lsscsi

$ lsscsi -l
[0:0:0:0]    disk    ATA      TOSHIBA THNS128G AGLA  /dev/sda
  state=running 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
  state=running 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 tu non abbia una bella gabbia di guida dovrai eseguire il drill-down per numero di serie, sg_inq dovrebbe aiutarti.

Se hai una buona gabbia per unità, dovresti essere in grado di abilitare il disco faro per aiutare a identificare il membro difettoso.

link

    
risposta data ppetraki 14.11.2010 - 01:24
1

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

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
    
risposta data BVBMedia 27.03.2016 - 15:55
0

È semplice. Questo è ad esempio l'output sul mio PC:

[email protected]:~$ 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

    
risposta data Andrea Grandi 03.11.2010 - 01:59
0

Dato che l'array non ha intelligenze SES e l'attività del disco Il LED non è direttamente pilotabile, ad es. è necessario il supporto del firmware per quella. L'unica altra cosa che puoi fare è sospendere l'I / O come il meglio che puoi e quindi utilizza qualcosa come dd o sg_read attivo gli stessi membri a seguire uno schema di letture per il disco che crea un pattern di intermittenza identificabile in modo univoco utilizzando il LED di attività, faro di un povero uomo, se vuoi. È davvero la tua unica alternativa, a meno che portare l'array in basso non sia un'opzione.

Questo tipo di praticità è ciò che differenzia la memoria esterna array. Dal momento che non hai pianificato in anticipo scarabocchiando la serie numeri e le loro posizioni, non puoi fare la semplice differenza di set per identificare l'unità difettosa. È il prezzo che si paga per la soluzione hai schierato, che te ne accorga o no, ma hey, vivi e impara.

    
risposta data ppetraki 15.11.2010 - 03:04

Leggi altre domande sui tag