ฉันจะทราบได้อย่างไรว่ามีฮาร์ดดิสก์อยู่ในระบบอย่างไร


223

ฉันต้องรู้ว่ามีฮาร์ดดิสก์อะไรบ้างรวมถึงฮาร์ดดิสก์ที่ไม่ได้ติดตั้งและอาจไม่ได้ฟอร์แมต ฉันไม่พบพวกเขาในdmesgหรือ/var/log/messages(มากเกินไปที่จะเลื่อนดู) ฉันหวังว่าจะมีวิธีใช้/devหรือ/procค้นหาข้อมูลนี้ แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันใช้ลีนุกซ์


คำถามเดิมไม่ได้ระบุตัวแปร unix ใด ๆ และการจัดการฮาร์ดแวร์นั้นขึ้นอยู่กับตัวแปรที่แตกต่างกันอย่างเห็นได้ชัด
Gilles

@ gilles ใช่ฉันอยู่ที่ทำงานเมื่อฉันเขียนมันดังนั้นฉันชี้แจงหลังจากที่ฉันกลับถึงบ้านและคิดเกี่ยวกับมัน
xenoterracide

1
ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณกำลังทำudisks
Derobert

2
ฉันพบหน้าเว็บที่มีประโยชน์ซึ่งอธิบายคำสั่งฮาร์ดแวร์ทั่วไปจำนวนมากด้วยการค้นหาใน Google คนดิสก์ไดรฟ์รวมlshw(ฮาร์ดแวร์) hwinfo(Hardware สารสนเทศ) lsscsi(อุปกรณ์รายการ SCSI) lsusb(รายชื่อ USB ขนส่ง / อุปกรณ์) lsblk(อุปกรณ์รายการบล็อก) และfdisk -l mountข้อมูลเพิ่มเติมได้ที่binarytides.com/linux-commands-hardware-info
Edward

คำตอบ:


182

นี่ขึ้นอยู่กับแพลตฟอร์มเป็นอย่างมาก วิธีการที่แตกต่างกันอาจปฏิบัติต่อกรณีขอบแตกต่างกัน (ดิสก์ "ปลอม" หลายชนิดโวลุ่ม RAID, ... )

ในการติดตั้ง udev ที่ทันสมัยมีลิงก์สัญลักษณ์ไปยังสื่อเก็บข้อมูลในไดเรกทอรีย่อยของ/dev/diskที่ช่วยให้คุณค้นหาดิสก์หรือพาร์ติชันด้วยหมายเลขซีเรียล ( /dev/disk/by-id/), โดย UUID ( /dev/disk/by-uuid), โดยระบบแฟ้มฉลาก ( /dev/disk/by-label/) หรือโดยการเชื่อมต่อฮาร์ดแวร์ ( /dev/disk/by-path/)

ภายใต้ Linux 2.6 /sys/blockแต่ละดิสก์และอุปกรณ์ดิสก์เหมือนมีรายการใน ภายใต้ Linux /proc/partitionsตั้งแต่รุ่งอรุณของเวลาที่ดิสก์และพาร์ทิชันที่ระบุไว้ใน หรือคุณสามารถใช้lshwlshw -class disk :

ลินุกซ์ยังให้lsblkยูทิลิตี้ที่แสดงมุมมองต้นไม้ที่ดีของปริมาณการจัดเก็บ (ตั้งแต่ util-linux 2.19 ไม่ปรากฏบนอุปกรณ์ฝังตัวด้วย BusyBox)

หากคุณมีfdiskหรือdisklabelยูทิลิตีอาจบอกได้ว่าอุปกรณ์ใดบ้างที่สามารถใช้งานได้

คุณจะพบชื่อยูทิลิตี้สำหรับชุดยูนิกซ์หลายรุ่นบนRosetta Stone สำหรับ Unixโดยเฉพาะอย่างยิ่งบรรทัด“ list hardware configuration” และ“ read a disk label”


11
Ooo; เว็บไซต์ Rosetta Stone นั้นยอดเยี่ยม
Michael Mrozek

146

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

$ lsblk -io 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

lsblk มีอยู่ในแพ็กเกจ util-linux และมีความเป็นสากลมากกว่าทางเลือกที่เสนอ


9
หากคุณจำเป็นต้องใช้เพียงดิสก์ทางกายภาพการใช้งานlsblk -d, -dหมายความว่าข้อความพึ่งพาไม่มีการระบุไว้
coanor

2
อันที่จริง =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(ส่วนหนึ่งutil-linuxซึ่งเป็นส่วนหนึ่งของbaseArch) ให้ข้อมูลที่ร้องขอทันทีและไม่จำเป็นต้องรูท โปรดทราบว่าจะให้รุ่นอุปกรณ์ไม่รุ่นครอบครัว smarctl -i /dev/<device>ได้รับคำแนะนำจาก Skippy ทำเช่น: "โมเดลครอบครัว: Seagate Barracuda 7200.12" (หายไปจาก lsblk -ido: "ดิสก์ 465,8G ST3500418AS")
tuk0z

68

