/sys
트리 를 탐색하여 해당 / dev / sdY 장치를 찾을 수 있습니다 .
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
보다 효율적인 /sys
순회 (참조 : lsata.sh ) :
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
2 디스크 시스템의 출력 예 :
ata1 => /dev/sda
ata2 => /dev/sdb
그런 다음 실제 하드웨어를 안정적으로 식별하려면 / dev / sdY를 일련 번호에 매핑해야합니다. 예 :
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
이 lssci
유틸리티를 사용하여 매핑을 파생시킬 수도 있습니다.
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
관련 lsscsi 열거는 0에서 시작하고 ata 열거는 0에서 시작합니다.
Syslog
아무것도 작동하지 않으면 syslog / journal을보고 매핑을 파생시킬 수 있습니다.
/dev/sdY
ataX 식별자가 열거 될 때 장치가 동일한 순서로 생성 된 kern.log
비 디스크 장치 (ATAPI)가 아닌 연결 링크를 무시하면서.
따라서 다음 명령은 매핑을 표시합니다.
$ 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
(위의 로그 메시지는 다른 시스템에서 온 것이기 때문에 ata4는 표시되지 않습니다.)
부팅 메시지가 이미 회전했기 때문에 사용 /var/log/kern.log.0
하고 /var/log/kern.log
있습니다. 나는 grep으로 May 28 2
이번이 마지막 부팅 시간 이었기 때문에 나는 이전 메시지를 무시해야합니다.
매핑을 확인하려면 다음의 출력을 통해 몇 가지 검사를 수행 할 수 있습니다.
$ 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
[..]
이 출력을 hdparm
출력 과 비교할 수 있습니다 . 예 :
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(커널 2.6.32-31 사용)