ฉันจะเชื่อมโยงอุปกรณ์ / dev / sd กับฮาร์ดแวร์ที่พวกเขาเป็นตัวแทนได้อย่างไร


35

ไดรฟ์เริ่มล้มเหลวและฉันรู้จักอุปกรณ์โดยการ/dev/sdbกำหนดไฟล์อุปกรณ์เท่านั้น อะไรคือวิธีที่ฉันสามารถใช้เชื่อมโยงไฟล์อุปกรณ์นั้นกับอุปกรณ์ฮาร์ดแวร์จริงเพื่อให้รู้ว่าไดรฟ์ใดที่จะแทนที่ทางกายภาพ

โบนัส:จะทำอย่างไรถ้าฉันไม่มี/dev/disk/และไดเรกทอรีย่อยในการติดตั้งนี้ (อันไหนน่าเศร้าฉันไม่ได้)


ไม่มีตัวควบคุม RAID ใช่ไหม
ewwhite

@ewwhite ไม่ใช่เพื่อจุดประสงค์ของคำถามนี้ไม่ใช่ =)
เวสลีย์

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 ของคุณรองรับ) แน่นอนตรวจการณ์ไม่ได้ดังนั้น ...
derobert

14
hdparm -i /dev/sdb

นั่นควรให้รุ่นและหมายเลขซีเรียลของไดรฟ์


สิ่งนี้จะใช้ได้กับสถานการณ์ส่วนใหญ่ฉันเชื่อ อย่างไรก็ตามด้วยเหตุผลบางประการตัวควบคุมในเซิร์ฟเวอร์นี้เป็นแบบร่าง การปฏิบัติตามคำสั่งนั้นทำให้ฉันได้รับสิ่งนี้:HDIO_GET_IDENTITY failed: Invalid argument
เวสลีย์

1
smartctl -iก็ควรลองเช่นกัน ใช้งานได้กับไดรฟ์ SCSI ในขณะที่ hdparm มักจะไม่ทำงาน
derobert

ไม่ทำงานกับ USB drices
Mads Skjern

12

ตามที่ 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 'ดังนั้นหยุดความชั่วร้าย'

4

สมมติว่านี่คือ Linux สิ่งที่ชัดเจนที่สุดคือการตรวจสอบ dmesg ว่าเคอร์เนลเริ่มต้นอุปกรณ์อย่างไร มันบันทึกรุ่นของไดรฟ์


ตรวจสอบunix.stackexchange.com/questions/39886/…สำหรับรายละเอียดเพิ่มเติม
jippie

ใช่มันเป็น Linux Debian โดยเฉพาะ 4. ฉันตรวจสอบ dmesg แล้ว แต่ไม่เห็นถึงรูปแบบไดรฟ์แปลก ๆ บางทีฉันอ่านผิด
เวสลีย์

4

ฉันมี 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.