เกี่ยวกับ

lshw -class disk

3
ไม่เลว ... ฉันจะตรวจสอบอีกครั้งเมื่อฉันออกฉันแน่ใจว่ามันใช้งานได้ ... โชคไม่ดีที่มัน ( lshw) ไม่ได้ติดตั้งบนเซิร์ฟเวอร์และฉันสงสัยว่าคำตอบจะเป็นเพราะเราไม่ได้ติดตั้ง
xenoterracide

ด้วยเหตุผลบางอย่าง lshw ไม่ได้แสดงรายการฮาร์ดดิสก์
André van Schoubroeck

2
เมื่อไม่ได้รันในฐานะรูทจะไม่มีรายการดิสก์ แต่ยังไม่มีข้อผิดพลาด
Volker Siegel

1
bash: lshw: ไม่พบคำสั่ง
แอนทอน

26

hwinfo ช่วย:

> hwinfo --disk
21: IDE 00.0: 10600 Disk                                        
[Created at block.245]
Unique ID: 3OOL.8MZXfAWnuH8
Parent ID: w7Y8.1T_0outZkp6
SysFS ID: /class/block/sda
SysFS BusID: 0:0:0:0
SysFS Device Link: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
Hardware Class: disk
Model: "Hitachi HTS54322"
Vendor: "Hitachi"
Device: "HTS54322"
Revision: "ESBO"
Driver: "ahci", "sd"
Driver Modules: "ahci"
Device File: /dev/sda
Device Files: /dev/sda, /dev/disk/by-id/ata-Hitachi_HTS543225A7A384_E2021342GEPG4J, /dev/disk/by-id/scsi-SATA_Hitachi_HTS5432_E2021342GEPG4J, /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0, /dev/disk/by-id/wwn-0x5000cca614c6395e
Device Number: block 8:0-8:15
BIOS id: 0x80
Geometry (BIOS EDD): CHS 484521/16/63
Size (BIOS EDD): 488397168 sectors
Geometry (BIOS Legacy): CHS 1023/255/63
Drive status: no medium
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #17 (SATA controller)
> hwinfo --block --short
disk:                                                           
  /dev/sda             Hitachi HTS54322
partition:
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda3            Partition
  /dev/sda4            Partition
  /dev/sda5            Partition

19

@Giles บอกว่านี่ขึ้นอยู่กับแพลตฟอร์มเป็นอย่างมาก นี่คือตัวอย่างหนึ่ง

ฉันใช้ระบบ CentOS 5.5 ระบบนี้มีดิสก์ 4 ตัวและคอนโทรลเลอร์ 3ware RAID

ในกรณีของฉันlshw -class disk, cat /proc/scsi/scsiและparted --listแสดงให้เห็นถึงควบคุม RAID (3ware 9650SE-4LP) นี่ไม่แสดงดิสก์ที่แท้จริง:

แสดงคอนโทรลเลอร์ 3ware RAID เท่านั้นซึ่งมีไดรฟ์ข้อมูล / dev / sda:

# lshw -class disk
  *-disk                  
       description: SCSI Disk
       product: 9650SE-4LP DISK
       vendor: AMCC
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda

# cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: AMCC     Model: 9650SE-4LP DISK  Rev: 4.06
  Type:   Direct-Access                    ANSI SCSI revision: 05

# parted --list

Model: AMCC 9650SE-4LP DISK (scsi)
Disk /dev/sda: 2000GB

เพื่อที่จะดูดิสก์ที่อยู่ข้างใต้ฉันต้องติดตั้งยูทิลิตี้ tw_cli จาก 3ware และถามตัวควบคุม

# tw_cli info c0
...

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   931.51 GB SATA  0   -            WDC WD1002FBYS-02A6 
p1    OK             u0   931.51 GB SATA  1   -            WDC WD1002FBYS-02A6 

13

เนื่องจากทั้งสอง " ฉันสามารถมองเห็นสิ่งที่ HDD ผมได้ติดตั้ง? " และ " ฉันจะตรวจสอบให้และรูปแบบของอุปกรณ์จัดเก็บข้อมูลของฉันได้อย่างไร " มีการทำเครื่องหมายว่าซ้ำกับคำถามนี้ฉันประหลาดใจที่ไม่มีใครกล่าวถึงและhdparm smartctlเมื่อดูที่เครื่องบางเครื่องดูเหมือนว่าทั้งสองเครื่อง (เมื่อไม่ใช่ทั้งสองเครื่อง) มักจะพบว่าติดตั้งแล้วในการแจกแจงแบบมาตรฐาน (แม้กระทั่งเก่า) ลินุกซ์

# smartctl -i /dev/sda
smartctl 6.1 2013-03-16 r3800 [i686-linux-3.9.9-301.fc19.i686.PAE] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MK..56GSY
Device Model:     TOSHIBA MK1656GSY
Serial Number:    60PKT43CT
LU WWN Device Id: 5 000039 2919874b6
Firmware Version: LH013D
User Capacity:    160 041 885 696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Jul 22 11:13:37 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

