ค้นหาอุปกรณ์เก็บข้อมูลทั้งหมดที่ต่ออยู่กับเครื่อง Linux


32

ฉันต้องการค้นหาอุปกรณ์เก็บข้อมูลแบบเขียนได้ทั้งหมดที่เชื่อมต่อกับเครื่องที่กำหนดไม่ว่าจะติดตั้งหรือไม่ก็ตาม

วิธี dopey ในการทำเช่นนี้คือลองทุกรายการ/devที่สอดคล้องกับอุปกรณ์ที่เขียนได้ (hd * และ sd *)

มีวิธีแก้ปัญหาที่ดีกว่านี้หรือฉันควรติดกับอันนี้หรือไม่?


reasking เก่าคำถาม SO
วอร์เรน

2
บางทีคุณต้องการใช้ udisks?
Derobert

ฉันไม่เพียง แต่ต้องการค้นหาว่าฮาร์ดดิสก์อยู่ในระบบ - ฉันกำลังมองหาอุปกรณ์เก็บข้อมูลทั้งหมด
วอร์เรน

ฉันคิดว่าเราทุกคนคิดว่าฮาร์ดดิสก์และสิ่งที่คล้ายกัน คุณหมายถึงอะไรอย่างอื่นจริง ๆ ? เช่นนั้นควรรวมถึงเทปไดรฟ์เครื่องพิมพ์ ฯลฯ หรือไม่
Derobert

2
@derobert - ใช่ดังนั้นชื่อของ "อุปกรณ์จัดเก็บข้อมูลทั้งหมด" :)
warren

คำตอบ:


47

หากมีใครสนใจเพียงอุปกรณ์จัดเก็บข้อมูลแบบบล็อกคน ๆ นั้นสามารถใช้lsblkจากแพ็คเกจ util-linux ที่มีอยู่อย่างกว้างขวาง:

$ 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และแยกรายละเอียดเกี่ยวกับอุปกรณ์ในdiskหรือtapeคลาส (และบางทีอื่น ๆ - storageคลาสให้รายละเอียดเกี่ยวกับอุปกรณ์ควบคุมหน่วยเก็บข้อมูล scsi, sata, sas, ฯลฯ )

เช่น

lshw -class disk -class tape

-shortตัวเลือกให้สรุปกะทัดรัดดี เช่นบนเซิร์ฟเวอร์ zfsonlinux บ้าน / เวิร์กสเตชัน / กล่องทดสอบของฉัน (ไม่มีอุปกรณ์เทปน่าเสียดาย):

# lshw -class tape-class disk -class storage -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 Patriot Wildfire
/ 0/100 / b / 0 อุปกรณ์จัดเก็บข้อมูล scsi1 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/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 / dev / sdi ดิสก์ 1TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj ดิสก์ 1TB ST31000528AS
/ 0/100/11 ที่เก็บข้อมูล scsi2 SB7x0 / SB8x0 / SB9x0 ตัวควบคุม SATA [โหมด AHCI]
/ 0/100/11/0 / dev / sda ดิสก์ 128GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb ดิสก์ 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 ดิสก์ดิสก์ SCSI 4057MB

อุปกรณ์ / 0/1 เป็นเครื่องอ่านการ์ด USB จริง ๆ (มีการ์ด SD 2GB เชื่อมต่อกับหนึ่งในช่องเสียบ) และอุปกรณ์ / 0/2 เป็นโทรศัพท์ Android ของฉันที่เสียบเข้ากับการชาร์จเท่านั้น อุปกรณ์ 0/3 เป็นแฟลชไดรฟ์ 4GB

lshwสามารถสร้างข้อความธรรมดา, html, xml และ json เอาท์พุท นอกจากนี้ยังสามารถถ่ายโอนข้อมูลรายละเอียดฮาร์ดแวร์ลงในรูปแบบฐานข้อมูล sqlite

มันบรรจุสำหรับเดเบียนและ distros อื่น ๆ ส่วนใหญ่ โฮมเพจและแหล่งที่มาอยู่ที่http://ezix.org/project/wiki/HardwareLiSter



5

คุณสามารถใช้lsblkเพื่อแสดงรายการอุปกรณ์บล็อกทั้งหมดพร้อมกับว่าอุปกรณ์แต่ละชิ้นจะอ่านได้อย่างเดียวหรือไม่

จากนั้นคุณสามารถใช้grepและawkพิมพ์ชื่อของอุปกรณ์บล็อกที่ไม่ได้อ่านอย่างเดียว:

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

นี้คือการขยายตัวที่ดีในก่อนหน้านี้คำตอบ
วอร์เรน

4

lsblk จะแสดงรายการอุปกรณ์เก็บข้อมูลบล็อกทั้งหมด

fdisk -l จะแสดงรายการพาร์ติชั่นทั้งหมดในอุปกรณ์ทั้งหมดที่อยู่ในรายการ /proc/partitions

lshw -short จะให้ข้อมูลเกี่ยวกับฮาร์ดแวร์ทั้งหมด (ยกเว้นบางที firewire) บนระบบ


3

หากเป็นต่อการตอบสนองของคุณเพื่อ derobert คุณกำลังมองหาสิ่งที่แสดงรายการเทปไดรฟ์และเครื่องพิมพ์คุณอาจจะสนใจในการlsdev, และlsusblspci


แน่นอนว่าจะไม่พบที่เก็บข้อมูลที่เชื่อมต่อกับเครือข่าย :-(
Derobert

1
จากนั้นfdisk -l
colons

2

คุณสามารถลองคำสั่งต่อไปนี้:

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

1
มันทำอะไรและเปรียบเทียบกับการแสดงรายการคลาสและอุปกรณ์อุปกรณ์เทปด้วย lshw อย่างไร
n611x007

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: บนลินุกซ์บางอย่างเช่น Ubuntus 14.04 และสูงกว่าhwinfo ไม่อยู่ในที่เก็บอย่างเป็นทางการ


0

ฉันพบว่าfdiskและlsblkไม่พร้อมใช้งานในเทอร์มินัลเสมือนสำหรับโปรแกรมติดตั้ง Debian ในกรณีนี้ฉันใช้blkidซึ่งได้รับ UUID สำหรับอุปกรณ์จัดเก็บข้อมูลแบบบล็อก


-1

หากคุณหมายถึงอุปกรณ์ RAID คุณจะไม่สามารถรับผลลัพธ์ที่ถูกต้องโดยใช้ hdparm smartctl ฯลฯ เนื่องจากเครื่องมือประเภทนี้จะค้นหา / dev ซึ่งเป็นระดับ OS หากคุณต้องการทราบระดับฮาร์ดแวร์คุณต้องมีเครื่องมือเช่น megacli ฉันเคยแก้ปัญหาด้วย megacli

    [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 ปีที่แล้ว?
warren

เพราะระบบปฏิบัติการมีการเปลี่ยนแปลงและตอนนี้คุณได้รับมากมายloopและtmpfsพาร์ทิชัน ดังนั้นจึงดีกว่าในการทำความสะอาดผลผลิตโดยใช้ grep ดังกล่าวข้างต้น
Mian Asbat Ahmad

-3

นี่จะแสดงรายการดิสก์และไดรฟ์ที่ติดตั้งทั้งหมดของคุณ:

$ df -h

5
ที่จริงที่แสดงรายการของระบบไฟล์ ...
HalosGhost
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.