Jak mogę fizycznie zidentyfikować pojedynczy dysk w macierzy RAID?

16

Mam wnękę na napęd zewnętrzny z 4 dyskami eSATA. Mój system ma 4-portową kartę eSATA, a także parę wewnętrznych sprzętowych napędów RAID1. Dyski zewnętrzne znajdują się w programowych parach RAID1 jako /dev/md0i /dev/md1. Oba zostały skonfigurowane jako woluminy fizyczne LVM w celu utworzenia mojej storagevggrupy woluminów LVM. Ostatnio pojedynczy dysk przeszedł w tryb offline (podejrzewam, że kable), ale wydaje się, że nie ma dobrego sposobu na fizyczną identyfikację dysku, który muszę sprawdzić, zwłaszcza, że ​​kolejność inicjowania nie jest taka sama między rozruchami. Jak znaleźć dysk wymagający uwagi?

Kees Cook
źródło

Odpowiedzi:

15

Narzędzie dyskowe (siedzący w Systemie -> Administracja) poda numery seryjne dla wszystkich dysków.

Oto, co widzę (spójrz na prawy górny róg serialu). Zauważysz, że ten dysk znajduje się w macierzy RAID mdadm. Narzędzie dyskowe może przeniknąć do tablicy w celu uzyskania dostępu do surowego dysku.

Narzędzie dyskowe

Mam 6 tego samego modelu dysku w komputerze, więc narysowałem mały schemat pokazujący ich położenie w obudowie i numer seryjny, dzięki czemu mogę szybko zlokalizować je w trybie awaryjnym.

Odwrotne jest również to, że jeśli dysk umrze, muszę tylko dowiedzieć się, które dyski się pokazują i mogę je wyeliminować, dopóki nie dowiem się, który numer seryjny brakuje.

Edycja: Próbuję ulepszyć mój bash-fu, więc napisałem tę wersję wiersza poleceń, aby dać ci listę numerów seryjnych dysków, które są aktualne na twoim komputerze. fdiskmoże wyskoczyć kilka błędów, ale nie powoduje to skażenia listy:

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

(I jeśli to konieczne, możesz to zmiażdżyć w jedną linię - podzieliłem to dla czytelności)

Edycja 2: ls /dev/disk/by-id/ jest nieco łatwiejsza;)

Oli
źródło
Używanie numerów seryjnych może działać dobrze, jeśli ktoś już je nagrał zewnętrznie. W przypadku systemu, który nie może być wyłączony, ale ma dyski z możliwością wymiany podczas pracy, dobrze byłoby zlokalizować uszkodzony dysk za pomocą diod LED.
Kees Cook
Zauważysz również, że w Narzędziu dyskowym znajduje się identyfikator „Lokalizacja”, który pokazuje, który port adaptera hosta jest podłączony do napędu. Być może będziesz w stanie określić, które porty są które bez odłączania dysków, ale nie mogę spekulować to faktycznie działa.
Oli
W twoim przypadku zatrzymanie macierzy rajdowej na 5 minut, odłączenie każdego dysku i uzyskanie numeru seryjnego nie powinno być zbyt nierozsądne i nie powinno wymagać wyłączenia maszyny ... Ale RAID musiałby zostać zdjęty, chyba że masz ochotę to odbudowuje.
Oli
„Lokalizacja” nie zawsze jest przydatna, np. W przypadku PATA często są 2 dyski na 1 porcie, a jeśli oba dyski są ustawione na „AUTO” dla negocjacji master / slave, prawdopodobnie nie ma sposobu, aby dowiedzieć się, który jest który ? Może to jednak działać w przypadku SATA
JanC
1
Czy napędy PATA nadal istnieją? Jestem tylko SATA od ... Cóż, odkąd dysk 112gig został uznany za duży. Problem ze znalezieniem portu tak naprawdę się nie liczy, ponieważ mówimy o zewnętrznej wnęce napędu. Ale na pewno. W przypadku płyt głównych konsumenckich prawdopodobnie zajrzysz do instrukcji, aby dowiedzieć się, jaki jest port ... Nawet wtedy oprogramowanie może przypisać im inną kolejność.
Oli
5

Jeśli masz problemy z dopasowaniem numeru seryjnego lub wskazania portu do położenia przestrzennego dysków, możesz uruchomić cat /dev/sdz >/dev/null(gdzie sdzjest uszkodzony dysk) i zlokalizować dysk za pomocą jego diody LED (lub przez ucho, jeśli nie znajdujesz się w hałaśliwej serwerowni ). Jeśli napęd nawet się nie uruchomi, to powinno wystarczyć, aby powiedzieć, który to jest. Pamiętaj, aby umieścić widoczną etykietę na dyskach następnym razem.

