Odpowiednie urządzenie / dev / sdY można znaleźć, przechodząc przez /sys
drzewo:
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
Dzięki bardziej wydajnemu /sys
przechodzeniu (por. Lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Przykładowe dane wyjściowe z systemu 2-dyskowego:
ata1 => /dev/sda
ata2 => /dev/sdb
Następnie, aby niezawodnie zidentyfikować rzeczywisty sprzęt, musisz zmapować / dev / sdY na numer seryjny, np .:
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
lssci
Narzędzie może być wykorzystywane do uzyskiwania odwzorowanie:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Zauważ, że odpowiednie wyliczenie lsscsi zaczyna się od 0, podczas gdy wyliczenie ata zaczyna się od 0.
Syslog
Jeśli nic więcej nie działa, można spojrzeć na syslog / journal, aby uzyskać mapowanie.
Te /dev/sdY
urządzenia są utworzone w tym samym celu, jak identyfikatory ATAX zamieszczono w kern.log
pomijając urządzenia dla dysków (ATAPI) i nie-związane linki.
Zatem następujące polecenie wyświetla odwzorowanie:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-' | \
sed 's/^.*\] ata//' | \
sort -n | sed 's/:.*//' | \
awk ' { a="ata" $1; printf("%10s is /dev/sd%c\n", a, 96+NR); }'
ata1.00 is /dev/sda
ata3.00 is /dev/sdb
ata5.00 is /dev/sdc
ata7.00 is /dev/sdd
ata8.00 is /dev/sde
ata10.00 is /dev/sdf
(Uwaga: ata4 nie jest wyświetlany, ponieważ powyższe komunikaty dziennika pochodzą z innego systemu).
Używam /var/log/kern.log.0
i nie /var/log/kern.log
dlatego, że komunikaty rozruchowe są już obrócone. Pozdrawiam, May 28 2
ponieważ był to ostatni czas uruchamiania i chcę zignorować poprzednie wiadomości.
Aby zweryfikować mapowanie, możesz wykonać kilka kontroli, sprawdzając dane wyjściowe:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-'
May 28 20:43:26 hn kernel: [ 1.260488] ata1.00: ATA-7: SAMSUNG SV0802N, max UDMA/100
May 28 20:43:26 hn kernel: [ 1.676400] ata5.00: ATA-5: ST380021A, 3.19, max UDMA/10
[..]
I możesz porównać to wyjście z hdparm
wyjściem, np .:
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(przy użyciu jądra 2.6.32-31)
Oto moja wersja, zmodyfikowana z góry. Ponieważ nie znam dokładnej daty uruchomienia systemu (do testowania było to 27 dni temu) i nie wiem, który plik kern.log zawiera potrzebne dane (niektóre mogą znajdować się
gzipped
w moim systemie), używamuptime
idate
obliczyć przybliżoną datę uruchomienia systemu (w każdym razie do dnia), a następnie użyjzgrep
do przeszukania wszystkich dostępnych plików kern.log.Zmodyfikowałem również nieco drugie
grep
oświadczenie, ponieważ teraz będzie ono wyświetlać także napęd CD / DVD ATAPI oraz napędy ATA- *.Może nadal korzystać z udoskonalania (tj. Jeśli czas pracy systemu jest dłuższy niż rok), ale na razie powinien działać OK.
źródło
Właśnie miałem ten sam problem i znalazłem inne rozwiązanie, które może się podobać.
Narzędzie lsscsi wyświetla listę urządzeń SCSI (lub hostów) i ich atrybut.
W lsscsi dostaje się nazwę ATA i nazwę urządzenia.
Wygląda tak:
Na Ubuntu można po prostu zainstalować lsscsi
źródło
ataX
mapę do jakiej częścilsscsi
wyniku?lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
/sys/devices
bezlsscsi
.Żadna z powyższych odpowiedzi nie działała dla mnie, a metoda lsscsi faktycznie dała złą odpowiedź z powodu rozbieżności między numerami magistrali SCSI i ATA. W systemie z 21 dyskami miałem wiele raportów syslog o problemach z ATA18 (naruszenia HSM). Który dysk powodował te błędy? Niektóre z nich były dyskami USB, co znacznie komplikowało sprawę. Potrzebowałem rozliczenia, w jaki sposób każdy dysk SCSI jest podłączony do systemu, i napisałem poniższy skrypt, który wyświetla listę tabelaryczną dla wszystkich dysków SCSI (/ dev / s [dr]?) Niezależnie od tego, czy ATA, czy USB.
Następnie, kiedy wszystkie dyski zostały w pełni uwzględnione, zdziwiłem się, widząc, że moje błędy ATA nie mają nic wspólnego z żadnym z moich dysków. Zadawałem złe pytanie i myślę, że inni mogą łatwo wpaść w tę samą pułapkę, dlatego tutaj o tym wspominam. Następnie zastosowałem drugie podejście, które zidentyfikowało sprzęt, który generował komunikaty o naruszeniu HSM, również szczegółowo opisane w dokumentacji pojawiającej się w skrypcie poniżej.
źródło