/ dev / sd 장치를 그들이 나타내는 하드웨어와 어떻게 연관 시키는가?


35

드라이브가 고장 나기 시작하고 /dev/sdb장치 파일 이름으로 만 장치를 알고 있습니다. 물리적으로 교체 할 드라이브를 알기 위해 해당 장치 파일을 실제 하드웨어 장치와 연관시키는 데 사용할 수있는 방법은 무엇입니까?

보너스 :/dev/disk/ 이 설치에 하위 디렉토리 가 없으면 어떻게합니까? (슬프게도 나는 그렇지 않다)


RAID 컨트롤러가 없습니까?
ewwhite 2016 년

@ewwhite이 질문의 목적이 아닙니다. =)
Wesley

btw. 당신이없는 경우 /dev/disk/디렉토리를 당신은 아마 udev에 없습니다.
Ulrich Dangel

@ UlrichDangel 매우 관찰력이 있기 때문에 ... 나는 udev가 없습니다. = (
Wesley

답변:


21

당신은 볼 수 있습니다 /sys/block:

-bash-3.2$ ls -ld /sys/block/sd*/device
lrwxrwxrwx 1 root root 0 Jun  8 21:09 /sys/block/sda/device -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdb/device -> ../../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdc/device -> ../../devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdd/device -> ../../devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0

또는이없는 경우 /sys다음을 볼 수 있습니다 /proc/scsi/scsi.

-bash-3.2$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: PepperC  Model: Virtual Disc 1   Rev: 0.01
  Type:   CD-ROM                           ANSI SCSI revision: 03

신난다, 나는이 /sys/(물론 같은 /proc/훌륭한 정보가이 많은). 여전히 소비 중입니다.
웨슬리

또한 / dev / disk / by-path를 살펴보십시오 (udev가 지원한다고 가정). 당연히 OP는 그렇지 않습니다.
derobert

14
hdparm -i /dev/sdb

그러면 드라이브의 모델 및 일련 번호가 제공됩니다.


이것은 대부분의 상황에서 효과가 있다고 생각합니다. 그러나 어떤 이유로이 서버의 컨트롤러는 개략적입니다. 이 명령을 수행하면 다음 HDIO_GET_IDENTITY failed: Invalid argument
Wesley

1
smartctl -i시도해 볼 가치가 있습니다. hdparm은 종종 그렇지 않지만 SCSI 드라이브에서 작동합니다.
derobert

USB 쌀과 함께 작동하지 않습니다
Mads Skjern

12

His의 대답에서 언급 할 수없는 Gilles처럼 커널이 사용 udev하는 경우 udevadm명령을 사용하여 장치를 조사 할 수 있습니다 .

udevadm info -n /dev/sda -a

(슬프게도, 어떤 경우에는 [이 경우 나에게 참되다는 사실이 슬프다]] udev를 사용하지 않거나 udevadm을 사용할 수 없습니다.


8

드라이브의 LED를 보거나 디스크 소음을 듣는다면

sudo cat /dev/sdb >/dev/null

어떤 드라이브가 갑자기 지속적으로 활성화되는지 확인하십시오. 아니면, 소음으로 가고 있다면

sudo find /mount/point >/dev/null

그러면 헤드가 더 많이 움직입니다 (실패한 디스크에서는 헤드를 사용하지 말고 다른 디스크와 함께 제거 프로세스를 사용하는 것이 좋습니다).


2
나는 빛이 이동하는 얻는 방법을 생각했다 블링키 - 블링키를 이 광산의 호기심에 대한 대답은, 그래서. =)
웨슬리

1
일부 드라이브에는이를위한 추가 LED가 있지만 일반적으로 엔터프라이즈 급 드라이브에서만 볼 수 있습니다 (상대적으로 낮은 용량에서 엄청나게 비쌉니다). 이러한 LED의 작동 방법을 모르지만 dd트릭은 일반적으로 충분합니다.
jippie

@WesleyDavid LED가 없더라도 소음을 듣는 것이 최후의 수단이 될 수 있습니다. dd여기서 ( 또는 대부분의 상황에서 ) 사용할 필요가 없으며cat 파일에서 읽는 다른 프로그램도 사용할 수 있습니다.
Gilles 'SO- 악한 중지'

4

이것이 리눅스라고 가정하면 가장 확실한 것은 커널이 처음 장치를 초기화하는 위치를 dmesg를 확인하는 것입니다. 드라이브 모델을 기록합니다.


자세한 내용은 unix.stackexchange.com/questions/39886/… 을 확인 하십시오.
jippie

예, Linux입니다. 특히 데비안 4. dmesg를 확인했지만 드라이브 모델에 대한 언급은 이상하게도 보지 못했습니다. 아마도 내가 잘못 읽고있을 것입니다.
웨슬리

4

네 가지 방법이 있습니다. 첫 번째가 가장 쉽다 :

dmesg | egrep "sd[a-z]"

다른 사람들에게는이 것을 제외하고 / dev / disk가 필요한지 확실하지 않습니다.

ls -lF /dev/disk/by-uuid

다른 사람:

blkid -o list -c /dev/null

그리고 명백한 :

fdisk -l

3

SCSI 장치 이름을 찾는 방법은 다음과 같습니다.

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (패키지 util-linux> = v2.22에서)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.