Gilles „SO- przestań być zły”
źródło
jest to czysty geniusz, ponieważ ma efekt uboczny polegający na pozostawieniu światła na stałym poziomie, podczas gdy wszystkie inne mrugają
HDave
3

Informacja, że udisks (w wierszu polecenia lub w Narzędziu dyskowym GNOME ) obejmują numer seryjny dysku. Na dyskach, które mam, numer seryjny jest wydrukowany na górnej stronie i na przedniej stronie (ten po drugiej stronie tego, który zawiera złącza), zarówno jako liczby, jak i kod kreskowy. Niestety większość przypadków na PC uniemożliwia odczytanie tych seriali bez wyciągnięcia dysku ...

Numery seryjne można również znaleźć w /dev/disk/by-id/.

Ponieważ twój dysk jest w trybie off-line, zakładam, że nie jest on „widziany” przez jądro? W takim przypadku może być konieczne wyeliminowanie: chcesz dysku z numerem seryjnym, którego nie ma na liście ...

JanC
źródło
2

W przypadku raidu oprogramowania jest to powszechny problem. Raidy sprzętowe zwykle mają funkcję, która pozwala mrugać diodą LED związaną z dyskiem, przy założeniu, że sprzęt to obsługuje.

Ale z programowym RAID każdy dysk ma jakieś unikalne metadane. Które można odczytać z każdego dysku za pomocą polecenia mdadm -E /dev/sda1dla każdego dysku w tablicy, modyfikując urządzenia w celu dopasowania do środowiska. Więc jeśli masz sytuację, w której dysk sprawia problemy i jest obecnie w trybie offline. Uruchomiłbym to na każdym dysku, który jest online, rejestrując mniejszy numer dla każdego dysku. Następnie, używając Live CD, który obsługuje MD, ratunkowa płyta ratunkowa systemu jest dobra, z podłączonym tylko jednym napędem na raz i uruchomieniem tego polecenia, aby znaleźć winowajcę. Prawdopodobnie nie jest to tak proste, jak byś chciał, ale powinno działać.

3dinfluence
źródło
Być może istnieją numery seryjne, które można uzyskać za pośrednictwem systemu Linux, które są również wydrukowane na dysku fizycznym?
erjiang
1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] dysk ATA TOSHIBA THNS128G AGLA / dev / sda
  state = running kolejka_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 kolejka_depth = 1 poziom scsi_ = 6 typ = 5 device_blocked = 0 limit czasu = 30

jeśli dysk nie jest uruchomiony, jest to całkiem niezły znak. Tak więc / proc / mdstat powie ci, który członek nie powiódł się. Zakładając, że nie masz ładnej klatki napędowej, musisz pogłębić dane według numeru seryjnego, sg_inq powinien w tym pomóc.

Jeśli masz dobrą klatkę dysku, powinieneś być w stanie włączyć sygnalizator dysku, aby pomóc zidentyfikować wadliwy element.

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

ppetraki
źródło
1

Aby uzyskać kody seryjne wszystkich uruchomionych dysków twardych:

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
źródło
0

To proste. Oto na przykład dane wyjściowe na moim komputerze:

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>

jak widać, dołączyłem / dev / sdh1 i / dev / sdg1 do / dev / md0

Andrea Grandi
źródło
1
Zgadza się, ale to nie mówi mi nic o tym, gdzie fizycznie są w zewnętrznej obudowie napędu.
Kees Cook
0

Ponieważ twoja tablica nie ma inteligentnych SES, a dioda LED aktywności dysku nie jest bezpośrednio sterowalna, np. Potrzebujesz do tego wsparcia oprogramowania układowego. Jedyne, co możesz zrobić, to wyciszyć I / O najlepiej jak potrafisz, a następnie użyć czegoś podobnego ddlub sg_readna samych członkach, aby wkroczyć na dysk wzór odczytów, który tworzy unikatowy wzór mrugania za pomocą diody LED aktywności, słaba latarnia człowieka, jeśli chcesz. To naprawdę twoja jedyna alternatywa, chyba że obniżenie tablicy jest opcją.

Ten rodzaj użyteczności wyróżnia zewnętrzne macierze pamięci. Ponieważ nie planowałeś z wyprzedzeniem, zapisując numery seryjne i ich pozycje, nie możesz zrobić prostej różnicy, aby zidentyfikować wadliwy dysk. Jest to cena, którą płacisz za wdrożone rozwiązanie, niezależnie od tego, czy zdajesz sobie z tego sprawę, czy nie, ale hej, żyj i ucz się.

ppetraki
źródło