लिनक्स मशीन से जुड़े सभी स्टोरेज डिवाइस को ढूंढना


32

मुझे किसी दिए गए मशीन से जुड़े सभी योग्य भंडारण उपकरणों को खोजने की आवश्यकता है, चाहे वे माउंट किए गए हों या नहीं।

ऐसा करने के लिए डोपे का तरीका हर प्रविष्टि को प्रयास करने के लिए होगा /devजो एक योग्य डिवाइस (एचडी * और एसडी *) से मेल खाती है।

क्या कोई बेहतर उपाय है, या मुझे इसके साथ रहना चाहिए?



2
शायद आप udisks का उपयोग करना चाहते हैं?
व्युत्पन्न

मैं केवल यह नहीं खोजना चाहता कि एक सिस्टम पर कौन से हार्ड डिस्क हैं - मैं सभी स्टोरेज डिवाइसों की तलाश कर रहा हूं
वॉरेन

मुझे लगता है कि हम सभी ने हार्ड डिस्क और समान माना। क्या आप वास्तव में कुछ और मतलब है? जैसे, क्या इसमें टेप ड्राइव, प्रिंटर आदि शामिल होने चाहिए?
व्युत्पन्न

2
@derobert - हाँ, इसलिए "सभी भंडारण उपकरणों" का शीर्षक :)
वॉरेन

जवाबों:


47

यदि कोई केवल ब्लॉक स्टोरेज डिवाइस में रुचि रखता है, तो एक lsblkव्यापक रूप से उपलब्ध उपयोग -लिनक्स पैकेज से उपयोग कर सकता है :

$ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME TYPE   SIZE MODEL
sda   disk 149.1G TOSHIBA MK1637GS
sda1  part  23.3G 
sda2  part    28G 
sda3  part  93.6G 
sda4  part   4.3G 
sr0   rom   1024M CD/DVDW TS-L632M

यह कई अन्य स्तंभों के साथ स्क्रिप्टिंग के लिए अच्छी तरह से उधार देता है।


13

आप या कक्षा lshwमें उपकरणों के बारे में और निकालने के विवरण के माध्यम से पता लगा सकते हैं (और शायद अन्य - वर्ग आपको भंडारण नियंत्रकों, एससीआई, sata, sas, आदि पर विवरण देता है)।disktapestorage

जैसे

lshw -class disk -class tape

-shortविकल्प के लिए एक अच्छा कॉम्पैक्ट सारांश देता है। उदाहरण के लिए मेरे घर पर zfsonlinux सर्वर / वर्कस्टेशन / प्रयोग-बॉक्स (कोई टेप उपकरण दुर्भाग्य से):

# lshw -class टेप -क्लास डिस्क -क्लास स्टोरेज -short
H / W पथ डिवाइस क्लास विवरण
================================================== =======
/ 0/100/4/0 भंडारण JMB362 SATA नियंत्रक
/ 0/100/5/0 scsi10 भंडारण JMB362 SATA नियंत्रक
/0/100/5/0/0.0.0 / dev / sdc डिस्क 120GB पैट्रियट वाइल्डफायर
/ 0/100 / b / 0 scsi1 भंडारण SAS2008 PCI-Express फ्यूजन-एमपीटी SAS-2 [फाल्कन]
/0/100/b/0/0.0.0 / dev / sdd डिस्क 1TB WDC WD10EARS-00Y
/ 0/100/b/0/0.1.0 / dev / sde डिस्क 1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf डिस्क 1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg डिस्क 1TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh डिस्क 1TB ST31000528AS
/0/100/b/0/0.5.0 / देव / साडी डिस्क 1TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj डिस्क 1TB ST31000528AS
/ 0/100/11 scsi2 संग्रहण SB7x0 / SB8x0 / SB9x0 SATA नियंत्रक [AQI]]
/ 0/100/11/0 / देव / एसडीए डिस्क 128 जीबी पैट्रियट टोरक्क्स 2
/ 0/100/11/1 / देव / एसडीबी डिस्क 1TB ST31000528AS
/ 0/1 scsi11 भंडारण     
/ 0/1/0.0.0 / dev / sdk डिस्क 1967MB SCSI डिस्क
/0/1/0.0.1 / dev / sdl डिस्क SCSI डिस्क
/0/1/0.0.2 / dev / sdm डिस्क SCSI डिस्क
/0/1/0.0.3 / dev / sdn डिस्क SCSI डिस्क
/ 0/2 scsi66 भंडारण     
/0/2/0.0.0 / dev / sdo डिस्क SCSI डिस्क
/ 0/3 scsi67 भंडारण     
/0/3/0.0.0 / dev / sdp डिस्क 4057MB SCSI डिस्क

/ 0/1 डिवाइस वास्तव में एक USB कार्ड-रीडर हैं (स्लॉट्स में से एक में 2GB एसडी कार्ड प्लग किया गया है), और / 0/2 डिवाइस केवल चार्ज करने के लिए मेरा एंड्रॉइड फोन प्लग इन है। 0/3 डिवाइस 4GB USB फ्लैश ड्राइव है।

lshwसादे पाठ, HTML, xml और json आउटपुट का उत्पादन कर सकते हैं। यह हार्डवेयर विवरण को एक स्क्वैलाइट डेटाबेस प्रारूप में भी डंप कर सकता है।

इसे डेबियन और अधिकांश अन्य डिस्ट्रोस के लिए पैक किया जाता है। मुख पृष्ठ और स्रोत http://ezix.org/project/wiki/HardwareLiSter पर है


