Làm cách nào để tương quan / dev / sd thiết bị với phần cứng mà chúng đại diện?


35

Một ổ đĩa đang bắt đầu bị lỗi và tôi chỉ biết thiết bị bằng cách /dev/sdbchỉ định tệp thiết bị của nó . Những cách mà tôi có thể sử dụng để tương quan tập tin thiết bị đó với một thiết bị phần cứng thực tế để biết ổ đĩa nào cần thay thế?

Phần thưởng: Điều gì sẽ xảy ra nếu tôi không có /dev/disk/và các thư mục con của nó trong bản cài đặt này? (Mà, thật đáng buồn, tôi không)


Không có bộ điều khiển RAID?
ewwhite

@ewwhite Không dành cho mục đích của câu hỏi này, không. =)
Wesley

btw. nếu bạn không có /dev/disk/thư mục thì có lẽ bạn không có udev.
Ulrich Dangel

@UlrichDangel Rất quan sát vì ... Tôi không có udev. = (
Wesley

Câu trả lời:


21

Bạn có thể nhìn vào /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

Hoặc nếu bạn không có /sys, bạn có thể xem /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

Tuyệt vời, tôi có /sys/(cũng như /proc/) Rất nhiều thông tin tuyệt vời ở đó. Vẫn tiêu thụ nó.
Wesley

Ngoài ra, hãy xem / dev / đĩa / by-path (giả sử udev của bạn hỗ trợ nó). Tất nhiên, OP không, vì vậy ...
derobert

14
hdparm -i /dev/sdb

Điều đó sẽ cung cấp cho bạn mô hình và số sê-ri của ổ đĩa.


Điều này sẽ làm việc cho hầu hết các tình huống, tôi tin. Tuy nhiên, vì một số lý do, bộ điều khiển trong máy chủ này còn sơ sài. Thực hiện lệnh đó kiếm được cho tôi điều này:HDIO_GET_IDENTITY failed: Invalid argument
Wesley

1
smartctl -icũng đáng để thử. Hoạt động trên các ổ đĩa SCSI, trong khi hdparm thường sẽ không.
derobert

Không hoạt động với các ổ USB
Mads Skjern

12

Như Gilles không thể bắt chước được đề cập trong câu trả lời này của anh ta , nếu kernel của bạn sử dụng, udevbạn có thể sử dụng udevadmlệnh để thẩm vấn một thiết bị:

udevadm info -n /dev/sda -a

(Đáng buồn thay, trong một số trường hợp [buồn đôi khi nó đúng với trường hợp này đối với tôi] udev không được sử dụng và / hoặc udevadm không có sẵn.)


8

Nếu bạn có thể thấy đèn LED trên ổ đĩa hoặc nghe tiếng ồn của đĩa, bạn có thể chạy

sudo cat /dev/sdb >/dev/null

và xem ổ đĩa nào đột nhiên hoạt động liên tục. Hoặc, nếu bạn đang đi bằng tiếng ồn,

sudo find /mount/point >/dev/null

điều này sẽ làm cho các đầu di chuyển nhiều hơn (tốt hơn là không làm điều đó trên đĩa hỏng, và thay vào đó sử dụng một quá trình loại bỏ với các đĩa khác).


2
Tôi đã xem xét làm thế nào để ánh sáng trở nên mờ ảo , vì vậy đây là một câu trả lời cho sự tò mò đó của tôi. =)
Wesley

1
Một số ổ đĩa có thêm đèn LED cho việc này, nhưng chúng thường chỉ được tìm thấy trong các ổ đĩa cấp doanh nghiệp (đọc đắt tiền với công suất tương đối thấp). Không biết cách làm việc với các đèn LED đó, nhưng ddmẹo thường hoạt động đủ tốt.
jippie

@WesleyDavid Ngay cả khi không có đèn LED, lắng nghe tiếng ồn có thể là một cách truy đòi cuối cùng. Không cần sử dụng ddở đây ( cũng như trong hầu hết các trường hợp ), cathoặc bất kỳ chương trình nào khác đọc từ tệp sẽ làm.
Gilles 'SO- ngừng trở nên xấu xa'

4

Giả sử đây là Linux, điều rõ ràng nhất là kiểm tra dmesg xem hạt nhân khởi tạo thiết bị lần đầu tiên ở đâu. Nó ghi lại mô hình ổ đĩa.


Kiểm tra unix.stackexchange.com/questions/39886/ Khăn để biết thêm chi tiết.
jippie

Vâng, đó là Linux. Cụ thể là Debian 4. Tôi đã kiểm tra dmesg, nhưng không thấy bất kỳ đề cập nào về mô hình ổ đĩa. Có lẽ tôi đang đọc sai nó.
Wesley

4

Tôi có 4 phương pháp. Cái đầu tiên là dễ nhất:

dmesg | egrep "sd[a-z]"

Đối với những người khác, tôi không chắc họ có cần / dev / đĩa ngoại trừ cái này không:

ls -lF /dev/disk/by-uuid

Những người khác:

blkid -o list -c /dev/null

Và điều hiển nhiên:

fdisk -l

3

Dưới đây là một số cách tôi biết để tìm tên thiết bị SCSI

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (từ gói produc-linux> = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.