# hdparm -i /dev/sda

/dev/sda:

 Model=TOSHIBA MK1656GSY, FwRev=LH013D, SerialNo=60PKT43CT
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=312581808
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode

ตามปกติให้ตรวจสอบ manpage เพื่อดูตัวเลือกเพิ่มเติม


ควรสังเกตว่าsmartctlวิธีการทำงานบน Cygwin, +1! เพียงวนลูปมากกว่าชื่ออุปกรณ์ที่เป็นไปได้และดูว่าsmartctlผลตอบแทนที่ไดรฟ์รองรับสมาร์ท
Adrian Frühwirth

12

ฉันกำลังใช้งาน fedora 14 และlshwไม่สามารถใช้ได้ที่นี่ (อย่างน้อยก็ไม่ใช่ตามค่าเริ่มต้น) อย่างไรก็ตามในกรณีของฉันฉันใช้fdisk -lคำสั่ง (ในฐานะผู้ใช้รูท) เพื่อรับเอาต์พุตต่อไปนี้:

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006a697

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/dm-0: 6509 MB, 6509559808 bytes
255 heads, 63 sectors/track, 791 cylinders, total 12713984 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 1543 MB, 1543503872 bytes
255 heads, 63 sectors/track, 187 cylinders, total 3014656 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-1 doesn't contain a valid partition table

ใช้fdisk -l /dev/sd?หรือfdisk -l /dev/hd?เพื่อหลีกเลี่ยงการนำอุปกรณ์ DM
laebshade

5

ฉันพบในคำตอบอื่น ๆ SE , inxiเครื่องมือกับความสะดวกสบายมาก:

inxi -Dxx
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX

3

คำสั่งจำนวนมากที่แสดงรายการไว้จะช่วยให้คุณค้นหาดิสก์ที่ระบบรู้จักเมื่อบูต ด้วยไดรฟ์ที่ทันสมัยคุณอาจพบว่าตัวเองกำลังมองหาสิ่งที่คุณใส่ในขณะที่เครื่องกำลังทำงานอยู่ (ฉันทำ) ฉันชอบคำแนะนำจากhttp://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

ลองใช้วิธีนี้เพื่อสแกนโฮสต์ SCSI อีกครั้ง (แต่ละพอร์ต SATA ปรากฏเป็นบัส SCSI):

echo "0 0 0"> / sys / class / scsi_host / host / scan

... จากนั้นคุณสามารถใช้ยูทิลิตี Linux ของคุณเช่น fdisk เพื่อแสดงข้อมูลเกี่ยวกับดิสก์ที่พบ


3
sfdisk -l  

จะให้ข้อมูลรายละเอียดเกี่ยวกับฮาร์ดแวร์ / ดิสก์ทางกายภาพแม้ว่าจะไม่ได้ติดตั้งก็ตาม

โปรแกรมได้รับการติดตั้งไว้ล่วงหน้าใน Linux รุ่นต่างๆที่ฉันใช้ แต่คุณต้องเป็น root เพื่อใช้งาน



1

sudo gparted จะแสดงทั้งหมดนี้ใน GUI

(คุณไม่ได้ระบุว่าคุณต้องทำภายในเทอร์มินัลดังนั้นฉันจึงสงสัยว่าทำไมโซลูชันนี้จึงขาดหายไป)


-1

ในการส่งคืนจำนวนอุปกรณ์บล็อกโดยไม่มีเครื่องมือแฟนซีหรือไวยากรณ์หรือพารามิเตอร์ที่ไม่ชัดเจน:

 ls /sys/block/* | grep block | grep sd | wc -l

ในกรณีทดสอบ47ในพื้นที่ของฉันบนเครื่องจักรสงครามที่ใหญ่ที่สุดและ1บนแล็ปท็อป


2
ค่านี้ลดลง 500% สำหรับหนึ่งในระบบของฉัน (Ubuntu 12.04) และอีก 200% สำหรับระบบอื่น
Anthon

-1

IMHO, lsblk เป็นคำสั่งที่ใช้กันอย่างแพร่หลายมากที่สุดในโลก Linux (ทำงานได้แม้ในพอร์ตเช่น Raspbian) ฉันไม่ได้ตั้งใจจะรุกรานใคร แต่มีบางคำสั่งที่ต้องการให้คุณรู้ชื่ออุปกรณ์เพื่อค้นหาอย่างชัดเจน ตัวอย่างเช่นคุณควรตระหนักถึงการมีอยู่ของ sdc เพื่อเรียกใช้ smartctl ที่กล่าวว่า lsblk ไม่เป็นสากล - ใช่ใน Solaris แต่ไม่ใช่ hpux ขอบคุณ


2
นอกเหนือจากการกล่าวถึงซึ่งlsblkมีอยู่ใน Solaris แล้วสิ่งนี้จะไม่เพิ่มข้อมูลใด ๆ นอกเหนือจากคำตอบที่ได้รับการโหวตสองอันดับแรก นี่จะเป็นการโพสต์ที่ดีขึ้นเป็นความคิดเห็นที่unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.