5

कृपया, इस आदेश का प्रयास करें

ls -l /dev /dev/mapper |grep '^b'

यह आपके सिस्टम में सभी ब्लॉक डिवाइसों को सूचीबद्ध करेगा


5

आप lsblkसभी ब्लॉक डिवाइस को सूचीबद्ध करने के लिए उपयोग कर सकते हैं , साथ ही प्रत्येक डिवाइस को केवल पढ़ने के लिए या नहीं।

आप तब उपयोग किए जा सकने वाले ब्लॉक डिवाइसेस के नाम प्रिंट कर सकते हैं grepऔर awkप्रिंट कर सकते हैं:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}

यह पिछले उत्तर
वॉरेन

4

lsblk सभी ब्लॉक स्टोरेज डिवाइस को सूचीबद्ध करेगा।

fdisk -l सूचीबद्ध किए गए सभी उपकरणों पर सभी विभाजनों को सूचीबद्ध करेगा /proc/partitions

lshw -short आपको सिस्टम पर हार्डवेयर (शायद फायरवायर को छोड़कर) के बारे में जानकारी देगा।


3

यदि, प्रतिवाद के प्रति आपकी प्रतिक्रिया के अनुसार, आप कुछ ऐसी चीज़ों की तलाश कर रहे हैं जो टेप ड्राइव और प्रिंटर को सूचीबद्ध करती हैं , तो आप में रुचि हो सकती है lsdev, lsusbऔर lspci


बेशक, यह नेटवर्क-संलग्न भंडारण खोजने में विफल रहेगा :-(
derobert

1
फिरfdisk -l
कॉलन

2

आप निम्न आदेश आज़मा सकते हैं:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq

1
यह क्या करता है और यह कैसे करता है कि lshw के साथ ब्लॉक और टेप डिवाइस कक्षाओं को सूचीबद्ध करने की तुलना करें?
n611x007 7

2

आप सभी डिस्क ( प्रलेखन ) को सूचीबद्ध करने के लिए hwinfo का उपयोग कर सकते हैं ।

hwinfo --block --short अवलोकन देता है:

disk:
  /dev/sdb             WDC WD3200AAKS-7
  /dev/sda             SAMSUNG HD103UJ
partition:
  /dev/sdb1            Partition
  /dev/sdb2            Partition
  /dev/sda1            Partition
cdrom:
  /dev/sr1             TSSTcorp DVD+-RW TS-H653B
  /dev/sr0             HL-DT-ST DVD-ROM GDRH20N

hwinfo --disk प्रत्येक डिस्क के लिए अधिक विवरण देता है।

FYI करें: कुछ लिनक्स वितरण जैसे कि यूबंटस 14.04 और उससे अधिक, hwinfo आधिकारिक रिपॉजिटरी में मौजूद नहीं है


0

मुझे लगता है कि मिल गया है fdiskऔर lsblkडेबियन संस्थापक के लिए आभासी टर्मिनल में उपलब्ध नहीं हैं। इस मामले में मैं उपयोग करता हूं blkid, जिसे ब्लॉक स्टोरेज डिवाइस के लिए यूयूआईडी मिलता है।


-1

यदि आप RAID उपकरणों से मतलब रखते हैं तो आप hdparm स्मार्टक्टल आदि का उपयोग करके सही परिणाम प्राप्त नहीं कर पाएंगे क्योंकि इस तरह के उपकरण / देव के लिए दिखते हैं जो ओएस स्तर है यदि आप हार्डवेयर स्तर पर जानना चाहते हैं तो आपको मेगाकली जैसे उपकरण की आवश्यकता होगी मैं मेगाकली के साथ डिबग करता था

    [root@ns3539186 ~]# /opt/megaraid/megacli -LDPDInfo -aAll |grep "Virtual Disks\|RAID Level\|State"
Number of Virtual Disks: 2
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Media Type: Solid State Device
Foreign State: None
Media Type: Solid State Device
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Foreign State: None

डिस्क के सीरियल नंबर प्राप्त करने के लिए

[root@ns3539186 ~]# /opt/megaraid/megacli -PDList -aAll | egrep 'Slot\ Number|Device\ Id|Inquiry\ Data|Raw|Firmware\ state' | sed 's/Slot/\nSlot/g' |grep "Da                    ta\|Slot\|Raw"
Slot Number: 0
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402Z0480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 1
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402YV480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 2
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GJTYMB            HGST HUS726040ALA610                    A5GNT920
Slot Number: 3
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GHW57B            HGST HUS726040ALA610                    A5GNT920

उपरोक्त आउटपुट इंक्वायरी डेटा में सीरियल नंबर होता है


-1

यहाँ कुछ आदेश दिए गए हैं जिनका उपयोग मैं स्थानीय और साझा भंडारण को खोजने के लिए करता था।

स्थानीय भंडारण के लिए

lsblk | grep -v '^loop'

साझा भंडारण के लिए

findmnt -D | grep -v '^tmpfs' | grep -v '^/'

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'

क्यों वही उपकरण पहले से ही सुझाए गए (और स्वीकार किए जाते हैं) 6+ साल पहले?
वॉरेन

क्योंकि OS बदल गया है और अब आपको बहुत सारे loopऔर tmpfsविभाजन मिलते हैं । तो बेहतर है कि ऊपर के रूप में grep का उपयोग करके आउटपुट को साफ करें।
मियां असबत अहमद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.