Làm thế nào để tôi tìm ra những đĩa cứng trong hệ thống?


223

Tôi cần biết những đĩa cứng nào có sẵn, bao gồm cả những đĩa không được gắn và có thể không được định dạng. Tôi không thể tìm thấy chúng trong dmesghoặc /var/log/messages(quá nhiều để cuộn qua). Tôi hy vọng có một cách để sử dụng /devhoặc /proctìm hiểu thông tin này, nhưng tôi không biết làm thế nào. Tôi đang sử dụng Linux.


Câu hỏi ban đầu không chỉ định bất kỳ biến thể unix cụ thể nào và quản lý phần cứng rõ ràng phụ thuộc nhiều vào biến thể.
Gilles

@gilles yeah Tôi đã ở nơi làm việc khi tôi viết nó, vì vậy tôi đã làm rõ sau khi tôi về nhà và nghĩ về nó.
xenoterracide

1
Tùy thuộc vào những gì bạn đang làm, udisks .
derobert

2
Tôi tìm thấy một trang hữu ích mô tả nhiều lệnh phần cứng phổ biến với tìm kiếm trên Google. Các ổ đĩa bao gồm lshw(Phần cứng danh sách), hwinfo(Thông tin phần cứng), lsscsi(Danh sách thiết bị scsi), lsusb(Danh sách xe buýt / thiết bị usb), lsblk(Thiết bị chặn danh sách) fdisk -lmount. Thêm thông tin tại binarytides.com/linux-commands-hardware-info .
Edward

Câu trả lời:


182

Điều này phụ thuộc nhiều vào nền tảng. Ngoài ra các phương pháp khác nhau có thể xử lý các trường hợp cạnh khác nhau (các đĩa giả của các loại khác nhau, khối lượng RAID, loại).

Trên các bản cài đặt udev hiện đại, có các liên kết tượng trưng đến phương tiện lưu trữ trong các thư mục con của nó /dev/disk, cho phép bạn tra cứu đĩa hoặc phân vùng theo số sê-ri ( /dev/disk/by-id/), bởi UUID ( /dev/disk/by-uuid), bằng nhãn hệ thống tệp ( /dev/disk/by-label/) hoặc bằng kết nối phần cứng ( /dev/disk/by-path/).

Trong Linux 2.6, mỗi đĩa và thiết bị giống như đĩa có một mục nhập /sys/block. Trong Linux kể từ buổi bình minh của thời gian, các đĩa và phân vùng được liệt kê trong /proc/partitions. Ngoài ra, bạn có thể sử dụng lshw : lshw -class disk.

Linux cũng cung cấp lsblktiện ích hiển thị chế độ xem dạng cây đẹp của khối lượng lưu trữ (kể từ produc-linux 2.19, không có trên các thiết bị nhúng với BusyBox).

Nếu bạn có một tiện ích fdiskhoặc disklabeltiện ích, nó có thể cho bạn biết thiết bị nào có thể hoạt động.

Bạn sẽ tìm thấy tên tiện ích cho nhiều biến thể unix trên Rosetta Stone cho Unix , đặc biệt là cấu hình phần cứng trong danh sách của chế độ cứng và các dòng đọc nhãn đĩa.


11
Ôi; rằng trang Rosetta Stone rất tuyệt vời
Michael Mrozek

146

lsblksẽ liệt kê tất cả các thiết bị khối. Nó cho vay chính nó để kịch bản:

$ 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 có mặt trong gói linux-linux và do đó phổ quát hơn nhiều so với các lựa chọn thay thế được đề xuất.


9
Nếu bạn chỉ cần các đĩa vật lý, sử dụng lsblk -d, -dcó nghĩa là không có thông báo phụ thuộc được liệt kê.
coanor

2
Thật vậy =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(một phần trong util-linuxđó là một phần của baseArch) ngay lập tức cung cấp thông tin được yêu cầu và không cần phải root. Lưu ý rằng nó cung cấp mô hình Thiết bị , không phải Mô hình gia đình . smarctl -i /dev/<device>được Skippy khuyên, đã làm điều đó, ví dụ: "Gia đình kiểu mẫu: Seagate Barracuda 7200.12" (thiếu từ lsblk -ido: "đĩa 465,8G ST3500418AS").
tuk0z

68

Làm thế nào về

lshw -class disk

3
không tệ ... tôi sẽ kiểm tra lại khi tôi xuống, tôi chắc chắn nó hoạt động ... tiếc là nó ( lshw) không được cài đặt trên máy chủ và tôi nghi ngờ câu trả lời sẽ là chúng tôi không cài đặt nó.
xenoterracide

Vì một số lý do, lshw không liệt kê các đĩa cứng.
André van Schoubroeck

2
Khi không chạy bằng root, nó liệt kê không có đĩa, nhưng cũng không có lỗi.
Volker Siegel

1
bash: lshw: lệnh không tìm thấy
Antoine

26

hwinfo giúp:

> 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 nói rằng điều này phụ thuộc nhiều vào nền tảng. Đây là một ví dụ như vậy.

Tôi đang chạy hệ thống CentOS 5.5. Hệ thống này có 4 đĩa và bộ điều khiển RAID 3ware.

Trong trường hợp của tôi lshw -class disk, cat /proc/scsi/scsiparted --listhiển thị bộ điều khiển RAID (3ware 9650SE-4LP). Điều này không hiển thị các đĩa thực tế:

chỉ hiển thị bộ điều khiển RAID 3ware cung cấp âm lượng / 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

Để xem các đĩa nằm bên dưới, tôi đã phải cài đặt tiện ích tw_cli từ 3ware và hỏi chính bộ điều khiển.

# 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

Vì cả " Tôi có thể xem ổ cứng nào tôi đã cài đặt không? " Và " Làm cách nào để xác định kiểu dáng & kiểu dáng của thiết bị lưu trữ của tôi? " Được đánh dấu là bản sao của câu hỏi này, tôi ngạc nhiên không ai nhắc đến hdparmsmartctl. Nhìn vào một vài máy, có vẻ như một trong số chúng (khi không phải cả hai) thường được tìm thấy đã được cài đặt trong các bản phân phối linux tiêu chuẩn (thậm chí cũ).

# 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

Như thường lệ, kiểm tra manpage để có thêm tùy chọn.


Cần lưu ý rằng smartctlcách thậm chí hoạt động trên Cygwin, +1! Chỉ cần lặp qua tên thiết bị có thể và xem nếu smartctltrả về ổ đĩa có hỗ trợ SMART không.
Adrian Frühwirth

12

Tôi đang chạy fedora 14 và lshwkhông có sẵn ở đây (ít nhất là không theo mặc định). Tuy nhiên, trong trường hợp của tôi, tôi đã sử dụng fdisk -llệnh (với tư cách là người dùng root) để có được đầu ra sau:

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

Sử dụng fdisk -l /dev/sd?hoặc fdisk -l /dev/hd?để tránh mang các thiết bị dm.
laebshade

5

Tôi tìm thấy trong câu trả lời SE khác , inxicông cụ như rất thuận tiện:

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

Nhiều lệnh được liệt kê sẽ giúp bạn tìm kiếm các đĩa đã được hệ thống nhận ra khi khởi động. Với các ổ đĩa hiện đại, bạn có thể thấy mình đang tìm kiếm thứ gì đó mà bạn đã chèn trong khi máy đang hoạt động (tôi đã làm). Tôi thích lời khuyên từ http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Hãy thử điều này để quét lại các máy chủ SCSI (mỗi cổng SATA xuất hiện dưới dạng bus SCSI):

tiếng vang "0 0 0"> / sys / class / scsi_host / host / scan

... Sau đó, bạn có thể sử dụng các tiện ích Linux của mình như fdisk để hiển thị cho bạn thông tin về các đĩa được tìm thấy.


3
sfdisk -l  

sẽ cung cấp cho bạn thông tin chi tiết về đĩa cứng / vật lý ngay cả khi chúng không được gắn.

chương trình được cài đặt sẵn trên tất cả các biến thể Linux mà tôi đã sử dụng, nhưng bạn phải root để sử dụng nó.


2

Điều này làm việc cho tôi:

fdisk -l 2>/dev/null | grep "Disk \/" | grep -v "\/dev\/md" | awk '{print $2}' | sed -e 's/://g'

1

sudo gparted sẽ hiển thị tất cả điều này trong GUI.

(Bạn không chỉ định bạn cần thực hiện trong một thiết bị đầu cuối nên tôi tự hỏi tại sao giải pháp này bị thiếu.)


-1

Để trả về số lượng thiết bị khối , không có các công cụ ưa thích cũng như các tham số hoặc cú pháp tối nghĩa:

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

Trong các trường hợp thử nghiệm cục bộ của tôi, 47trên cỗ máy chiến tranh lớn nhất của tôi và 1trên máy tính xách tay của tôi.


2
Điều này giảm 500% trên một trong các hệ thống của tôi (Ubuntu 12.04) và 200% trên một hệ thống khác.
Anthon

-1

IMHO, lsblk là lệnh có sẵn rộng rãi nhất trong thế giới Linux (hoạt động ngay cả trên các cổng như Raspbian). Tôi không có ý xúc phạm bất cứ ai, nhưng có một số lệnh cần bạn biết rõ tên thiết bị để tra cứu. Ví dụ, bạn nên biết về sự tồn tại của sdc để chạy smartctl. Điều đó nói rằng, lsblk không phải là phổ quát - có trên Solaris, nhưng không phải hpux. Cảm ơn.


2
Ngoài việc đề cập đến lsblkcũng có sẵn trên Solaris, điều này không thêm bất kỳ thông tin nào ngoài hai câu trả lời được bình chọn hàng đầu. Điều này sẽ được đăng tốt hơn như là một bình luận cho unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.