मैं हार्डवेयर का प्रतिनिधित्व करने वाले / dev / sd डिवाइसों का प्रतिनिधित्व कैसे करते हैं?


35

एक ड्राइव विफल होने लगी है और मैं केवल इसके /dev/sdbडिवाइस फ़ाइल पदनाम द्वारा डिवाइस को जानता हूं । वे कौन से तरीके हैं जो मैं उस डिवाइस फ़ाइल को वास्तविक हार्डवेयर डिवाइस को सहसंबंधित करने के लिए उपयोग कर सकता हूं ताकि यह पता चल सके कि कौन सी ड्राइव भौतिक रूप से प्रतिस्थापित करने के लिए है?

बोनस: क्या होगा अगर मेरे पास /dev/disk/और इसकी उप निर्देशिकाएं इस स्थापना पर नहीं हैं ? (जो, दुख की बात है, मैं नहीं)


कोई RAID नियंत्रक?
ewwhite

@ इस प्रश्न के प्रयोजनों के लिए नहीं, नहीं। =)
वेस्ले

btw। यदि आपके पास /dev/disk/निर्देशिका नहीं है, तो आपके पास शायद udev नहीं है।
उलरिच डेंगल

@UlrichDangel बहुत चौकस क्योंकि ... मैं udev नहीं है। = (
वेस्ले

जवाबों:


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 पर नज़र डालें (यह मानकर कि आपका udv इसका समर्थन करता है)। बेशक, ओप्स ऐसा नहीं करता है ...
21:39 पर

14
hdparm -i /dev/sdb

आपको ड्राइव का मॉडल और सीरियल नंबर देना चाहिए।


यह ज्यादातर स्थितियों के लिए काम करेगा, मुझे विश्वास है। हालाँकि, किसी कारण से इस सर्वर में नियंत्रक स्केच है। उस कमांड को करने से मुझे यह हासिल होता है:HDIO_GET_IDENTITY failed: Invalid argument
वेस्ले

1
smartctl -iकोशिश करने लायक भी है। SCSI ड्राइव पर काम करता है, जबकि hdparm अक्सर नहीं होगा।
derobert

USB के साथ काम नहीं करता है
Mads

12

के रूप में , अपने कर्नेल का उपयोग करता है, तो आप एक डिवाइस से पूछताछ करने के लिए आदेश का उपयोग कर सकते हैं , उसके इस जवाब में असीम गिले का उल्लेख किया गया है:udevudevadm

udevadm info -n /dev/sda -a

(दुख की बात है कि कुछ मामलों में [दुःखद यह है कि यह मेरे लिए इस मामले में सच है] udv का उपयोग नहीं किया गया है और / या udvadm उपलब्ध नहीं है।)


8

यदि आप ड्राइव पर एलईडी देख सकते हैं, या डिस्क शोर सुन सकते हैं, तो आप चला सकते हैं

sudo cat /dev/sdb >/dev/null

और देखते हैं कि कौन सी ड्राइव अचानक सक्रिय हो जाती है। या, यदि आप शोर से जा रहे हैं,

sudo find /mount/point >/dev/null

जो सिर को और अधिक स्थानांतरित कर देगा (यह बेहतर हो सकता है कि यह विफल डिस्क पर न करें, और इसके बजाय अन्य डिस्क के साथ उन्मूलन की प्रक्रिया का उपयोग करें)।


2
मैंने विचार किया था कि रोशनी को ब्लिंक-ब्लिंक करने के लिए कैसे प्राप्त किया जाए, इसलिए यह मेरी उस जिज्ञासा का जवाब है। =)
वेस्ले

1
कुछ ड्राइव में इसके लिए एक अतिरिक्त एलईडी है, लेकिन वे आमतौर पर केवल एंटरप्राइज़ ग्रेड ड्राइव में मिलते हैं (अपेक्षाकृत कम क्षमता पर विचित्र रूप से महंगे पढ़ें)। पता नहीं कैसे उन एलईडी काम करने के लिए, लेकिन ddचाल आमतौर पर काफी अच्छी तरह से काम करता है।
जिप्पी

@WesleyDavid यहां तक ​​कि अगर कोई एल ई डी नहीं हैं, तो शोर को सुनना एक आखिरी सहारा हो सकता है। ddयहां ( और न ही अधिकांश परिस्थितियों में ), catया किसी अन्य प्रोग्राम का उपयोग करने की कोई आवश्यकता नहीं है जो एक फ़ाइल से पढ़ता है।
गिल्स एसओ- बुराई को रोकें '

4

यह मानते हुए कि लिनक्स है, सबसे स्पष्ट बात यह है कि dmesg की जाँच करें कि कर्नेल पहले डिवाइस को इनिशियलाइज़ करता है। यह ड्राइव मॉडल को लॉग करता है।


अधिक जानकारी के लिए unix.stackexchange.com/questions/39886/… की जाँच करें ।
जिप्पी

हाँ, यह लिनक्स है। विशेष रूप से डेबियन 4. मैंने dmesg को चेक किया, लेकिन किसी ड्राइव मॉडल का कोई उल्लेख नहीं किया, अजीब तरह से। शायद मैं इसे गलत बता रहा हूं।
वेस्ले

4

मेरे पास 4 विधियाँ हैं। पहला सबसे आसान है:

dmesg | egrep "sd[a-z]"

दूसरों के लिए, मुझे यकीन नहीं है कि उन्हें इस एक को छोड़कर / देव / डिस्क की आवश्यकता है:

ls -lF /dev/disk/by-uuid

दूसरे:

blkid -o list -c /dev/null

और स्पष्ट:

fdisk -l

3

यहाँ कुछ तरीके हैं जिनसे मुझे SCSI डिवाइस का नाम पता है

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (पैकेज उपयोग-लिनेक्स से = = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.